1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#!/bin/bash
2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectif [ $# -ne 2 ]
4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectthen
5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project echo "Usage: $0 alias \"pass phrase\""
6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project exit -1
7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectfi
8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Generate a 2048 bit RSA key with public exponent 3.
10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Encrypt private key with provided password.
11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectopenssl genrsa -3 -out $1.pem -passout pass:"$2" 2048
12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Create a self-signed cert for this key.
14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectopenssl req -new -x509 -key $1.pem -passin pass:"$2" \
15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        -out $1-cert.pem \
16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        -batch -days 10000
17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Create a PKCS12 store containing the generated private key.
19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Protect the keystore and the private key with the provided password.
20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectopenssl pkcs12 -export -in $1-cert.pem -inkey $1.pem -passin pass:"$2" \
21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        -out $1.p12 -name $1 -passout pass:"$2"
22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectrm $1.pem
24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectrm $1-cert.pem
25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
26