ozone: Handle pressure and tilt for stylus devices
[chromium-blink-merge.git] / net / data / ssl / scripts / generate-redundant-test-chains.sh
blobd7fd17bdc860f5b24b16f9e143237a8f79f9dc82
1 #!/bin/sh
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
7 # This script generates two chains of test certificates:
9 # 1. A (end-entity) -> B -> C -> D (self-signed root)
10 # 2. A (end-entity) -> B -> C2 (self-signed root)
12 # in which A, B, C, and D have distinct keypairs. C2 is a self-signed root
13 # certificate that uses the same keypair as C.
15 # We use these cert chains in
16 # SSLClientSocketTest.VerifyReturnChainProperlyOrdered to ensure that
17 # SSLInfo objects see the certificate chain as validated rather than as
18 # served by the server. The server serves chain 1. The client has C2, NOT D,
19 # installed as a trusted root. Therefore, the chain will validate as chain
20 # 2, even though the server served chain 1.
22 try () {
23 echo "$@"
24 "$@" || exit 1
27 try rm -rf out
28 try mkdir out
30 echo Create the serial number files.
31 serial=1000
32 for i in B C C2 D
34 try /bin/sh -c "echo $serial > out/$i-serial"
35 serial=$(expr $serial + 1)
36 done
38 echo Generate the keys.
39 try openssl genrsa -out out/A.key 2048
40 try openssl genrsa -out out/B.key 2048
41 try openssl genrsa -out out/C.key 2048
42 try openssl genrsa -out out/D.key 2048
44 echo Generate the D CSR.
45 CA_COMMON_NAME="D Root CA" \
46 CERTIFICATE=D \
47 try openssl req \
48 -new \
49 -key out/D.key \
50 -out out/D.csr \
51 -config redundant-ca.cnf
53 echo D signs itself.
54 CA_COMMON_NAME="D Root CA" \
55 try openssl x509 \
56 -req -days 3650 \
57 -in out/D.csr \
58 -extensions ca_cert \
59 -extfile redundant-ca.cnf \
60 -signkey out/D.key \
61 -out out/D.pem \
62 -text
64 echo Generate the C2 root CSR.
65 CA_COMMON_NAME="C CA" \
66 CERTIFICATE=C2 \
67 try openssl req \
68 -new \
69 -key out/C.key \
70 -out out/C2.csr \
71 -config redundant-ca.cnf
73 echo C2 signs itself.
74 CA_COMMON_NAME="C CA" \
75 try openssl x509 \
76 -req -days 3650 \
77 -in out/C2.csr \
78 -extensions ca_cert \
79 -extfile redundant-ca.cnf \
80 -signkey out/C.key \
81 -out out/C2.pem \
82 -text
84 echo Generate the B and C intermediaries\' CSRs.
85 for i in B C
87 name="$i Intermediate CA"
88 CA_COMMON_NAME="$i CA" \
89 CERTIFICATE=$i \
90 try openssl req \
91 -new \
92 -key out/$i.key \
93 -out out/$i.csr \
94 -config redundant-ca.cnf
95 done
97 echo D signs the C intermediate.
98 # Make sure the signer's DB file exists.
99 touch out/D-index.txt
100 CA_COMMON_NAME="D Root CA" \
101 CERTIFICATE=D \
102 try openssl ca \
103 -batch \
104 -extensions ca_cert \
105 -in out/C.csr \
106 -out out/C.pem \
107 -config redundant-ca.cnf
109 echo C signs the B intermediate.
110 touch out/C-index.txt
111 CA_COMMON_NAME="C CA" \
112 CERTIFICATE=C \
113 try openssl ca \
114 -batch \
115 -extensions ca_cert \
116 -in out/B.csr \
117 -out out/B.pem \
118 -config redundant-ca.cnf
120 echo Generate the A end-entity CSR.
121 try openssl req \
122 -new \
123 -key out/A.key \
124 -out out/A.csr \
125 -config ee.cnf
127 echo B signs A.
128 touch out/B-index.txt
129 CA_COMMON_NAME="B CA" \
130 CERTIFICATE=B \
131 try openssl ca \
132 -batch \
133 -extensions user_cert \
134 -in out/A.csr \
135 -out out/A.pem \
136 -config redundant-ca.cnf
138 echo Create redundant-server-chain.pem
139 try /bin/sh -c "cat out/A.key out/A.pem out/B.pem out/C.pem out/D.pem \
140 > ../certificates/redundant-server-chain.pem"
142 echo Create redundant-validated-chain.pem
143 try /bin/sh -c "cat out/A.key out/A.pem out/B.pem out/C2.pem \
144 > ../certificates/redundant-validated-chain.pem"
146 echo Create redundant-validated-chain-root.pem
147 try cp out/C2.pem ../certificates/redundant-validated-chain-root.pem