xref: /aosp_15_r20/external/cronet/net/data/ssl/scripts/generate-key-usage-certs.sh (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker#!/bin/sh
2*6777b538SAndroid Build Coastguard Worker
3*6777b538SAndroid Build Coastguard Worker# Copyright 2018 The Chromium Authors
4*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
5*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Workertry () {
8*6777b538SAndroid Build Coastguard Worker  echo "$@"
9*6777b538SAndroid Build Coastguard Worker  "$@" || exit 1
10*6777b538SAndroid Build Coastguard Worker}
11*6777b538SAndroid Build Coastguard Worker
12*6777b538SAndroid Build Coastguard Workertry rm -rf out
13*6777b538SAndroid Build Coastguard Workertry mkdir out
14*6777b538SAndroid Build Coastguard Worker
15*6777b538SAndroid Build Coastguard Workertry openssl genrsa -out out/key_usage_rsa_raw.key 2048
16*6777b538SAndroid Build Coastguard Workertry openssl ecparam -genkey -name prime256v1 -noout \
17*6777b538SAndroid Build Coastguard Worker    -out out/key_usage_p256_raw.key
18*6777b538SAndroid Build Coastguard Worker
19*6777b538SAndroid Build Coastguard Worker# Convert the private keys to PKCS#8 format.
20*6777b538SAndroid Build Coastguard Workertry openssl pkcs8 -topk8 -nocrypt -in out/key_usage_rsa_raw.key \
21*6777b538SAndroid Build Coastguard Worker    -out out/key_usage_rsa.key
22*6777b538SAndroid Build Coastguard Workertry openssl pkcs8 -topk8 -nocrypt -in out/key_usage_p256_raw.key \
23*6777b538SAndroid Build Coastguard Worker    -out out/key_usage_p256.key
24*6777b538SAndroid Build Coastguard Worker
25*6777b538SAndroid Build Coastguard Workercerts=" \
26*6777b538SAndroid Build Coastguard Worker  rsa_no_extension \
27*6777b538SAndroid Build Coastguard Worker  rsa_keyencipherment \
28*6777b538SAndroid Build Coastguard Worker  rsa_digitalsignature \
29*6777b538SAndroid Build Coastguard Worker  rsa_both \
30*6777b538SAndroid Build Coastguard Worker  p256_no_extension \
31*6777b538SAndroid Build Coastguard Worker  p256_keyagreement \
32*6777b538SAndroid Build Coastguard Worker  p256_digitalsignature \
33*6777b538SAndroid Build Coastguard Worker  p256_both"
34*6777b538SAndroid Build Coastguard Workerfor cert in $certs; do
35*6777b538SAndroid Build Coastguard Worker  key=${cert%%_*}
36*6777b538SAndroid Build Coastguard Worker  SUBJECT_NAME="subj_${cert}" \
37*6777b538SAndroid Build Coastguard Worker    try openssl req \
38*6777b538SAndroid Build Coastguard Worker    -new \
39*6777b538SAndroid Build Coastguard Worker    -key "out/key_usage_${key}.key" \
40*6777b538SAndroid Build Coastguard Worker    -out "out/key_usage_${cert}.csr" \
41*6777b538SAndroid Build Coastguard Worker    -config ee.cnf
42*6777b538SAndroid Build Coastguard Worker  try openssl x509 \
43*6777b538SAndroid Build Coastguard Worker    -req \
44*6777b538SAndroid Build Coastguard Worker    -in "out/key_usage_${cert}.csr" \
45*6777b538SAndroid Build Coastguard Worker    -signkey "out/key_usage_${key}.key" \
46*6777b538SAndroid Build Coastguard Worker    -days 3650 \
47*6777b538SAndroid Build Coastguard Worker    -extfile ee.cnf \
48*6777b538SAndroid Build Coastguard Worker    -extensions "ext_${cert}" \
49*6777b538SAndroid Build Coastguard Worker    -out "out/key_usage_${cert}.pem" \
50*6777b538SAndroid Build Coastguard Worker    -text
51*6777b538SAndroid Build Coastguard Worker
52*6777b538SAndroid Build Coastguard Worker  try /bin/sh -c "cat out/key_usage_${key}.key out/key_usage_${cert}.pem \
53*6777b538SAndroid Build Coastguard Worker      > ../certificates/key_usage_${cert}.pem"
54*6777b538SAndroid Build Coastguard Workerdone
55*6777b538SAndroid Build Coastguard Worker
56*6777b538SAndroid Build Coastguard Workertry cp "out/key_usage_rsa.key" ../certificates
57*6777b538SAndroid Build Coastguard Workertry cp "out/key_usage_p256.key" ../certificates
58