Annotation of embedaddon/strongswan/testing/scripts/build-certs-chroot, revision 1.1

1.1     ! misho       1: #!/bin/bash
        !             2: 
        !             3: set -o errexit
        !             4: 
        !             5: echo "Building certificates"
        !             6: 
        !             7: # Disable leak detective when using pki as it produces warnings in tzset
        !             8: export LEAK_DETECTIVE_DISABLE=1
        !             9: 
        !            10: # Determine testing directory
        !            11: DIR="$(dirname `readlink -f $0`)/.."
        !            12: 
        !            13: # Define some global variables
        !            14: PROJECT="strongSwan Project"
        !            15: CA_DIR="${DIR}/hosts/winnetou/etc/ca"
        !            16: CA_KEY="${CA_DIR}/strongswanKey.pem"
        !            17: CA_CERT="${CA_DIR}/strongswanCert.pem"
        !            18: CA_CERT_DER="${CA_DIR}/strongswanCert.der"
        !            19: CA_CRL="${CA_DIR}/strongswan.crl"
        !            20: CA_LAST_CRL="${CA_DIR}/strongswan_last.crl"
        !            21: CA_CDP="http://crl.strongswan.org/strongswan.crl"
        !            22: CA_BASE_CDP="http://crl.strongswan.org/strongswan_base.crl"
        !            23: CA_OCSP="http://ocsp.strongswan.org:8880"
        !            24: #
        !            25: START=`date  -d "-2 day"    "+%d.%m.%y %T"`
        !            26: SH_END=`date -d "-1 day"    "+%d.%m.%y %T"`    #  1 day
        !            27: CA_END=`date -d "+3651 day" "+%d.%m.%y %T"`    # 10 years
        !            28: IM_END=`date -d "+3286 day" "+%d.%m.%y %T"`    #  9 years
        !            29: EE_END=`date -d "+2920 day" "+%d.%m.%y %T"`    #  8 years
        !            30: SH_EXP=`date -d "-1 day"    "+%y%m%d%H%M%SZ"`  #  1 day
        !            31: IM_EXP=`date -d "+3286 day" "+%y%m%d%H%M%SZ"`  #  9 years
        !            32: EE_EXP=`date -d "+2920 day" "+%y%m%d%H%M%SZ"`  #  8 years
        !            33: NOW=`date "+%y%m%d%H%M%SZ"`
        !            34: #
        !            35: RESEARCH_DIR="${CA_DIR}/research"
        !            36: RESEARCH_KEY="${RESEARCH_DIR}/researchKey.pem"
        !            37: RESEARCH_CERT="${RESEARCH_DIR}/researchCert.pem"
        !            38: RESEARCH_CERT_DER="${RESEARCH_DIR}/researchCert.der"
        !            39: RESEARCH_CDP="http://crl.strongswan.org/research.crl"
        !            40: #
        !            41: SALES_DIR="${CA_DIR}/sales"
        !            42: SALES_KEY="${SALES_DIR}/salesKey.pem"
        !            43: SALES_CERT="${SALES_DIR}/salesCert.pem"
        !            44: SALES_CERT_DER="${SALES_DIR}/salesCert.der"
        !            45: SALES_CDP="http://crl.strongswan.org/sales.crl"
        !            46: #
        !            47: DUCK_DIR="${CA_DIR}/duck"
        !            48: DUCK_KEY="${DUCK_DIR}/duckKey.pem"
        !            49: DUCK_CERT="${DUCK_DIR}/duckCert.pem"
        !            50: #
        !            51: ECDSA_DIR="${CA_DIR}/ecdsa"
        !            52: ECDSA_KEY="${ECDSA_DIR}/strongswanKey.pem"
        !            53: ECDSA_CERT="${ECDSA_DIR}/strongswanCert.pem"
        !            54: ECDSA_CDP="http://crl.strongswan.org/strongswan_ecdsa.crl"
        !            55: #
        !            56: RFC3779_DIR="${CA_DIR}/rfc3779"
        !            57: RFC3779_KEY="${RFC3779_DIR}/strongswanKey.pem"
        !            58: RFC3779_CERT="${RFC3779_DIR}/strongswanCert.pem"
        !            59: RFC3779_CDP="http://crl.strongswan.org/strongswan_rfc3779.crl"
        !            60: #
        !            61: SHA3_RSA_DIR="${CA_DIR}/sha3-rsa"
        !            62: SHA3_RSA_KEY="${SHA3_RSA_DIR}/strongswanKey.pem"
        !            63: SHA3_RSA_CERT="${SHA3_RSA_DIR}/strongswanCert.pem"
        !            64: SHA3_RSA_CDP="http://crl.strongswan.org/strongswan_sha3_rsa.crl"
        !            65: #
        !            66: ED25519_DIR="${CA_DIR}/ed25519"
        !            67: ED25519_KEY="${ED25519_DIR}/strongswanKey.pem"
        !            68: ED25519_CERT="${ED25519_DIR}/strongswanCert.pem"
        !            69: ED25519_CDP="http://crl.strongswan.org/strongswan_ed25519.crl"
        !            70: #
        !            71: MONSTER_DIR="${CA_DIR}/monster"
        !            72: MONSTER_KEY="${MONSTER_DIR}/strongswanKey.pem"
        !            73: MONSTER_CERT="${MONSTER_DIR}/strongswanCert.pem"
        !            74: MONSTER_CDP="http://crl.strongswan.org/strongswan_monster.crl"
        !            75: MONSTER_CA_RSA_SIZE="8192"
        !            76: MONSTER_EE_RSA_SIZE="4096"
        !            77: #
        !            78: BLISS_DIR="${CA_DIR}/bliss"
        !            79: BLISS_KEY="${BLISS_DIR}/strongswan_blissKey.der"
        !            80: BLISS_CERT="${BLISS_DIR}/strongswan_blissCert.der"
        !            81: BLISS_CDP="http://crl.strongswan.org/strongswan_bliss.crl"
        !            82: #
        !            83: RSA_SIZE="3072"
        !            84: IPSEC_DIR="etc/ipsec.d"
        !            85: SWANCTL_DIR="etc/swanctl"
        !            86: TKM_DIR="etc/tkm"
        !            87: HOSTS="carol dave moon sun alice venus bob"
        !            88: TEST_DIR="${DIR}/tests"
        !            89: 
        !            90: # Create directories
        !            91: mkdir -p ${CA_DIR}/certs
        !            92: mkdir -p ${CA_DIR}/keys
        !            93: mkdir -p ${RESEARCH_DIR}/certs
        !            94: mkdir -p ${RESEARCH_DIR}/keys
        !            95: mkdir -p ${SALES_DIR}/certs
        !            96: mkdir -p ${SALES_DIR}/keys
        !            97: mkdir -p ${DUCK_DIR}/certs
        !            98: mkdir -p ${ECDSA_DIR}/certs
        !            99: mkdir -p ${RFC3779_DIR}/certs
        !           100: mkdir -p ${SHA3_RSA_DIR}/certs
        !           101: mkdir -p ${ED25519_DIR}/certs
        !           102: mkdir -p ${MONSTER_DIR}/certs
        !           103: mkdir -p ${BLISS_DIR}/certs
        !           104: 
        !           105: ################################################################################
        !           106: # strongSwan Root CA                                                           #
        !           107: ################################################################################
        !           108: 
        !           109: # Generate strongSwan Root CA
        !           110: pki --gen  --type rsa --size ${RSA_SIZE} --outform pem > ${CA_KEY}
        !           111: pki --self --type rsa --in ${CA_KEY} --not-before "${START}" --not-after "${CA_END}" \
        !           112:     --ca --pathlen 1 --dn "C=CH, O=${PROJECT}, CN=strongSwan Root CA" \
        !           113:     --outform pem > ${CA_CERT}
        !           114: 
        !           115: # Distribute strongSwan Root CA certificate
        !           116: for h in ${HOSTS}
        !           117: do
        !           118:   HOST_DIR="${DIR}/hosts/${h}"
        !           119:   mkdir -p ${HOST_DIR}/${IPSEC_DIR}/cacerts
        !           120:   mkdir -p ${HOST_DIR}/${SWANCTL_DIR}/x509ca
        !           121:   cp ${CA_CERT} ${HOST_DIR}/${IPSEC_DIR}/cacerts
        !           122:   cp ${CA_CERT} ${HOST_DIR}/${SWANCTL_DIR}/x509ca
        !           123: done
        !           124: 
        !           125: # Put a copy onto the alice FreeRADIUS server
        !           126: mkdir -p ${DIR}/hosts/alice/etc/raddb/certs
        !           127: cp ${CA_CERT} ${DIR}/hosts/alice/etc/raddb/certs
        !           128: 
        !           129: # Convert strongSwan Root CA certificate into DER format
        !           130: openssl x509 -in ${CA_CERT} -outform der -out ${CA_CERT_DER}
        !           131: 
        !           132: # Generate a stale CRL
        !           133: pki --signcrl --cakey ${CA_KEY} --cacert ${CA_CERT} \
        !           134:     --this-update "${START}" --lifetime 1 > ${CA_LAST_CRL}
        !           135: 
        !           136: # Put a CRL copy into the ikev2/crl-ldap scenario to be used as a stale crl
        !           137: TEST="${TEST_DIR}/ikev2/crl-ldap"
        !           138: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/crls
        !           139: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/crls
        !           140: cp ${CA_LAST_CRL} ${TEST}/hosts/carol/${IPSEC_DIR}/crls/stale.crl
        !           141: cp ${CA_LAST_CRL} ${TEST}/hosts/moon/${IPSEC_DIR}/crls/stale.crl
        !           142: 
        !           143: # Generate host keys
        !           144: for h in ${HOSTS}
        !           145: do
        !           146:   HOST_DIR="${DIR}/hosts/${h}"
        !           147:   HOST_KEY="${HOST_DIR}/${IPSEC_DIR}/private/${h}Key.pem"
        !           148:   mkdir -p ${HOST_DIR}/${IPSEC_DIR}/private
        !           149:   pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${HOST_KEY}
        !           150: 
        !           151:   # Put a copy into swanctl directory tree
        !           152:   mkdir -p ${HOST_DIR}/${SWANCTL_DIR}/rsa
        !           153:   cp ${HOST_KEY} ${HOST_DIR}/${SWANCTL_DIR}/rsa
        !           154: 
        !           155:   # Convert host key into DER format
        !           156:   openssl rsa -in ${HOST_KEY} -outform der -out ${CA_DIR}/keys/${h}Key.der \
        !           157:           2> /dev/null
        !           158: done
        !           159: 
        !           160: # Put DER-encoded moon private key and Root CA certificate into tkm scenarios
        !           161: for t in host2host-initiator host2host-responder host2host-xfrmproxy \
        !           162:          net2net-initiator net2net-xfrmproxy xfrmproxy-expire xfrmproxy-rekey
        !           163: do
        !           164:   TEST="${TEST_DIR}/tkm/${t}"
        !           165:   mkdir -p ${TEST}/hosts/moon/${TKM_DIR}
        !           166:   cp ${CA_DIR}/keys/moonKey.der ${CA_CERT_DER} ${TEST}/hosts/moon/${TKM_DIR}
        !           167: done
        !           168: 
        !           169: # Put DER_encoded sun private key and Root CA certificate into tkm scenarios
        !           170: TEST="${TEST_DIR}/tkm/multiple-clients"
        !           171: mkdir -p ${TEST}/hosts/sun/${TKM_DIR}
        !           172: cp ${CA_DIR}/keys/sunKey.der ${CA_CERT_DER} ${TEST}/hosts/sun/${TKM_DIR}
        !           173: 
        !           174: # Convert moon private key into unencrypted PKCS#8 format
        !           175: TEST="${TEST_DIR}/ikev2/rw-pkcs8"
        !           176: HOST_KEY="${DIR}/hosts/moon/${SWANCTL_DIR}/rsa/moonKey.pem"
        !           177: TEST_KEY="${TEST}/hosts/moon/${IPSEC_DIR}/private/moonKey.pem"
        !           178: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !           179: openssl pkcs8 -in ${HOST_KEY} -nocrypt -topk8 -out ${TEST_KEY}
        !           180: 
        !           181: # Convert carol private key into v1.5 DES encrypted PKCS#8 format
        !           182: HOST_KEY="${DIR}/hosts/carol/${SWANCTL_DIR}/rsa/carolKey.pem"
        !           183: TEST_KEY="${TEST}/hosts/carol/${IPSEC_DIR}/private/carolKey.pem"
        !           184: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           185: openssl pkcs8 -in ${HOST_KEY} -nocrypt -topk8 -v1 PBE-MD5-DES \
        !           186:               -passout "pass:nH5ZQEWtku0RJEZ6" -out ${TEST_KEY}
        !           187: 
        !           188: # Convert dave private key into v2.0 AES-128 encrypted PKCS#8 format
        !           189: HOST_KEY="${DIR}/hosts/dave/${SWANCTL_DIR}/rsa/daveKey.pem"
        !           190: TEST_KEY="${TEST}/hosts/dave/${IPSEC_DIR}/private/daveKey.pem"
        !           191: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !           192: openssl pkcs8 -in ${HOST_KEY} -nocrypt -topk8  -v2 aes128 \
        !           193:               -passout "pass:OJlNZBx+80dLh4wC6fw5LmBd" -out ${TEST_KEY}
        !           194: 
        !           195: ################################################################################
        !           196: # Public Key Extraction                                                        #
        !           197: ################################################################################
        !           198: 
        !           199: # Extract the raw moon public key for the swanctl/net2net-pubkey scenario
        !           200: TEST="${TEST_DIR}/swanctl/net2net-pubkey"
        !           201: TEST_PUB="${TEST}/hosts/moon/${SWANCTL_DIR}/pubkey/moonPub.pem"
        !           202: HOST_KEY="${DIR}/hosts/moon/${SWANCTL_DIR}/rsa/moonKey.pem"
        !           203: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/pubkey
        !           204: mkdir -p ${TEST}/hosts/sun/${SWANCTL_DIR}/pubkey
        !           205: pki --pub --type rsa --in ${HOST_KEY} --outform pem > ${TEST_PUB}
        !           206: cp ${TEST_PUB} ${TEST}/hosts/sun/${SWANCTL_DIR}/pubkey
        !           207: 
        !           208: # Put a copy into the  following ikev2 scenarios
        !           209: for t in net2net-dnssec net2net-pubkey rw-dnssec
        !           210: do
        !           211:   TEST="${TEST_DIR}/ikev2/${t}"
        !           212:   mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/certs
        !           213:   cp ${TEST_PUB} ${TEST}/hosts/moon/${IPSEC_DIR}/certs
        !           214: done
        !           215: 
        !           216: # Put a copy into the ikev2/net2net-pubkey scenario
        !           217: TEST="${TEST_DIR}/ikev2/net2net-pubkey"
        !           218: mkdir -p ${TEST}/hosts/sun/${IPSEC_DIR}/certs
        !           219: cp ${TEST_PUB} ${TEST}/hosts/sun/${IPSEC_DIR}/certs
        !           220: 
        !           221: # Put a copy into the swanctl/rw-dnssec scenario
        !           222: TEST="${TEST_DIR}/swanctl/rw-dnssec"
        !           223: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/pubkey
        !           224: cp ${TEST_PUB} ${TEST}/hosts/moon/${SWANCTL_DIR}/pubkey
        !           225: 
        !           226: # Put a copy into the following swanctl scenarios
        !           227: for t in rw-pubkey-anon rw-pubkey-keyid
        !           228: do
        !           229:   TEST="${TEST_DIR}/swanctl/${t}"
        !           230:   for h in moon carol dave
        !           231:   do
        !           232:     mkdir -p ${TEST}/hosts/${h}/${SWANCTL_DIR}/pubkey
        !           233:     cp ${TEST_PUB} ${TEST}/hosts/${h}/${SWANCTL_DIR}/pubkey
        !           234:   done
        !           235: done
        !           236: 
        !           237: # Extract the raw sun public key for the swanctl/net2net-pubkey scenario
        !           238: TEST="${TEST_DIR}/swanctl/net2net-pubkey"
        !           239: TEST_PUB="${TEST}/hosts/sun/${SWANCTL_DIR}/pubkey/sunPub.pem"
        !           240: HOST_KEY="${DIR}/hosts/sun/${SWANCTL_DIR}/rsa/sunKey.pem"
        !           241: pki --pub --type rsa --in ${HOST_KEY} --outform pem > ${TEST_PUB}
        !           242: cp ${TEST_PUB} ${TEST}/hosts/moon/${SWANCTL_DIR}/pubkey
        !           243: 
        !           244: # Put a copy into the ikev2/net2net-dnssec scenario
        !           245: TEST="${TEST_DIR}/ikev2/net2net-dnssec"
        !           246: mkdir -p ${TEST}/hosts/sun/${IPSEC_DIR}/certs
        !           247: cp ${TEST_PUB} ${TEST}/hosts/sun/${IPSEC_DIR}/certs
        !           248: 
        !           249: # Put a copy into the ikev2/net2net-pubkey scenario
        !           250: TEST="${TEST_DIR}/ikev2/net2net-pubkey"
        !           251: cp ${TEST_PUB} ${TEST}/hosts/moon/${IPSEC_DIR}/certs
        !           252: cp ${TEST_PUB} ${TEST}/hosts/sun/${IPSEC_DIR}/certs
        !           253: 
        !           254: # Put a copy into the swanctl/rw-pubkey-anon scenario
        !           255: TEST="${TEST_DIR}/swanctl/rw-pubkey-anon"
        !           256: cp ${TEST_PUB} ${TEST}/hosts/moon/${SWANCTL_DIR}/pubkey
        !           257: 
        !           258: # Extract the raw carol public key for the swanctl/rw-dnssec scenario
        !           259: TEST="${TEST_DIR}/swanctl/rw-dnssec"
        !           260: TEST_PUB="${TEST}/hosts/carol/${SWANCTL_DIR}/pubkey/carolPub.pem"
        !           261: HOST_KEY="${DIR}/hosts/carol/${SWANCTL_DIR}/rsa/carolKey.pem"
        !           262: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/pubkey
        !           263: pki --pub --type rsa --in ${HOST_KEY} --outform pem > ${TEST_PUB}
        !           264: 
        !           265: # Put a copy into the swanctl/rw-pubkey-anon scenario
        !           266: TEST="${TEST_DIR}/swanctl/rw-pubkey-anon"
        !           267: cp ${TEST_PUB} ${TEST}/hosts/carol/${SWANCTL_DIR}/pubkey
        !           268: cp ${TEST_PUB} ${TEST}/hosts/moon/${SWANCTL_DIR}/pubkey
        !           269: 
        !           270: # Put a copy into the swanctl/rw-pubkey-keyid scenario
        !           271: TEST="${TEST_DIR}/swanctl/rw-pubkey-keyid"
        !           272: cp ${TEST_PUB} ${TEST}/hosts/carol/${SWANCTL_DIR}/pubkey
        !           273: cp ${TEST_PUB} ${TEST}/hosts/moon/${SWANCTL_DIR}/pubkey
        !           274: 
        !           275: # Extract the raw dave public key for the swanctl/rw-dnssec scenario
        !           276: TEST="${TEST_DIR}/swanctl/rw-dnssec"
        !           277: TEST_PUB="${TEST}/hosts/dave/${SWANCTL_DIR}/pubkey/davePub.pem"
        !           278: HOST_KEY="${DIR}/hosts/dave/${SWANCTL_DIR}/rsa/daveKey.pem"
        !           279: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/pubkey
        !           280: pki --pub --type rsa --in ${HOST_KEY} --outform pem > ${TEST_PUB}
        !           281: 
        !           282: # Put a copy into the swanctl/rw-pubkey-anon scenario
        !           283: TEST="${TEST_DIR}/swanctl/rw-pubkey-anon"
        !           284: cp ${TEST_PUB} ${TEST}/hosts/dave/${SWANCTL_DIR}/pubkey
        !           285: cp ${TEST_PUB} ${TEST}/hosts/moon/${SWANCTL_DIR}/pubkey
        !           286: 
        !           287: # Put a copy into the swanctl/rw-pubkey-keyid scenario
        !           288: TEST="${TEST_DIR}/swanctl/rw-pubkey-keyid"
        !           289: cp ${TEST_PUB} ${TEST}/hosts/dave/${SWANCTL_DIR}/pubkey
        !           290: cp ${TEST_PUB} ${TEST}/hosts/moon/${SWANCTL_DIR}/pubkey
        !           291: 
        !           292: ################################################################################
        !           293: # Host Certificate Generation                                                  #
        !           294: ################################################################################
        !           295: 
        !           296: # function issue_cert: serial host cn [ou]
        !           297: issue_cert()
        !           298: {
        !           299:   # does optional OU argument exist?
        !           300:   if [ -z "${4}" ]
        !           301:   then
        !           302:     OU=""
        !           303:   else
        !           304:     OU=" OU=${4},"
        !           305:   fi
        !           306: 
        !           307:   HOST_DIR="${DIR}/hosts/${2}"
        !           308:   HOST_KEY="${HOST_DIR}/${IPSEC_DIR}/private/${2}Key.pem"
        !           309:   HOST_CERT="${HOST_DIR}/${IPSEC_DIR}/certs/${2}Cert.pem"
        !           310:   mkdir -p ${HOST_DIR}/${IPSEC_DIR}/certs
        !           311:   pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           312:       --in ${HOST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${3} \
        !           313:       --serial ${1} --dn "C=CH, O=${PROJECT},${OU} CN=${3}" \
        !           314:       --outform pem > ${HOST_CERT}
        !           315:   cp ${HOST_CERT} ${CA_DIR}/certs/${1}.pem
        !           316: 
        !           317:   # Put a certificate copy into swanctl directory tree
        !           318:   mkdir -p ${HOST_DIR}/${SWANCTL_DIR}/x509
        !           319:   cp ${HOST_CERT} ${HOST_DIR}/${SWANCTL_DIR}/x509
        !           320: }
        !           321: 
        !           322: # Generate host certificates
        !           323: issue_cert 01 carol carol@strongswan.org Research
        !           324: issue_cert 02 dave dave@strongswan.org Accounting
        !           325: issue_cert 03 moon moon.strongswan.org
        !           326: issue_cert 04 sun sun.strongswan.org
        !           327: issue_cert 05 alice alice@strongswan.org Sales
        !           328: issue_cert 06 venus venus.strongswan.org
        !           329: issue_cert 07 bob bob@strongswan.org Research
        !           330: 
        !           331: # Create PKCS#12 file for moon
        !           332: TEST="${TEST_DIR}/ikev2/net2net-pkcs12"
        !           333: HOST_KEY="${DIR}/hosts/moon/${SWANCTL_DIR}/rsa/moonKey.pem"
        !           334: HOST_CERT="${DIR}/hosts/moon/${SWANCTL_DIR}/x509/moonCert.pem"
        !           335: MOON_PKCS12="${TEST}/hosts/moon/${IPSEC_DIR}/private/moonCert.p12"
        !           336: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !           337: openssl pkcs12 -export -inkey ${HOST_KEY} -in ${HOST_CERT} -name "moon" \
        !           338:         -certfile ${CA_CERT} -caname "strongSwan Root CA" \
        !           339:         -aes128 -passout "pass:kUqd8O7mzbjXNJKQ" > ${MOON_PKCS12} 2> /dev/null
        !           340: 
        !           341: # Create PKCS#12 file for sun
        !           342: HOST_KEY="${DIR}/hosts/sun/${SWANCTL_DIR}/rsa/sunKey.pem"
        !           343: HOST_CERT="${DIR}/hosts/sun/${SWANCTL_DIR}/x509/sunCert.pem"
        !           344: SUN_PKCS12="${TEST}/hosts/sun/${IPSEC_DIR}/private/sunCert.p12"
        !           345: mkdir -p ${TEST}/hosts/sun/${IPSEC_DIR}/private
        !           346: openssl pkcs12 -export -inkey ${HOST_KEY} -in ${HOST_CERT} -name "sun" \
        !           347:         -certfile ${CA_CERT} -caname "strongSwan Root CA" \
        !           348:         -aes128 -passout "pass:IxjQVCF3JGI+MoPi" > ${SUN_PKCS12} 2> /dev/null
        !           349: 
        !           350: # Put a PKCS#12 copy into the botan/net2net-pkcs12 scenario
        !           351: for t in botan/net2net-pkcs12 openssl-ikev2/net2net-pkcs12
        !           352: do
        !           353:   TEST="${TEST_DIR}/${t}"
        !           354:   mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/pkcs12
        !           355:   mkdir -p ${TEST}/hosts/sun/${SWANCTL_DIR}/pkcs12
        !           356:   cp ${MOON_PKCS12} ${TEST}/hosts/moon/${SWANCTL_DIR}/pkcs12
        !           357:   cp ${SUN_PKCS12}  ${TEST}/hosts/sun/${SWANCTL_DIR}/pkcs12
        !           358: done
        !           359: 
        !           360: ################################################################################
        !           361: # DNSSEC Zone Files                                                            #
        !           362: ################################################################################
        !           363: 
        !           364: # Store moon and sun certificates in strongswan.org zone
        !           365: ZONE_FILE="${CA_DIR}/db.strongswan.org.certs-and-keys"
        !           366: echo "; Automatically generated for inclusion in zone file" > ${ZONE_FILE}
        !           367: for h in moon sun
        !           368: do
        !           369:   HOST_CERT=${DIR}/hosts/${h}/${SWANCTL_DIR}/x509/${h}Cert.pem
        !           370:   cert=$(grep --invert-match ^----- ${HOST_CERT}| sed -e 's/^/\t\t\t\t/')
        !           371:   echo -e "${h}\tIN\tCERT\t( 1 0 0\n${cert}\n\t\t\t\t)" >> ${ZONE_FILE}
        !           372: done
        !           373: 
        !           374: # Store public keys in strongswan.org zone
        !           375: echo ";" >> ${ZONE_FILE}
        !           376: for h in moon sun carol dave
        !           377: do
        !           378:   HOST_CERT=${DIR}/hosts/${h}/${SWANCTL_DIR}/x509/${h}Cert.pem
        !           379:   pubkey=$(pki --pub --type x509 --in ${HOST_CERT} --outform dnskey | sed 's/\(.\{0,64\}\)/\t\t\t\t\1\n/g')
        !           380:   echo -e "${h}\tIN\tIPSECKEY\t( 10 3 2 ${h}.strongswan.org.\n${pubkey}\n\t\t\t\t)" >> ${ZONE_FILE}
        !           381: done
        !           382: 
        !           383: # Generate a carol certificate for the swanctl/crl-to-cache scenario with base CDP
        !           384: TEST="${TEST_DIR}/swanctl/crl-to-cache"
        !           385: TEST_CERT="${TEST}/hosts/carol/${SWANCTL_DIR}/x509/carolCert.pem"
        !           386: HOST_KEY="${DIR}/hosts/carol/${SWANCTL_DIR}/rsa/carolKey.pem"
        !           387: CN="carol@strongswan.org"
        !           388: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !           389: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_BASE_CDP} --type rsa \
        !           390:     --in ${HOST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           391:     --serial 01 --dn "C=CH, O=${PROJECT}, OU=Research, CN=${CN}" \
        !           392:     --outform pem > ${TEST_CERT}
        !           393: 
        !           394: # Generate a moon certificate for the swanctl/crl-to-cache scenario with base CDP
        !           395: TEST_CERT="${TEST}/hosts/moon/${SWANCTL_DIR}/x509/moonCert.pem"
        !           396: HOST_KEY="${DIR}/hosts/moon/${SWANCTL_DIR}/rsa/moonKey.pem"
        !           397: CN="moon.strongswan.org"
        !           398: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !           399: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_BASE_CDP} --type rsa \
        !           400:     --in ${HOST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           401:     --serial 03 --dn "C=CH, O=${PROJECT}, CN=${CN}" \
        !           402:     --outform pem > ${TEST_CERT}
        !           403: 
        !           404: # Encrypt carolKey.pem
        !           405: HOST_KEY="${DIR}/hosts/carol/${IPSEC_DIR}/private/carolKey.pem"
        !           406: KEY_PWD="nH5ZQEWtku0RJEZ6"
        !           407: openssl rsa -in ${HOST_KEY} -aes128 --passout pass:${KEY_PWD} -out ${HOST_KEY} \
        !           408:         2> /dev/null
        !           409: 
        !           410: # Put a copy into the ikev2/dynamic-initiator scenario
        !           411: for t in ikev2/dynamic-initiator ikev1/dynamic-initiator ikev1/dynamic-responder
        !           412: do
        !           413:   TEST="${TEST_DIR}/${t}"
        !           414:   mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !           415:   mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/certs
        !           416:   cp ${HOST_KEY} ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !           417:   cp ${CA_DIR}/certs/01.pem ${TEST}/hosts/dave/${IPSEC_DIR}/certs/carolCert.pem
        !           418: done
        !           419: 
        !           420: # Put a copy into the swanctl/rw-cert scenario
        !           421: TEST="${TEST_DIR}/swanctl/rw-cert"
        !           422: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/rsa
        !           423: cp ${HOST_KEY} ${TEST}/hosts/carol/${SWANCTL_DIR}/rsa
        !           424: 
        !           425: # Generate another carol certificate and revoke it
        !           426: TEST="${TEST_DIR}/ikev2/crl-revoked"
        !           427: TEST_KEY="${TEST}/hosts/carol/${IPSEC_DIR}/private/carolKey.pem"
        !           428: TEST_CERT="${TEST}/hosts/carol/${IPSEC_DIR}/certs/carolCert.pem"
        !           429: CN="carol@strongswan.org"
        !           430: SERIAL="08"
        !           431: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           432: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           433: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           434: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           435:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           436:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Research, CN=${CN}" \
        !           437:     --outform pem > ${TEST_CERT}
        !           438: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           439: pki --signcrl --cakey ${CA_KEY} --cacert ${CA_CERT} --reason "key-compromise" \
        !           440:     --serial ${SERIAL} > ${CA_CRL}
        !           441: cp ${CA_CRL} ${CA_LAST_CRL}
        !           442: 
        !           443: # Put a copy into the ikev2/ocsp-revoked scenario
        !           444: TEST="${TEST_DIR}/ikev2/ocsp-revoked"
        !           445: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           446: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           447: cp ${TEST_KEY}  ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           448: cp ${TEST_CERT} ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           449: 
        !           450: # Generate another carol certificate with SN=002
        !           451: TEST="${TEST_DIR}/ikev2/two-certs"
        !           452: TEST_KEY="${TEST}/hosts/carol/${IPSEC_DIR}/private/carolKey-002.pem"
        !           453: TEST_CERT="${TEST}/hosts/carol/${IPSEC_DIR}/certs/carolCert-002.pem"
        !           454: SERIAL="09"
        !           455: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           456: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           457: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           458: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           459:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           460:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Research, SN=002, CN=${CN}" \
        !           461:     --outform pem > ${TEST_CERT}
        !           462: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           463: 
        !           464: ################################################################################
        !           465: # Research CA Certificate Generation                                           #
        !           466: ################################################################################
        !           467: 
        !           468: # Generate a Research CA certificate signed by the Root CA and revoke it
        !           469: TEST="${TEST_DIR}/ikev2/multi-level-ca-revoked"
        !           470: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/cacerts/researchCert.pem"
        !           471: SERIAL="0A"
        !           472: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts/
        !           473: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${RESEARCH_KEY}
        !           474: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           475:     --in ${RESEARCH_KEY} --not-before "${START}" --not-after "${IM_END}" --ca \
        !           476:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Research, CN=Research CA" \
        !           477:     --outform pem > ${TEST_CERT}
        !           478: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           479: pki --signcrl --cakey ${CA_KEY} --cacert ${CA_CERT} --reason "ca-compromise" \
        !           480:     --serial ${SERIAL} --lastcrl ${CA_LAST_CRL} > ${CA_CRL}
        !           481: rm ${CA_LAST_CRL}
        !           482: 
        !           483: # Generate Research CA with the same private key as above signed by Root CA
        !           484: SERIAL="0B"
        !           485: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           486:     --in ${RESEARCH_KEY} --not-before "${START}" --not-after "${IM_END}" --ca \
        !           487:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Research, CN=Research CA" \
        !           488:     --outform pem > ${RESEARCH_CERT}
        !           489: cp ${RESEARCH_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           490: 
        !           491: # Put a certificate copy into the following scenarios
        !           492: for t in ikev1/multi-level-ca ikev2/multi-level-ca ikev2/multi-level-ca-ldap \
        !           493:          ikev2/multi-level-ca-pathlen ikev2/multi-level-ca-strict \
        !           494:          ikev2/ocsp-multi-level ikev2/ocsp-strict-ifuri
        !           495: do
        !           496:   TEST="${TEST_DIR}/${t}"
        !           497:   mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !           498:   cp ${RESEARCH_CERT} ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !           499: done
        !           500: 
        !           501: for t in ikev1/multi-level-ca-cr-init ikev1/multi-level-ca-cr-resp \
        !           502:          ikev2/multi-level-ca-cr-init ikev2/multi-level-ca-cr-resp
        !           503: do
        !           504:   TEST="${TEST_DIR}/${t}"
        !           505:   mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/cacerts
        !           506:   cp ${RESEARCH_CERT} ${TEST}/hosts/carol/${IPSEC_DIR}/cacerts
        !           507: done
        !           508: 
        !           509: for t in multi-level-ca ocsp-multi-level
        !           510: do
        !           511:   TEST="${TEST_DIR}/swanctl/${t}"
        !           512:   mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509ca
        !           513:   cp ${RESEARCH_CERT} ${TEST}/hosts/moon/${SWANCTL_DIR}/x509ca
        !           514: done
        !           515: 
        !           516: for t in rw-hash-and-url-multi-level
        !           517: do
        !           518:   TEST="${TEST_DIR}/swanctl/${t}"
        !           519:   mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/x509ca
        !           520:   cp ${RESEARCH_CERT} ${TEST}/hosts/carol/${SWANCTL_DIR}/x509ca
        !           521: done
        !           522: 
        !           523: # Convert Research CA certificate into DER format
        !           524: openssl x509 -in ${RESEARCH_CERT} -outform der -out ${RESEARCH_CERT_DER}
        !           525: 
        !           526: # Generate Research CA with the same private key as above but invalid CDP
        !           527: TEST="${TEST_DIR}/ikev2/multi-level-ca-skipped"
        !           528: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/cacerts/researchCert.pem"
        !           529: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !           530: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --type rsa \
        !           531:     --crl "http://crl.strongswan.org/not-available.crl" \
        !           532:     --in ${RESEARCH_KEY} --not-before "${START}" --not-after "${IM_END}" --ca \
        !           533:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Research, CN=Research CA" \
        !           534:     --outform pem > ${TEST_CERT}
        !           535: 
        !           536: ################################################################################
        !           537: # Sales CA Certificate Generation                                              #
        !           538: ################################################################################
        !           539: 
        !           540: # Generate Sales CA signed by Root CA
        !           541: SERIAL="0C"
        !           542: pki --gen  --type rsa --size ${RSA_SIZE} --outform pem > ${SALES_KEY}
        !           543: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           544:     --in ${SALES_KEY} --not-before "${START}" --not-after "${IM_END}" --ca \
        !           545:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Sales, CN=Sales CA" \
        !           546:     --outform pem > ${SALES_CERT}
        !           547: cp ${SALES_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           548: 
        !           549: # Put a certificate copy into the following scenarios
        !           550: for t in ikev1/multi-level-ca ikev2/multi-level-ca ikev2/multi-level-ca-ldap \
        !           551:          ikev2/multi-level-ca-strict ikev2/ocsp-multi-level \
        !           552:          ikev2/ocsp-multi-level ikev2/ocsp-strict-ifuri
        !           553: do
        !           554:   TEST="${TEST_DIR}/${t}"
        !           555:   cp ${SALES_CERT} ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !           556: done
        !           557: 
        !           558: for t in ikev1/multi-level-ca-cr-init ikev1/multi-level-ca-cr-resp \
        !           559:          ikev2/multi-level-ca-cr-init ikev2/multi-level-ca-cr-resp
        !           560: do
        !           561:   TEST="${TEST_DIR}/${t}"
        !           562:   mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/cacerts
        !           563:   cp ${SALES_CERT} ${TEST}/hosts/dave/${IPSEC_DIR}/cacerts
        !           564: done
        !           565: 
        !           566: for t in multi-level-ca ocsp-multi-level
        !           567: do
        !           568:   TEST="${TEST_DIR}/swanctl/${t}"
        !           569:   cp ${SALES_CERT} ${TEST}/hosts/moon/${SWANCTL_DIR}/x509ca
        !           570: done
        !           571: 
        !           572: for t in rw-hash-and-url-multi-level
        !           573: do
        !           574:   TEST="${TEST_DIR}/swanctl/${t}"
        !           575:   mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/x509ca
        !           576:   cp ${SALES_CERT} ${TEST}/hosts/dave/${SWANCTL_DIR}/x509ca
        !           577: done
        !           578: 
        !           579: # Convert Sales CA certificate into DER format
        !           580: openssl x509 -in ${SALES_CERT} -outform der -out ${SALES_CERT_DER}
        !           581: 
        !           582: # Generate an AES-128 encrypted moon key and a SHA-224 hashed certificate
        !           583: TEST="${TEST_DIR}/ikev2/strong-keys-certs"
        !           584: TEST_KEY="${TEST}/hosts/moon/${IPSEC_DIR}/private/moonKey-aes128.pem"
        !           585: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/certs/moonCert-sha224.pem"
        !           586: KEY_PWD="gOQHdrSWeFuiZtYPetWuyzHW"
        !           587: CN="moon.strongswan.org"
        !           588: SERIAL="0D"
        !           589: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !           590: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/certs
        !           591: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           592: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           593:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           594:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=SHA-224, CN=${CN}" \
        !           595:     --digest sha224 --outform pem > ${TEST_CERT}
        !           596: openssl rsa -in ${TEST_KEY} -aes128 --passout pass:${KEY_PWD} -out ${TEST_KEY} \
        !           597:         2> /dev/null
        !           598: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           599: 
        !           600: # Generate an AES-192 encrypted carol key and a SHA-384 hashed certificate
        !           601: TEST_KEY="${TEST}/hosts/carol/${IPSEC_DIR}/private/carolKey-aes192.pem"
        !           602: TEST_CERT="${TEST}/hosts/carol/${IPSEC_DIR}/certs/carolCert-sha384.pem"
        !           603: KEY_PWD="ITP/H4lSHqGpUGmCpgNDklbzTNV+swjA"
        !           604: CN="carol@strongswan.org"
        !           605: SERIAL="0E"
        !           606: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           607: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           608: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           609: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           610:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           611:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=SHA-384, CN=${CN}" \
        !           612:     --digest sha384 --outform pem > ${TEST_CERT}
        !           613: openssl rsa -in ${TEST_KEY} -aes192 --passout pass:${KEY_PWD} -out ${TEST_KEY} \
        !           614:         2> /dev/null
        !           615: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           616: 
        !           617: # Generate an AES-256 encrypted dave key and a SHA-512 hashed certificate
        !           618: TEST_KEY="${TEST}/hosts/dave/${IPSEC_DIR}/private/daveKey-aes256.pem"
        !           619: TEST_CERT="${TEST}/hosts/dave/${IPSEC_DIR}/certs/daveCert-sha512.pem"
        !           620: KEY_PWD="MeFnDN7VUbj+qU/bkgRIFvbCketIk2wrrs5Ii8297N2v"
        !           621: CN="dave@strongswan.org"
        !           622: SERIAL="0F"
        !           623: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !           624: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/certs
        !           625: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           626: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           627:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           628:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=SHA-512, CN=${CN}" \
        !           629:     --digest sha512 --outform pem > ${TEST_CERT}
        !           630: openssl rsa -in ${TEST_KEY} -aes256 --passout pass:${KEY_PWD} -out ${TEST_KEY} \
        !           631:         2> /dev/null
        !           632: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           633: 
        !           634: # Generate another carol certificate with an OCSP URI
        !           635: TEST="${TEST_DIR}/ikev2/ocsp-signer-cert"
        !           636: TEST_KEY="${TEST}/hosts/carol/${IPSEC_DIR}/private/carolKey.pem"
        !           637: TEST_CERT="${TEST}/hosts/carol/${IPSEC_DIR}/certs/carolCert.pem"
        !           638: CN="carol@strongswan.org"
        !           639: SERIAL="10"
        !           640: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           641: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           642: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           643: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           644:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           645:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=OCSP, CN=${CN}" \
        !           646:     --ocsp ${CA_OCSP} --outform pem > ${TEST_CERT}
        !           647: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           648: 
        !           649: # Put a copy into the ikev2/ocsp-timeouts-good scenario
        !           650: TEST="${TEST_DIR}/ikev2/ocsp-timeouts-good"
        !           651: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           652: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           653: cp ${TEST_KEY}  ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           654: cp ${TEST_CERT} ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           655: 
        !           656: # Put a copy into the swanctl/ocsp-signer-cert scenario
        !           657: for t in ocsp-signer-cert ocsp-disabled
        !           658: do
        !           659:   cd "${TEST_DIR}/swanctl/${t}/hosts/carol/${SWANCTL_DIR}"
        !           660:   mkdir -p rsa x509
        !           661:   cp ${TEST_KEY} rsa
        !           662:   cp ${TEST_CERT} x509
        !           663: done
        !           664: 
        !           665: # Generate an OCSP Signing certificate for the strongSwan Root CA
        !           666: TEST_KEY="${CA_DIR}/ocspKey.pem"
        !           667: TEST_CERT="${CA_DIR}/ocspCert.pem"
        !           668: CN="ocsp.strongswan.org"
        !           669: OU="OCSP Signing Authority"
        !           670: SERIAL="11"
        !           671: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           672: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           673:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           674:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=${OU}, CN=${CN}" \
        !           675:     --flag ocspSigning --outform pem > ${TEST_CERT}
        !           676: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           677: 
        !           678: # Generate a self-signed OCSP Signing certificate
        !           679: TEST_KEY="${CA_DIR}/ocspKey-self.pem"
        !           680: TEST_CERT="${CA_DIR}/ocspCert-self.pem"
        !           681: OU="OCSP Self-Signed Authority"
        !           682: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           683: pki --self --type rsa --in ${TEST_KEY} --flag ocspSigning \
        !           684:     --not-before "${START}" --not-after "${CA_END}" --san ${CN} \
        !           685:     --dn "C=CH, O=${PROJECT}, OU=${OU}, CN=${CN}" \
        !           686:     --outform pem > ${TEST_CERT}
        !           687: 
        !           688: # Copy self-signed OCSP Signing certificate to ikev2/ocsp-local-cert scenario
        !           689: TEST="${TEST_DIR}/ikev2/ocsp-local-cert"
        !           690: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/ocspcerts
        !           691: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/ocspcerts
        !           692: cp ${TEST_CERT} ${TEST}/hosts/carol/${IPSEC_DIR}/ocspcerts
        !           693: cp ${TEST_CERT} ${TEST}/hosts/moon/${IPSEC_DIR}/ocspcerts
        !           694: 
        !           695: # Generate mars virtual server certificate
        !           696: TEST="${TEST_DIR}/ha/both-active"
        !           697: TEST_KEY="${TEST}/hosts/moon/${IPSEC_DIR}/private/marsKey.pem"
        !           698: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/certs/marsCert.pem"
        !           699: CN="mars.strongswan.org"
        !           700: OU="Virtual VPN Gateway"
        !           701: SERIAL="12"
        !           702: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !           703: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/certs
        !           704: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           705: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           706:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           707:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=${OU}, CN=${CN}" \
        !           708:     --flag serverAuth --outform pem > ${TEST_CERT}
        !           709: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           710: 
        !           711: # Put a copy into the mirrored gateway
        !           712: mkdir -p ${TEST}/hosts/alice/${IPSEC_DIR}/private
        !           713: mkdir -p ${TEST}/hosts/alice/${IPSEC_DIR}/certs
        !           714: cp ${TEST_KEY}  ${TEST}/hosts/alice/${IPSEC_DIR}/private
        !           715: cp ${TEST_CERT} ${TEST}/hosts/alice/${IPSEC_DIR}/certs
        !           716: 
        !           717: # Put a copy into the ha/active-passive and ikev2-redirect-active scenarios
        !           718: for t in "ha/active-passive" "ikev2/redirect-active"
        !           719: do
        !           720:   TEST="${TEST_DIR}/${t}"
        !           721:   for h in alice moon
        !           722:   do
        !           723:     mkdir -p ${TEST}/hosts/${h}/${IPSEC_DIR}/private
        !           724:     mkdir -p ${TEST}/hosts/${h}/${IPSEC_DIR}/certs
        !           725:     cp ${TEST_KEY}  ${TEST}/hosts/${h}/${IPSEC_DIR}/private
        !           726:     cp ${TEST_CERT} ${TEST}/hosts/${h}/${IPSEC_DIR}/certs
        !           727:   done
        !           728: done
        !           729: 
        !           730: # Generate moon certificate with an unsupported critical X.509 extension
        !           731: TEST="${TEST_DIR}/ikev2/critical-extension"
        !           732: TEST_KEY="${TEST}/hosts/moon/${IPSEC_DIR}/private/moonKey.pem"
        !           733: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/certs/moonCert.pem"
        !           734: CN="moon.strongswan.org"
        !           735: SERIAL="13"
        !           736: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !           737: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/certs
        !           738: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           739: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           740:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           741:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Critical Extension, CN=${CN}" \
        !           742:     --critical 1.3.6.1.4.1.36906.1 --flag serverAuth \
        !           743:     --outform pem > ${TEST_CERT}
        !           744: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           745: 
        !           746: # Put a copy in the openssl-ikev2/critical extension scenario
        !           747: TEST="${TEST_DIR}/openssl-ikev2/critical-extension"
        !           748: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/rsa
        !           749: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !           750: cp ${TEST_KEY} ${TEST}/hosts/moon/${SWANCTL_DIR}/rsa
        !           751: cp ${TEST_CERT} ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !           752: 
        !           753: # Generate sun certificate with an unsupported critical X.509 extension
        !           754: TEST="${TEST_DIR}/ikev2/critical-extension"
        !           755: TEST_KEY="${TEST}/hosts/sun/${IPSEC_DIR}/private/sunKey.pem"
        !           756: TEST_CERT="${TEST}/hosts/sun/${IPSEC_DIR}/certs/sunCert.pem"
        !           757: CN="sun.strongswan.org"
        !           758: SERIAL="14"
        !           759: mkdir -p ${TEST}/hosts/sun/${IPSEC_DIR}/private
        !           760: mkdir -p ${TEST}/hosts/sun/${IPSEC_DIR}/certs
        !           761: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           762: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           763:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           764:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Critical Extension, CN=${CN}" \
        !           765:     --critical 1.3.6.1.4.1.36906.1 --flag serverAuth \
        !           766:     --outform pem > ${TEST_CERT}
        !           767: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           768: 
        !           769: # Put a copy in the openssl-ikev2/critical extension scenario
        !           770: TEST="${TEST_DIR}/openssl-ikev2/critical-extension"
        !           771: mkdir -p ${TEST}/hosts/sun/${SWANCTL_DIR}/rsa
        !           772: mkdir -p ${TEST}/hosts/sun/${SWANCTL_DIR}/x509
        !           773: cp ${TEST_KEY} ${TEST}/hosts/sun/${SWANCTL_DIR}/rsa
        !           774: cp ${TEST_CERT} ${TEST}/hosts/sun/${SWANCTL_DIR}/x509
        !           775: 
        !           776: # Generate winnetou server certificate
        !           777: HOST_KEY="${CA_DIR}/winnetouKey.pem"
        !           778: HOST_CERT="${CA_DIR}/winnetouCert.pem"
        !           779: CN="winnetou.strongswan.org"
        !           780: SERIAL="15"
        !           781: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${HOST_KEY}
        !           782: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           783:     --in ${HOST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           784:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, CN=${CN}" \
        !           785:     --flag serverAuth --outform pem > ${HOST_CERT}
        !           786: cp ${HOST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           787: 
        !           788: # Generate AAA server certificate
        !           789: TEST="${TEST_DIR}/tnc/tnccs-20-pdp-eap"
        !           790: TEST_KEY="${TEST}/hosts/alice/${SWANCTL_DIR}/rsa/aaaKey.pem"
        !           791: TEST_CERT="${TEST}/hosts/alice/${SWANCTL_DIR}/x509/aaaCert.pem"
        !           792: CN="aaa.strongswan.org"
        !           793: SERIAL="16"
        !           794: cd "${TEST}/hosts/alice/${SWANCTL_DIR}"
        !           795: mkdir -p rsa x509
        !           796: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           797: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           798: --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           799:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, CN=${CN}" \
        !           800:     --flag serverAuth --outform pem > ${TEST_CERT}
        !           801: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           802: 
        !           803: # Put a copy into various tnc scenarios
        !           804: for t in tnccs-20-pdp-pt-tls tnccs-20-ev-pt-tls tnccs-20-hcd-eap
        !           805: do
        !           806:   cd "${TEST_DIR}/tnc/${t}/hosts/alice/${SWANCTL_DIR}"
        !           807:   mkdir -p rsa x509
        !           808:   cp ${TEST_KEY}  rsa
        !           809:   cp ${TEST_CERT} x509
        !           810: done
        !           811: 
        !           812: # Put a copy into the alice FreeRADIUS server
        !           813: cp ${TEST_KEY} ${TEST_CERT} ${DIR}/hosts/alice/etc/raddb/certs
        !           814: 
        !           815: ################################################################################
        !           816: # strongSwan Attribute Authority                                               #
        !           817: ################################################################################
        !           818: 
        !           819: # Generate Attribute Authority certificate
        !           820: TEST="${TEST_DIR}/ikev2/acert-cached"
        !           821: TEST_KEY="${TEST}/hosts/moon/${IPSEC_DIR}/private/aaKey.pem"
        !           822: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/aacerts/aaCert.pem"
        !           823: CN="strongSwan Attribute Authority"
        !           824: SERIAL="17"
        !           825: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !           826: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/aacerts
        !           827: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/acerts
        !           828: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           829: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           830:     --in ${TEST_KEY} --not-before "${START}" --not-after "${IM_END}" \
        !           831:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, CN=${CN}" \
        !           832:     --outform pem > ${TEST_CERT}
        !           833: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           834: 
        !           835: # Generate carol's attribute certificate for sales and finance
        !           836: ACERT="${TEST}/hosts/moon/${IPSEC_DIR}/acerts/carol-sales-finance.pem"
        !           837: pki --acert --issuerkey ${TEST_KEY} --issuercert ${TEST_CERT} \
        !           838:     --in ${CA_DIR}/certs/01.pem --group sales --group finance \
        !           839:     --not-before "${START}" --not-after "${EE_END}" --outform pem > ${ACERT}
        !           840: 
        !           841: # Generate dave's expired attribute certificate for sales
        !           842: ACERT="${TEST}/hosts/moon/${IPSEC_DIR}/acerts/dave-sales-expired.pem"
        !           843: pki --acert --issuerkey ${TEST_KEY} --issuercert ${TEST_CERT} \
        !           844:     --in ${CA_DIR}/certs/02.pem --group sales \
        !           845:     --not-before "${START}" --not-after "${SH_END}" --outform pem  > ${ACERT}
        !           846: 
        !           847: # Generate dave's attribute certificate for marketing
        !           848: ACERT_DM="${TEST}/hosts/moon/${IPSEC_DIR}/acerts/dave-marketing.pem"
        !           849: pki --acert --issuerkey ${TEST_KEY} --issuercert ${TEST_CERT} \
        !           850:     --in ${CA_DIR}/certs/02.pem --group marketing \
        !           851:     --not-before "${SH_END}" --not-after "${EE_END}" --outform pem > ${ACERT_DM}
        !           852: 
        !           853: # Put a copy into the ikev2/acert-fallback scenario
        !           854: TEST="${TEST_DIR}/ikev2/acert-fallback"
        !           855: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !           856: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/aacerts
        !           857: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/acerts
        !           858: cp ${TEST_KEY}  ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !           859: cp ${TEST_CERT} ${TEST}/hosts/moon/${IPSEC_DIR}/aacerts
        !           860: 
        !           861: # Generate carol's expired attribute certificate for finance
        !           862: ACERT=${TEST}/hosts/carol/${IPSEC_DIR}/acerts/carol-finance-expired.pem
        !           863: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/acerts
        !           864: pki --acert --issuerkey ${TEST_KEY} --issuercert ${TEST_CERT} \
        !           865:     --in ${CA_DIR}/certs/01.pem --group finance \
        !           866:     --not-before "${START}" --not-after "${SH_END}" --outform pem  > ${ACERT}
        !           867: 
        !           868: # Generate carol's valid attribute certificate for sales
        !           869: ACERT_CS=${TEST}/hosts/carol/${IPSEC_DIR}/acerts/carol-sales.pem
        !           870: pki --acert --issuerkey ${TEST_KEY} --issuercert ${TEST_CERT} \
        !           871:     --in ${CA_DIR}/certs/01.pem --group sales \
        !           872:     --not-before "${SH_END}" --not-after "${EE_END}" --outform pem > ${ACERT_CS}
        !           873: 
        !           874: # Put a copy into the ikev2/acert-inline scenario
        !           875: TEST="${TEST_DIR}/ikev2/acert-inline"
        !           876: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !           877: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/aacerts
        !           878: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/acerts
        !           879: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/acerts
        !           880: cp ${TEST_KEY}  ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !           881: cp ${TEST_CERT} ${TEST}/hosts/moon/${IPSEC_DIR}/aacerts
        !           882: cp ${ACERT_CS}  ${TEST}/hosts/carol/${IPSEC_DIR}/acerts
        !           883: cp ${ACERT_DM}  ${TEST}/hosts/dave/${IPSEC_DIR}/acerts
        !           884: 
        !           885: # Generate a short-lived Attribute Authority certificate
        !           886: CN="strongSwan Legacy AA"
        !           887: TEST_KEY="${TEST}/hosts/moon/${IPSEC_DIR}/private/aaKey-expired.pem"
        !           888: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/aacerts/aaCert-expired.pem"
        !           889: SERIAL="18"
        !           890: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           891: pki --issue --cakey ${CA_KEY} --cacert ${CA_CERT} --crl ${CA_CDP} --type rsa \
        !           892:     --in ${TEST_KEY} --not-before "${START}" --not-after "${SH_END}" \
        !           893:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, CN=${CN}" \
        !           894:     --outform pem > ${TEST_CERT}
        !           895: cp ${TEST_CERT} ${CA_DIR}/certs/${SERIAL}.pem
        !           896: 
        !           897: # Generate dave's attribute certificate for sales from expired AA
        !           898: ACERT=${TEST}/hosts/dave/${IPSEC_DIR}/acerts/dave-expired-aa.pem
        !           899: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/acerts
        !           900: pki --acert --issuerkey ${TEST_KEY} --issuercert ${TEST_CERT} \
        !           901:     --in ${CA_DIR}/certs/02.pem --group sales \
        !           902:     --not-before "${START}" --not-after "${EE_END}" --outform pem > ${ACERT}
        !           903: 
        !           904: ################################################################################
        !           905: # strongSwan Root CA index for OCSP server                                     #
        !           906: ################################################################################
        !           907: 
        !           908: # generate index.txt file for Root OCSP server
        !           909: cp ${CA_DIR}/index.txt.template ${CA_DIR}/index.txt
        !           910: sed -i -e "s/EE_EXPIRATION/${EE_EXP}/g" ${CA_DIR}/index.txt
        !           911: sed -i -e "s/IM_EXPIRATION/${IM_EXP}/g" ${CA_DIR}/index.txt
        !           912: sed -i -e "s/SH_EXPIRATION/${SH_EXP}/g" ${CA_DIR}/index.txt
        !           913: sed -i -e "s/REVOCATION/${NOW}/g" ${CA_DIR}/index.txt
        !           914: 
        !           915: ################################################################################
        !           916: # Research CA                                                                  #
        !           917: ################################################################################
        !           918: 
        !           919: # Generate a carol research certificate
        !           920: TEST="${TEST_DIR}/ikev2/multi-level-ca"
        !           921: TEST_KEY="${TEST}/hosts/carol/${IPSEC_DIR}/private/carolKey.pem"
        !           922: TEST_CERT="${TEST}/hosts/carol/${IPSEC_DIR}/certs/carolCert.pem"
        !           923: CN="carol@strongswan.org"
        !           924: SERIAL="01"
        !           925: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           926: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           927: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           928: pki --issue --cakey ${RESEARCH_KEY} --cacert ${RESEARCH_CERT} --type rsa \
        !           929:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           930:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Research, CN=${CN}" \
        !           931:     --crl ${RESEARCH_CDP} --outform pem > ${TEST_CERT}
        !           932: cp ${TEST_CERT} ${RESEARCH_DIR}/certs/${SERIAL}.pem
        !           933: 
        !           934: # Save a copy of the private key in DER format
        !           935: openssl rsa -in ${TEST_KEY} -outform der \
        !           936:             -out ${RESEARCH_DIR}/keys/${SERIAL}.der 2> /dev/null
        !           937: 
        !           938: # Put a copy in the following scenarios
        !           939: for t in ikev2/multi-level-ca-cr-init ikev2/multi-level-ca-cr-resp \
        !           940:          ikev2/multi-level-ca-ldap ikev2/multi-level-ca-loop \
        !           941:          ikev2/multi-level-ca-revoked ikev2/multi-level-ca-skipped \
        !           942:          ikev2/multi-level-ca-strict ikev2/ocsp-multi-level \
        !           943:          ikev1/multi-level-ca ikev1/multi-level-ca-cr-init \
        !           944:          ikev1/multi-level-ca-cr-resp
        !           945: do
        !           946:   TEST="${TEST_DIR}/${t}"
        !           947:   mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           948:   mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           949:   cp ${TEST_KEY} ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           950:   cp ${TEST_CERT} ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           951: done
        !           952: 
        !           953: for t in multi-level-ca rw-hash-and-url-multi-level ocsp-multi-level
        !           954: do
        !           955:   TEST="${TEST_DIR}/swanctl/${t}"
        !           956:   mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/rsa
        !           957:   mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !           958:   cp ${TEST_KEY} ${TEST}/hosts/carol/${SWANCTL_DIR}/rsa
        !           959:   cp ${TEST_CERT} ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !           960: done
        !           961: 
        !           962: # Generate a carol research certificate without a CDP
        !           963: TEST="${TEST_DIR}/ikev2/ocsp-strict-ifuri"
        !           964: TEST_CERT="${TEST}/hosts/carol/${IPSEC_DIR}/certs/carolCert.pem"
        !           965: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !           966: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           967: pki --issue --cakey ${RESEARCH_KEY} --cacert ${RESEARCH_CERT} --type rsa \
        !           968:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           969:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Research, CN=${CN}" \
        !           970:     --outform pem > ${TEST_CERT}
        !           971: cp ${TEST_KEY} ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !           972: 
        !           973: # Generate an OCSP Signing certificate for the Research CA
        !           974: TEST_KEY="${RESEARCH_DIR}/ocspKey.pem"
        !           975: TEST_CERT="${RESEARCH_DIR}/ocspCert.pem"
        !           976: OU="Research OCSP Signing Authority"
        !           977: CN="ocsp.research.strongswan.org"
        !           978: SERIAL="02"
        !           979: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !           980: pki --issue --cakey ${RESEARCH_KEY} --cacert ${RESEARCH_CERT} --type rsa \
        !           981:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !           982:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=${OU}, CN=${CN}" \
        !           983:     --crl ${RESEARCH_CDP} --flag ocspSigning --outform pem > ${TEST_CERT}
        !           984: cp ${TEST_CERT} ${RESEARCH_DIR}/certs/${SERIAL}.pem
        !           985: 
        !           986: # Generate a Sales CA certificate signed by the Research CA
        !           987: TEST="${TEST_DIR}/ikev2/multi-level-ca-loop"
        !           988: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/cacerts/sales_by_researchCert.pem"
        !           989: SERIAL="03"
        !           990: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !           991: pki --issue --cakey ${RESEARCH_KEY} --cacert ${RESEARCH_CERT} --type rsa \
        !           992:     --in ${SALES_KEY} --not-before "${START}" --not-after "${EE_END}" --ca \
        !           993:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Sales, CN=Sales CA" \
        !           994:     --crl ${RESEARCH_CDP} --outform pem > ${TEST_CERT}
        !           995: cp ${TEST_CERT} ${RESEARCH_DIR}/certs/${SERIAL}.pem
        !           996: 
        !           997: ################################################################################
        !           998: # Duck Research CA                                                                     #
        !           999: ################################################################################
        !          1000: 
        !          1001: # Generate a Duck Research CA certificate signed by the Research CA
        !          1002: SERIAL="04"
        !          1003: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${DUCK_KEY}
        !          1004: pki --issue --cakey ${RESEARCH_KEY} --cacert ${RESEARCH_CERT} --type rsa \
        !          1005:     --in ${DUCK_KEY} --not-before "${START}" --not-after "${EE_END}" --ca \
        !          1006:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Research, CN=Duck Research CA" \
        !          1007:     --crl ${RESEARCH_CDP} --outform pem > ${DUCK_CERT}
        !          1008: cp ${DUCK_CERT} ${RESEARCH_DIR}/certs/${SERIAL}.pem
        !          1009: 
        !          1010: # Put a certificate copy in the ikev2/multilevel-ca-pathlen scenario
        !          1011: TEST="${TEST_DIR}/ikev2/multi-level-ca-pathlen"
        !          1012: cp ${DUCK_CERT} ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !          1013: 
        !          1014: # Generate a carol certificate signed by the Duck Research CA
        !          1015: TEST_KEY="${TEST}/hosts/carol/${IPSEC_DIR}/private/carolKey.pem"
        !          1016: TEST_CERT="${TEST}/hosts/carol/${IPSEC_DIR}/certs/carolCert.pem"
        !          1017: CN="carol@strongswan.org"
        !          1018: SERIAL="01"
        !          1019: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !          1020: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !          1021: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1022: pki --issue --cakey ${DUCK_KEY} --cacert ${DUCK_CERT} --type rsa \
        !          1023:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1024:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Duck Research, CN=${CN}" \
        !          1025:     --outform pem > ${TEST_CERT}
        !          1026: cp ${TEST_CERT} ${DUCK_DIR}/certs/${SERIAL}.pem
        !          1027: 
        !          1028: # Generate index.txt file for Research OCSP server
        !          1029: cp ${RESEARCH_DIR}/index.txt.template ${RESEARCH_DIR}/index.txt
        !          1030: sed -i -e "s/EE_EXPIRATION/${EE_EXP}/g" ${RESEARCH_DIR}/index.txt
        !          1031: 
        !          1032: ################################################################################
        !          1033: # Sales CA                                                                     #
        !          1034: ################################################################################
        !          1035: 
        !          1036: # Generate a dave sales certificate
        !          1037: TEST="${TEST_DIR}/ikev2/multi-level-ca"
        !          1038: TEST_KEY="${TEST}/hosts/dave/${IPSEC_DIR}/private/daveKey.pem"
        !          1039: TEST_CERT="${TEST}/hosts/dave/${IPSEC_DIR}/certs/daveCert.pem"
        !          1040: CN="dave@strongswan.org"
        !          1041: SERIAL="01"
        !          1042: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !          1043: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/certs
        !          1044: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1045: pki --issue --cakey ${SALES_KEY} --cacert ${SALES_CERT} --type rsa \
        !          1046:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1047:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Sales, CN=${CN}" \
        !          1048:     --crl ${SALES_CDP} --outform pem > ${TEST_CERT}
        !          1049: cp ${TEST_CERT} ${SALES_DIR}/certs/${SERIAL}.pem
        !          1050: 
        !          1051: # Save a copy of the private key in DER format
        !          1052: openssl rsa -in ${TEST_KEY} -outform der \
        !          1053:             -out ${SALES_DIR}/keys/${SERIAL}.der 2> /dev/null
        !          1054: 
        !          1055: # Put a copy in the following scenarios
        !          1056: for t in ikev2/multi-level-ca-cr-init ikev2/multi-level-ca-cr-resp \
        !          1057:          ikev2/multi-level-ca-ldap ikev2/multi-level-ca-strict \
        !          1058:          ikev2/ocsp-multi-level ikev1/multi-level-ca \
        !          1059:          ikev1/multi-level-ca-cr-init ikev1/multi-level-ca-cr-resp
        !          1060: do
        !          1061:   TEST="${TEST_DIR}/${t}"
        !          1062:   mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !          1063:   mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/certs
        !          1064:   cp ${TEST_KEY} ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !          1065:   cp ${TEST_CERT} ${TEST}/hosts/dave/${IPSEC_DIR}/certs
        !          1066: done
        !          1067: 
        !          1068: for t in multi-level-ca rw-hash-and-url-multi-level ocsp-multi-level
        !          1069: do
        !          1070:   TEST="${TEST_DIR}/swanctl/${t}"
        !          1071:   mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/rsa
        !          1072:   mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/x509
        !          1073:   cp ${TEST_KEY} ${TEST}/hosts/dave/${SWANCTL_DIR}/rsa
        !          1074:   cp ${TEST_CERT} ${TEST}/hosts/dave/${SWANCTL_DIR}/x509
        !          1075: done
        !          1076: 
        !          1077: # Generate a dave sales certificate with an inactive OCSP URI and no CDP
        !          1078: TEST="${TEST_DIR}/ikev2/ocsp-strict-ifuri"
        !          1079: TEST_CERT="${TEST}/hosts/dave/${IPSEC_DIR}/certs/daveCert.pem"
        !          1080: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/certs
        !          1081: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !          1082: pki --issue --cakey ${SALES_KEY} --cacert ${SALES_CERT} --type rsa \
        !          1083:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1084:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Sales, CN=${CN}" \
        !          1085:     --ocsp "http://ocsp2.strongswan.org:8882" --outform pem > ${TEST_CERT}
        !          1086: cp ${TEST_KEY} ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !          1087: 
        !          1088: # Generate an OCSP Signing certificate for the Sales CA
        !          1089: TEST_KEY="${SALES_DIR}/ocspKey.pem"
        !          1090: TEST_CERT="${SALES_DIR}/ocspCert.pem"
        !          1091: OU="Sales OCSP Signing Authority"
        !          1092: CN="ocsp.sales.strongswan.org"
        !          1093: SERIAL="02"
        !          1094: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1095: pki --issue --cakey ${SALES_KEY} --cacert ${SALES_CERT} --type rsa \
        !          1096:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1097:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=${OU}, CN=${CN}" \
        !          1098:     --crl ${SALES_CDP} --flag ocspSigning --outform pem > ${TEST_CERT}
        !          1099: cp ${TEST_CERT} ${SALES_DIR}/certs/${SERIAL}.pem
        !          1100: 
        !          1101: # Generate a Research CA certificate signed by the Sales CA
        !          1102: TEST="${TEST_DIR}/ikev2/multi-level-ca-loop"
        !          1103: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/cacerts/research_by_salesCert.pem"
        !          1104: SERIAL="03"
        !          1105: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !          1106: pki --issue --cakey ${SALES_KEY} --cacert ${SALES_CERT} --type rsa \
        !          1107:     --in ${RESEARCH_KEY} --not-before "${START}" --not-after "${EE_END}" --ca \
        !          1108:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Research, CN=Research CA" \
        !          1109:     --crl ${SALES_CDP} --outform pem > ${TEST_CERT}
        !          1110: cp ${TEST_CERT} ${SALES_DIR}/certs/${SERIAL}.pem
        !          1111: 
        !          1112: # generate index.txt file for Sales OCSP server
        !          1113: cp ${SALES_DIR}/index.txt.template ${SALES_DIR}/index.txt
        !          1114: sed -i -e "s/EE_EXPIRATION/${EE_EXP}/g" ${SALES_DIR}/index.txt
        !          1115: 
        !          1116: ################################################################################
        !          1117: # strongSwan EC Root CA                                                        #
        !          1118: ################################################################################
        !          1119: 
        !          1120: # Generate strongSwan EC Root CA
        !          1121: pki --gen  --type ecdsa --size 521 --outform pem > ${ECDSA_KEY}
        !          1122: pki --self --type ecdsa --in ${ECDSA_KEY} \
        !          1123:     --not-before "${START}" --not-after "${CA_END}" --ca \
        !          1124:     --dn "C=CH, O=${PROJECT}, CN=strongSwan EC Root CA" \
        !          1125:     --outform pem > ${ECDSA_CERT}
        !          1126: 
        !          1127: # Put a copy in the openssl-ikev2/ecdsa-certs scenario
        !          1128: for t in ecdsa-certs ecdsa-pkcs8
        !          1129: do
        !          1130:   TEST="${TEST_DIR}/openssl-ikev2/${t}"
        !          1131:   for h in moon carol dave
        !          1132:   do
        !          1133:     mkdir -p ${TEST}/hosts/${h}/${SWANCTL_DIR}/x509ca
        !          1134:     cp ${ECDSA_CERT} ${TEST}/hosts/${h}/${SWANCTL_DIR}/x509ca
        !          1135:   done
        !          1136: done
        !          1137: 
        !          1138: # Generate a moon ECDSA 521 bit certificate
        !          1139: TEST="${TEST_DIR}/openssl-ikev2/ecdsa-certs"
        !          1140: MOON_KEY="${TEST}/hosts/moon/${SWANCTL_DIR}/ecdsa/moonKey.pem"
        !          1141: MOON_CERT="${TEST}/hosts/moon/${SWANCTL_DIR}/x509/moonCert.pem"
        !          1142: CN="moon.strongswan.org"
        !          1143: SERIAL="01"
        !          1144: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/ecdsa
        !          1145: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !          1146: pki --gen --type ecdsa --size 521 --outform pem > ${MOON_KEY}
        !          1147: pki --issue --cakey ${ECDSA_KEY} --cacert ${ECDSA_CERT} --type ecdsa \
        !          1148:     --in ${MOON_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1149:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=ECDSA 512 bit, CN=${CN}" \
        !          1150:     --crl ${ECDSA_CDP} --outform pem > ${MOON_CERT}
        !          1151: cp ${MOON_CERT} ${ECDSA_DIR}/certs/${SERIAL}.pem
        !          1152: 
        !          1153: # Generate a carol ECDSA 256 bit certificate
        !          1154: CAROL_KEY="${TEST}/hosts/carol/${SWANCTL_DIR}/ecdsa/carolKey.pem"
        !          1155: CAROL_CERT="${TEST}/hosts/carol/${SWANCTL_DIR}/x509/carolCert.pem"
        !          1156: CN="carol@strongswan.org"
        !          1157: SERIAL="02"
        !          1158: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/ecdsa
        !          1159: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !          1160: pki --gen --type ecdsa --size 256 --outform pem > ${CAROL_KEY}
        !          1161: pki --issue --cakey ${ECDSA_KEY} --cacert ${ECDSA_CERT} --type ecdsa \
        !          1162:     --in ${CAROL_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1163:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=ECDSA 256 bit, CN=${CN}" \
        !          1164:     --crl ${ECDSA_CDP} --outform pem > ${CAROL_CERT}
        !          1165: cp ${CAROL_CERT} ${ECDSA_DIR}/certs/${SERIAL}.pem
        !          1166: 
        !          1167: # Generate a dave ECDSA 384 bit certificate
        !          1168: DAVE_KEY="${TEST}/hosts/dave/${SWANCTL_DIR}/ecdsa/daveKey.pem"
        !          1169: DAVE_CERT="${TEST}/hosts/dave/${SWANCTL_DIR}/x509/daveCert.pem"
        !          1170: CN="dave@strongswan.org"
        !          1171: SERIAL="03"
        !          1172: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/ecdsa
        !          1173: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/x509
        !          1174: pki --gen --type ecdsa --size 384 --outform pem > ${DAVE_KEY}
        !          1175: pki --issue --cakey ${ECDSA_KEY} --cacert ${ECDSA_CERT} --type ecdsa \
        !          1176:     --in ${DAVE_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1177:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=ECDSA 384 bit, CN=${CN}" \
        !          1178:     --crl ${ECDSA_CDP} --outform pem > ${DAVE_CERT}
        !          1179: cp ${DAVE_CERT} ${ECDSA_DIR}/certs/${SERIAL}.pem
        !          1180: 
        !          1181: # Put CA and EE certificate copies in the openssl-ikev2/ecdsa-pkcs8 scenario
        !          1182: TEST="${TEST_DIR}/openssl-ikev2/ecdsa-pkcs8"
        !          1183: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !          1184: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !          1185: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/x509
        !          1186: cp ${MOON_CERT}  ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !          1187: cp ${CAROL_CERT} ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !          1188: cp ${DAVE_CERT}  ${TEST}/hosts/dave/${SWANCTL_DIR}/x509
        !          1189: 
        !          1190: # Convert moon private key into unencrypted PKCS#8 format
        !          1191: TEST_KEY="${TEST}/hosts/moon/${SWANCTL_DIR}/pkcs8/moonKey.pem"
        !          1192: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/pkcs8
        !          1193: openssl pkcs8 -in ${MOON_KEY} -nocrypt -topk8 -out ${TEST_KEY}
        !          1194: 
        !          1195: # Convert carol private key into v1.5 DES encrypted PKCS#8 format
        !          1196: TEST_KEY="${TEST}/hosts/carol/${SWANCTL_DIR}/pkcs8/carolKey.pem"
        !          1197: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/pkcs8
        !          1198: openssl pkcs8 -in ${CAROL_KEY} -nocrypt -topk8 -v1 PBE-MD5-DES \
        !          1199:               -passout "pass:nH5ZQEWtku0RJEZ6" -out ${TEST_KEY}
        !          1200: 
        !          1201: # Convert dave private key into v2.0 AES-128 encrypted PKCS#8 format
        !          1202: TEST_KEY="${TEST}/hosts/dave/${SWANCTL_DIR}/pkcs8/daveKey.pem"
        !          1203: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/pkcs8
        !          1204: openssl pkcs8 -in ${DAVE_KEY} -nocrypt -topk8  -v2 aes128 \
        !          1205:               -passout "pass:OJlNZBx+80dLh4wC6fw5LmBd" -out ${TEST_KEY}
        !          1206: 
        !          1207: # Put CA and EE certificate copies in the openssl-ikev1/ecdsa-certs scenario
        !          1208: TEST="${TEST_DIR}/openssl-ikev1/ecdsa-certs"
        !          1209: cd ${TEST}/hosts/moon/${SWANCTL_DIR}
        !          1210: mkdir -p ecdsa x509 x509ca
        !          1211: cp ${MOON_KEY}   ecdsa
        !          1212: cp ${MOON_CERT}  x509
        !          1213: cp ${ECDSA_CERT} x509ca
        !          1214: cd ${TEST}/hosts/carol/${SWANCTL_DIR}
        !          1215: mkdir -p ecdsa x509 x509ca
        !          1216: cp ${CAROL_KEY}  ecdsa
        !          1217: cp ${CAROL_CERT} x509
        !          1218: cp ${ECDSA_CERT} x509ca
        !          1219: cd ${TEST}/hosts/dave/${SWANCTL_DIR}
        !          1220: mkdir -p ecdsa x509 x509ca
        !          1221: cp ${DAVE_KEY}   ecdsa
        !          1222: cp ${DAVE_CERT}  x509
        !          1223: cp ${ECDSA_CERT} x509ca
        !          1224: 
        !          1225: ################################################################################
        !          1226: # strongSwan RFC3779 Root CA                                                   #
        !          1227: ################################################################################
        !          1228: 
        !          1229: # Generate strongSwan RFC3779 Root CA
        !          1230: pki --gen  --type rsa --size ${RSA_SIZE} --outform pem > ${RFC3779_KEY}
        !          1231: pki --self --type rsa --in ${RFC3779_KEY} \
        !          1232:     --not-before "${START}" --not-after "${CA_END}" --ca \
        !          1233:     --dn "C=CH, O=${PROJECT}, OU=RFC3779, CN=strongSwan RFC3779 Root CA" \
        !          1234:     --addrblock "10.1.0.0-10.2.255.255" \
        !          1235:     --addrblock "10.3.0.1-10.3.3.232" \
        !          1236:     --addrblock "192.168.0.0/24" \
        !          1237:     --addrblock "fec0::-fec2:ffff:ffff:ffff:ffff:ffff:ffff:ffff" \
        !          1238:     --outform pem > ${RFC3779_CERT}
        !          1239: 
        !          1240: # Put a copy in the ikev2/net2net-rfc3779 scenario
        !          1241: TEST="${TEST_DIR}/ikev2/net2net-rfc3779"
        !          1242: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !          1243: mkdir -p ${TEST}/hosts/sun/${IPSEC_DIR}/cacerts
        !          1244: cp ${RFC3779_CERT} ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !          1245: cp ${RFC3779_CERT} ${TEST}/hosts/sun/${IPSEC_DIR}/cacerts
        !          1246: 
        !          1247: # Put a copy in the ipv6/rw-rfc3779-ikev2 scenario
        !          1248: TEST="${TEST_DIR}/ipv6/rw-rfc3779-ikev2"
        !          1249: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/x509ca
        !          1250: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/x509ca
        !          1251: cp ${RFC3779_CERT} ${TEST}/hosts/carol/${SWANCTL_DIR}/x509ca
        !          1252: cp ${RFC3779_CERT} ${TEST}/hosts/dave/${SWANCTL_DIR}/x509ca
        !          1253: 
        !          1254: # Generate a moon RFC3779 certificate
        !          1255: TEST="${TEST_DIR}/ikev2/net2net-rfc3779"
        !          1256: TEST_KEY="${TEST}/hosts/moon/${IPSEC_DIR}/private/moonKey.pem"
        !          1257: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/certs/moonCert.pem"
        !          1258: CN="moon.strongswan.org"
        !          1259: SERIAL="01"
        !          1260: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !          1261: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/certs
        !          1262: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1263: pki --issue --cakey ${RFC3779_KEY} --cacert ${RFC3779_CERT} --type rsa \
        !          1264:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1265:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=RFC3779, CN=${CN}" \
        !          1266:     --addrblock "10.1.0.0/16" --addrblock "192.168.0.1/32" \
        !          1267:     --addrblock "fec0::1/128" --addrblock "fec1::/16" \
        !          1268:     --crl ${RFC3779_CDP} --outform pem > ${TEST_CERT}
        !          1269: cp ${TEST_CERT} ${RFC3779_DIR}/certs/${SERIAL}.pem
        !          1270: 
        !          1271: # Put a copy in the ipv6 scenarios
        !          1272: for t in net2net-rfc3779-ikev2 rw-rfc3779-ikev2
        !          1273: do
        !          1274:   cd "${TEST_DIR}/ipv6/${t}/hosts/moon/${SWANCTL_DIR}"
        !          1275:   mkdir -p rsa x509 x509ca
        !          1276:   cp ${TEST_KEY}  rsa
        !          1277:   cp ${TEST_CERT} x509
        !          1278:   cp ${RFC3779_CERT} x509ca
        !          1279: done
        !          1280: 
        !          1281: # Generate a sun RFC3779 certificate
        !          1282: TEST="${TEST_DIR}/ikev2/net2net-rfc3779"
        !          1283: TEST_KEY="${TEST}/hosts/sun/${IPSEC_DIR}/private/sunKey.pem"
        !          1284: TEST_CERT="${TEST}/hosts/sun/${IPSEC_DIR}/certs/sunCert.pem"
        !          1285: CN="sun.strongswan.org"
        !          1286: SERIAL="02"
        !          1287: mkdir -p ${TEST}/hosts/sun/${IPSEC_DIR}/private
        !          1288: mkdir -p ${TEST}/hosts/sun/${IPSEC_DIR}/certs
        !          1289: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1290: pki --issue --cakey ${RFC3779_KEY} --cacert ${RFC3779_CERT} --type rsa \
        !          1291:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1292:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=RFC3779, CN=${CN}" \
        !          1293:     --addrblock "10.2.0.0/16" --addrblock "192.168.0.2/32" \
        !          1294:     --addrblock "fec0::2/128" --addrblock "fec2::/16" \
        !          1295:     --crl ${RFC3779_CDP} --outform pem > ${TEST_CERT}
        !          1296: cp ${TEST_CERT} ${RFC3779_DIR}/certs/${SERIAL}.pem
        !          1297: 
        !          1298: # Put a copy in the ipv6/net2net-rfc3779-ikev2 scenario
        !          1299: cd "${TEST_DIR}/ipv6/net2net-rfc3779-ikev2/hosts/sun/${SWANCTL_DIR}"
        !          1300: mkdir -p rsa x509 x509ca
        !          1301: cp ${TEST_KEY} rsa
        !          1302: cp ${TEST_CERT} x509
        !          1303: cp ${RFC3779_CERT} x509ca
        !          1304: 
        !          1305: # Generate a carol RFC3779 certificate
        !          1306: TEST="${TEST_DIR}/ipv6/rw-rfc3779-ikev2"
        !          1307: TEST_KEY="${TEST}/hosts/carol/${SWANCTL_DIR}/rsa/carolKey.pem"
        !          1308: TEST_CERT="${TEST}/hosts/carol/${SWANCTL_DIR}/x509/carolCert.pem"
        !          1309: CN="carol@strongswan.org"
        !          1310: SERIAL="03"
        !          1311: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/rsa
        !          1312: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !          1313: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1314: pki --issue --cakey ${RFC3779_KEY} --cacert ${RFC3779_CERT} --type rsa \
        !          1315:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1316:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=RFC3779, CN=${CN}" \
        !          1317:     --addrblock "10.3.0.1/32" --addrblock "192.168.0.100/32" \
        !          1318:     --addrblock "fec0::10/128" \
        !          1319:     --crl ${RFC3779_CDP} --outform pem > ${TEST_CERT}
        !          1320: cp ${TEST_CERT} ${RFC3779_DIR}/certs/${SERIAL}.pem
        !          1321: 
        !          1322: # Generate a carol RFC3779 certificate
        !          1323: TEST="${TEST_DIR}/ipv6/rw-rfc3779-ikev2"
        !          1324: TEST_KEY="${TEST}/hosts/dave/${SWANCTL_DIR}/rsa/daveKey.pem"
        !          1325: TEST_CERT="${TEST}/hosts/dave/${SWANCTL_DIR}/x509/daveCert.pem"
        !          1326: CN="dave@strongswan.org"
        !          1327: SERIAL="04"
        !          1328: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/rsa
        !          1329: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/x509
        !          1330: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1331: pki --issue --cakey ${RFC3779_KEY} --cacert ${RFC3779_CERT} --type rsa \
        !          1332:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1333:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=RFC3779, CN=${CN}" \
        !          1334:     --addrblock "10.3.0.2/32" --addrblock "192.168.0.200/32" \
        !          1335:     --addrblock "fec0::20/128" \
        !          1336:     --crl ${RFC3779_CDP} --outform pem > ${TEST_CERT}
        !          1337: cp ${TEST_CERT} ${RFC3779_DIR}/certs/${SERIAL}.pem
        !          1338: 
        !          1339: ################################################################################
        !          1340: # strongSwan SHA3-RSA Root CA                                                  #
        !          1341: ################################################################################
        !          1342: 
        !          1343: # Use specific plugin configuration to issue certificates with SHA-3 signatures
        !          1344: # as not all crypto plugins support them.  To avoid entropy issues use the
        !          1345: # default plugins to generate the keys.
        !          1346: SHA3_PKI_PLUGINS="gmp pem pkcs1 random sha1 sha3 x509"
        !          1347: 
        !          1348: # Generate strongSwan SHA3-RSA Root CA
        !          1349: pki --gen  --type rsa --size ${RSA_SIZE} --outform pem > ${SHA3_RSA_KEY}
        !          1350: PKI_PLUGINS="${SHA3_PKI_PLUGINS}" \
        !          1351: pki --self --type rsa --in ${SHA3_RSA_KEY} --digest sha3_256 \
        !          1352:     --not-before "${START}" --not-after "${CA_END}" --ca \
        !          1353:     --dn "C=CH, O=${PROJECT}, OU=SHA-3, CN=strongSwan Root CA" \
        !          1354:     --outform pem > ${SHA3_RSA_CERT}
        !          1355: 
        !          1356: # Put a copy in the swanctl/net2net-sha3-rsa-cert scenario
        !          1357: TEST="${TEST_DIR}/swanctl/net2net-sha3-rsa-cert"
        !          1358: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509ca
        !          1359: mkdir -p ${TEST}/hosts/sun/${SWANCTL_DIR}/x509ca
        !          1360: cp ${SHA3_RSA_CERT} ${TEST}/hosts/moon/${SWANCTL_DIR}/x509ca
        !          1361: cp ${SHA3_RSA_CERT} ${TEST}/hosts/sun/${SWANCTL_DIR}/x509ca
        !          1362: 
        !          1363: # Generate a sun SHA3-RSA certificate
        !          1364: SUN_KEY="${TEST}/hosts/sun/${SWANCTL_DIR}/rsa/sunKey.pem"
        !          1365: SUN_CERT="${TEST}/hosts/sun/${SWANCTL_DIR}/x509/sunCert.pem"
        !          1366: CN="sun.strongswan.org"
        !          1367: SERIAL="01"
        !          1368: mkdir -p ${TEST}/hosts/sun/${SWANCTL_DIR}/rsa
        !          1369: mkdir -p ${TEST}/hosts/sun/${SWANCTL_DIR}/x509
        !          1370: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${SUN_KEY}
        !          1371: PKI_PLUGINS="${SHA3_PKI_PLUGINS}" \
        !          1372: pki --issue --cakey ${SHA3_RSA_KEY} --cacert ${SHA3_RSA_CERT} --type rsa \
        !          1373:     --in ${SUN_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1374:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=SHA-3, CN=${CN}" \
        !          1375:     --crl ${SHA3_RSA_CDP} --digest sha3_256 --outform pem > ${SUN_CERT}
        !          1376: cp ${SUN_CERT} ${SHA3_RSA_DIR}/certs/${SERIAL}.pem
        !          1377: 
        !          1378: # Generate a moon SHA3-RSA certificate
        !          1379: MOON_KEY="${TEST}/hosts/moon/${SWANCTL_DIR}/rsa/moonKey.pem"
        !          1380: MOON_CERT="${TEST}/hosts/moon/${SWANCTL_DIR}/x509/moonCert.pem"
        !          1381: CN="moon.strongswan.org"
        !          1382: SERIAL="02"
        !          1383: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/rsa
        !          1384: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !          1385: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${MOON_KEY}
        !          1386: PKI_PLUGINS="${SHA3_PKI_PLUGINS}" \
        !          1387: pki --issue --cakey ${SHA3_RSA_KEY} --cacert ${SHA3_RSA_CERT} --type rsa \
        !          1388:     --in ${MOON_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1389:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=SHA-3, CN=${CN}" \
        !          1390:     --crl ${SHA3_RSA_CDP} --digest sha3_256 --outform pem > ${MOON_CERT}
        !          1391: cp ${MOON_CERT} ${SHA3_RSA_DIR}/certs/${SERIAL}.pem
        !          1392: 
        !          1393: # Put a copy in the botan/net2net-sha3-rsa-cert scenario
        !          1394: TEST="${TEST_DIR}/botan/net2net-sha3-rsa-cert"
        !          1395: cd ${TEST}/hosts/moon/${SWANCTL_DIR}
        !          1396: mkdir -p rsa x509 x509ca
        !          1397: cp ${MOON_KEY}      rsa
        !          1398: cp ${MOON_CERT}     x509
        !          1399: cp ${SHA3_RSA_CERT} x509ca
        !          1400: cd ${TEST}/hosts/sun/${SWANCTL_DIR}
        !          1401: mkdir -p rsa x509 x509ca
        !          1402: cp ${SUN_KEY}       rsa
        !          1403: cp ${SUN_CERT}      x509
        !          1404: cp ${SHA3_RSA_CERT} x509ca
        !          1405: 
        !          1406: # Put a copy in the swanctl/rw-eap-tls-sha3-rsa scenario
        !          1407: TEST="${TEST_DIR}/swanctl/rw-eap-tls-sha3-rsa"
        !          1408: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/rsa
        !          1409: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !          1410: cp ${MOON_KEY} ${TEST}/hosts/moon/${SWANCTL_DIR}/rsa
        !          1411: cp ${MOON_CERT} ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !          1412: 
        !          1413: # Generate a carol SHA3-RSA certificate
        !          1414: TEST_KEY="${TEST}/hosts/carol/${SWANCTL_DIR}/rsa/carolKey.pem"
        !          1415: TEST_CERT="${TEST}/hosts/carol/${SWANCTL_DIR}/x509/carolCert.pem"
        !          1416: CN="carol@strongswan.org"
        !          1417: SERIAL="03"
        !          1418: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/rsa
        !          1419: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !          1420: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1421: PKI_PLUGINS="${SHA3_PKI_PLUGINS}" \
        !          1422: pki --issue --cakey ${SHA3_RSA_KEY} --cacert ${SHA3_RSA_CERT} --type rsa \
        !          1423:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1424:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=SHA-3, CN=${CN}" \
        !          1425:     --crl ${SHA3_RSA_CDP} --digest sha3_256 --outform pem > ${TEST_CERT}
        !          1426: cp ${TEST_CERT} ${SHA3_RSA_DIR}/certs/${SERIAL}.pem
        !          1427: 
        !          1428: # Generate a dave SHA3-RSA certificate
        !          1429: TEST_KEY="${TEST}/hosts/dave/${SWANCTL_DIR}/rsa/daveKey.pem"
        !          1430: TEST_CERT="${TEST}/hosts/dave/${SWANCTL_DIR}/x509/daveCert.pem"
        !          1431: CN="dave@strongswan.org"
        !          1432: SERIAL="04"
        !          1433: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/rsa
        !          1434: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/x509
        !          1435: pki --gen --type rsa --size ${RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1436: PKI_PLUGINS="${SHA3_PKI_PLUGINS}" \
        !          1437: pki --issue --cakey ${SHA3_RSA_KEY} --cacert ${SHA3_RSA_CERT} --type rsa \
        !          1438:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1439:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=SHA-3, CN=${CN}" \
        !          1440:     --crl ${SHA3_RSA_CDP} --digest sha3_256 --outform pem > ${TEST_CERT}
        !          1441: cp ${TEST_CERT} ${SHA3_RSA_DIR}/certs/${SERIAL}.pem
        !          1442: 
        !          1443: for h in moon carol dave
        !          1444: do
        !          1445:   mkdir -p ${TEST}/hosts/${h}/${SWANCTL_DIR}/x509ca
        !          1446:   cp ${SHA3_RSA_CERT} ${TEST}/hosts/${h}/${SWANCTL_DIR}/x509ca
        !          1447: done
        !          1448: 
        !          1449: ################################################################################
        !          1450: # strongSwan Ed25519 Root CA                                                   #
        !          1451: ################################################################################
        !          1452: 
        !          1453: # Generate strongSwan Ed25519 Root CA
        !          1454: pki --gen  --type ed25519 --outform pem > ${ED25519_KEY}
        !          1455: pki --self --type ed25519 --in ${ED25519_KEY} \
        !          1456:     --not-before "${START}" --not-after "${CA_END}" --ca \
        !          1457:     --dn "C=CH, O=${PROJECT}, CN=strongSwan Ed25519 Root CA" \
        !          1458:     --cert-policy "1.3.6.1.4.1.36906.1.1.1" \
        !          1459:     --cert-policy "1.3.6.1.4.1.36906.1.1.2" \
        !          1460:     --outform pem > ${ED25519_CERT}
        !          1461: 
        !          1462: # Put a copy in the swanctl/net2net-ed25519 scenario
        !          1463: TEST="${TEST_DIR}/swanctl/net2net-ed25519"
        !          1464: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509ca
        !          1465: mkdir -p ${TEST}/hosts/sun/${SWANCTL_DIR}/x509ca
        !          1466: cp ${ED25519_CERT} ${TEST}/hosts/moon/${SWANCTL_DIR}/x509ca
        !          1467: cp ${ED25519_CERT} ${TEST}/hosts/sun/${SWANCTL_DIR}/x509ca
        !          1468: 
        !          1469: # Generate a sun Ed25519 certificate
        !          1470: SUN_KEY="${TEST}/hosts/sun/${SWANCTL_DIR}/pkcs8/sunKey.pem"
        !          1471: SUN_CERT="${TEST}/hosts/sun/${SWANCTL_DIR}/x509/sunCert.pem"
        !          1472: CN="sun.strongswan.org"
        !          1473: SERIAL="01"
        !          1474: mkdir -p ${TEST}/hosts/sun/${SWANCTL_DIR}/pkcs8
        !          1475: mkdir -p ${TEST}/hosts/sun/${SWANCTL_DIR}/x509
        !          1476: pki --gen --type ed25519 --outform pem > ${SUN_KEY}
        !          1477: pki --issue --cakey ${ED25519_KEY} --cacert ${ED25519_CERT} --type ed25519 \
        !          1478:     --in ${SUN_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1479:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Ed25519, CN=${CN}" \
        !          1480:     --cert-policy "1.3.6.1.4.1.36906.1.1.2" --flag "serverAuth" \
        !          1481:     --crl ${ED25519_CDP} --outform pem > ${SUN_CERT}
        !          1482: cp ${SUN_CERT} ${ED25519_DIR}/certs/${SERIAL}.pem
        !          1483: 
        !          1484: # Generate a moon Ed25519 certificate
        !          1485: MOON_KEY="${TEST}/hosts/moon/${SWANCTL_DIR}/pkcs8/moonKey.pem"
        !          1486: MOON_CERT="${TEST}/hosts/moon/${SWANCTL_DIR}/x509/moonCert.pem"
        !          1487: CN="moon.strongswan.org"
        !          1488: SERIAL="02"
        !          1489: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/pkcs8
        !          1490: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !          1491: pki --gen --type ed25519 --outform pem > ${MOON_KEY}
        !          1492: pki --issue --cakey ${ED25519_KEY} --cacert ${ED25519_CERT} --type ed25519 \
        !          1493:     --in ${MOON_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1494:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Ed25519, CN=${CN}" \
        !          1495:     --cert-policy "1.3.6.1.4.1.36906.1.1.1" --flag "serverAuth" \
        !          1496:     --crl ${ED25519_CDP} --outform pem > ${MOON_CERT}
        !          1497: cp ${MOON_CERT} ${ED25519_DIR}/certs/${SERIAL}.pem
        !          1498: 
        !          1499: # Put a copy in the botan/net2net-ed25519 scenario
        !          1500: TEST="${TEST_DIR}/botan/net2net-ed25519"
        !          1501: cd ${TEST}/hosts/moon/${SWANCTL_DIR}
        !          1502: mkdir -p pkcs8 x509 x509ca
        !          1503: cp ${MOON_KEY}     pkcs8
        !          1504: cp ${MOON_CERT}    x509
        !          1505: cp ${ED25519_CERT} x509ca
        !          1506: cd ${TEST}/hosts/sun/${SWANCTL_DIR}
        !          1507: mkdir -p pkcs8 x509 x509ca
        !          1508: cp ${SUN_KEY}      pkcs8
        !          1509: cp ${SUN_CERT}     x509
        !          1510: cp ${ED25519_CERT} x509ca
        !          1511: 
        !          1512: # Put a copy in the ikev2/net2net-ed25519 scenario
        !          1513: TEST="${TEST_DIR}/ikev2/net2net-ed25519"
        !          1514: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}
        !          1515: cd ${TEST}/hosts/moon/${IPSEC_DIR}
        !          1516: mkdir -p cacerts certs private
        !          1517: cp ${MOON_KEY}     private
        !          1518: cp ${MOON_CERT}    certs
        !          1519: cp ${ED25519_CERT} cacerts
        !          1520: mkdir -p ${TEST}/hosts/sun/${IPSEC_DIR}
        !          1521: cd ${TEST}/hosts/sun/${IPSEC_DIR}
        !          1522: mkdir -p cacerts certs private
        !          1523: cp ${SUN_KEY}      private
        !          1524: cp ${SUN_CERT}     certs
        !          1525: cp ${ED25519_CERT} cacerts
        !          1526: 
        !          1527: # Put a copy in the swanctl/rw-ed25519-certpol scenario
        !          1528: TEST="${TEST_DIR}/swanctl/rw-ed25519-certpol"
        !          1529: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/pkcs8
        !          1530: mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !          1531: cp ${MOON_KEY}  ${TEST}/hosts/moon/${SWANCTL_DIR}/pkcs8
        !          1532: cp ${MOON_CERT} ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !          1533: 
        !          1534: for h in moon carol dave
        !          1535: do
        !          1536:   mkdir -p ${TEST}/hosts/${h}/${SWANCTL_DIR}/x509ca
        !          1537:   cp ${ED25519_CERT} ${TEST}/hosts/${h}/${SWANCTL_DIR}/x509ca
        !          1538: done
        !          1539: 
        !          1540: # Generate a carol Ed25519 certificate
        !          1541: TEST_KEY="${TEST}/hosts/carol/${SWANCTL_DIR}/pkcs8/carolKey.pem"
        !          1542: TEST_CERT="${TEST}/hosts/carol/${SWANCTL_DIR}/x509/carolCert.pem"
        !          1543: CN="carol@strongswan.org"
        !          1544: SERIAL="03"
        !          1545: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/pkcs8
        !          1546: mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !          1547: pki --gen --type ed25519 --outform pem > ${TEST_KEY}
        !          1548: pki --issue --cakey ${ED25519_KEY} --cacert ${ED25519_CERT} --type ed25519 \
        !          1549:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1550:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Ed25519, CN=${CN}" \
        !          1551:     --cert-policy "1.3.6.1.4.1.36906.1.1.1" --flag "clientAuth" \
        !          1552:     --crl ${ED25519_CDP} --outform pem > ${TEST_CERT}
        !          1553: cp ${TEST_CERT} ${ED25519_DIR}/certs/${SERIAL}.pem
        !          1554: 
        !          1555: # Generate a dave Ed25519 certificate
        !          1556: TEST_KEY="${TEST}/hosts/dave/${SWANCTL_DIR}/pkcs8/daveKey.pem"
        !          1557: TEST_CERT="${TEST}/hosts/dave/${SWANCTL_DIR}/x509/daveCert.pem"
        !          1558: CN="dave@strongswan.org"
        !          1559: SERIAL="04"
        !          1560: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/pkcs8
        !          1561: mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/x509
        !          1562: pki --gen --type ed25519 --outform pem > ${TEST_KEY}
        !          1563: pki --issue --cakey ${ED25519_KEY} --cacert ${ED25519_CERT} --type ed25519 \
        !          1564:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1565:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Ed25519, CN=${CN}" \
        !          1566:     --cert-policy "1.3.6.1.4.1.36906.1.1.2" --flag "clientAuth" \
        !          1567:     --crl ${ED25519_CDP} --outform pem > ${TEST_CERT}
        !          1568: cp ${TEST_CERT} ${ED25519_DIR}/certs/${SERIAL}.pem
        !          1569: 
        !          1570: ################################################################################
        !          1571: # strongSwan Monster Root CA                                                   #
        !          1572: ################################################################################
        !          1573: 
        !          1574: # Generate strongSwan Monster Root CA
        !          1575: pki --gen  --type rsa --size ${MONSTER_CA_RSA_SIZE} --outform pem > ${MONSTER_KEY}
        !          1576: pki --self --type rsa --in ${MONSTER_KEY} \
        !          1577:     --not-before "01.05.09 15:00:00" --not-after "01.05.59 15:00:00" --ca \
        !          1578:     --dn "C=CH, O=${PROJECT}, CN=strongSwan Monster CA" \
        !          1579:     --outform pem > ${MONSTER_CERT}
        !          1580: 
        !          1581: # Put a copy in the ikev2/after-2038-certs scenario
        !          1582: TEST="${TEST_DIR}/ikev2/after-2038-certs"
        !          1583: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !          1584: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/cacerts
        !          1585: cp ${MONSTER_CERT} ${TEST}/hosts/moon/${IPSEC_DIR}/cacerts
        !          1586: cp ${MONSTER_CERT} ${TEST}/hosts/carol/${IPSEC_DIR}/cacerts
        !          1587: 
        !          1588: # Generate a moon Monster certificate
        !          1589: TEST_KEY="${TEST}/hosts/moon/${IPSEC_DIR}/private/moonKey.pem"
        !          1590: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/certs/moonCert.pem"
        !          1591: CN="moon.strongswan.org"
        !          1592: SERIAL="01"
        !          1593: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !          1594: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/certs
        !          1595: pki --gen --type rsa --size ${MONSTER_EE_RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1596: pki --issue --cakey ${MONSTER_KEY} --cacert ${MONSTER_CERT} --type rsa \
        !          1597:     --in ${TEST_KEY} --san ${CN} \
        !          1598:     --not-before "01.05.09 15:00:00" --not-after "01.05.39 15:00:00" - \
        !          1599:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Monster, CN=${CN}" \
        !          1600:     --crl ${MONSTER_CDP} --outform pem > ${TEST_CERT}
        !          1601: cp ${TEST_CERT} ${MONSTER_DIR}/certs/${SERIAL}.pem
        !          1602: 
        !          1603: # Generate a carol Monster certificate
        !          1604: TEST_KEY="${TEST}/hosts/carol/${IPSEC_DIR}/private/carolKey.pem"
        !          1605: TEST_CERT="${TEST}/hosts/carol/${IPSEC_DIR}/certs/carolCert.pem"
        !          1606: CN="carol@strongswan.org"
        !          1607: SERIAL="02"
        !          1608: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !          1609: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !          1610: pki --gen --type rsa --size ${MONSTER_EE_RSA_SIZE} --outform pem > ${TEST_KEY}
        !          1611: pki --issue --cakey ${MONSTER_KEY} --cacert ${MONSTER_CERT} --type rsa \
        !          1612:     --in ${TEST_KEY} --san ${CN} \
        !          1613:     --not-before "01.05.09 15:00:00" --not-after "01.05.39 15:00:00" - \
        !          1614:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=Monster, CN=${CN}" \
        !          1615:     --crl ${MONSTER_CDP} --outform pem > ${TEST_CERT}
        !          1616: cp ${TEST_CERT} ${MONSTER_DIR}/certs/${SERIAL}.pem
        !          1617: 
        !          1618: ################################################################################
        !          1619: # Bliss CA                                                                     #
        !          1620: ################################################################################
        !          1621: 
        !          1622: # Generate BLISS Root CA with 192 bit security strength
        !          1623: pki --gen  --type bliss --size 4 > ${BLISS_KEY}
        !          1624: pki --self --type bliss --in ${BLISS_KEY} --digest sha3_512 \
        !          1625:     --not-before "${START}" --not-after "${CA_END}" --ca \
        !          1626:     --dn "C=CH, O=${PROJECT}, CN=strongSwan BLISS Root CA" > ${BLISS_CERT}
        !          1627: 
        !          1628: # Put a copy in the following scenarios
        !          1629: for t in rw-newhope-bliss rw-ntru-bliss
        !          1630: do
        !          1631:   TEST="${TEST_DIR}/ikev2/${t}"
        !          1632:   for h in moon carol dave
        !          1633:   do
        !          1634:     mkdir -p ${TEST}/hosts/${h}/${IPSEC_DIR}/cacerts
        !          1635:     cp ${BLISS_CERT} ${TEST}/hosts/${h}/${IPSEC_DIR}/cacerts
        !          1636:   done
        !          1637: 
        !          1638:   TEST="${TEST_DIR}/swanctl/${t}"
        !          1639:   for h in moon carol dave
        !          1640:   do
        !          1641:     mkdir -p ${TEST}/hosts/${h}/${SWANCTL_DIR}/x509ca
        !          1642:     cp ${BLISS_CERT} ${TEST}/hosts/${h}/${SWANCTL_DIR}/x509ca
        !          1643:   done
        !          1644: done
        !          1645: 
        !          1646: # Generate a carol BLISS certificate with 128 bit security strength
        !          1647: TEST="${TEST_DIR}/ikev2/rw-newhope-bliss"
        !          1648: TEST_KEY="${TEST}/hosts/carol/${IPSEC_DIR}/private/carolKey.der"
        !          1649: TEST_CERT="${TEST}/hosts/carol/${IPSEC_DIR}/certs/carolCert.der"
        !          1650: CN="carol@strongswan.org"
        !          1651: SERIAL="01"
        !          1652: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !          1653: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !          1654: pki --gen --type bliss --size 1 > ${TEST_KEY}
        !          1655: pki --issue --cakey ${BLISS_KEY} --cacert ${BLISS_CERT} --type bliss \
        !          1656:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1657:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=BLISS I, CN=${CN}" \
        !          1658:     --crl ${BLISS_CDP} --digest sha3_512 > ${TEST_CERT}
        !          1659: cp ${TEST_CERT} ${BLISS_DIR}/certs/${SERIAL}.der
        !          1660: 
        !          1661: # Put a copy in the ikev2/rw-ntru-bliss scenario
        !          1662: TEST="${TEST_DIR}/ikev2/rw-ntru-bliss"
        !          1663: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !          1664: mkdir -p ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !          1665: cp ${TEST_KEY} ${TEST}/hosts/carol/${IPSEC_DIR}/private
        !          1666: cp ${TEST_CERT} ${TEST}/hosts/carol/${IPSEC_DIR}/certs
        !          1667: 
        !          1668: # Put a copy in the swanctl scenarios
        !          1669: for t in rw-newhope-bliss rw-ntru-bliss
        !          1670: do
        !          1671:   TEST="${TEST_DIR}/swanctl/${t}"
        !          1672:   mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/bliss
        !          1673:   mkdir -p ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !          1674:   cp ${TEST_KEY} ${TEST}/hosts/carol/${SWANCTL_DIR}/bliss
        !          1675:   cp ${TEST_CERT} ${TEST}/hosts/carol/${SWANCTL_DIR}/x509
        !          1676: done
        !          1677: 
        !          1678: # Generate a dave BLISS certificate with 160 bit security strength
        !          1679: TEST="${TEST_DIR}/ikev2/rw-newhope-bliss"
        !          1680: TEST_KEY="${TEST}/hosts/dave/${IPSEC_DIR}/private/daveKey.der"
        !          1681: TEST_CERT="${TEST}/hosts/dave/${IPSEC_DIR}/certs/daveCert.der"
        !          1682: CN="dave@strongswan.org"
        !          1683: SERIAL="02"
        !          1684: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !          1685: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/certs
        !          1686: pki --gen --type bliss --size 3 > ${TEST_KEY}
        !          1687: pki --issue --cakey ${BLISS_KEY} --cacert ${BLISS_CERT} --type bliss \
        !          1688:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1689:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=BLISS III, CN=${CN}" \
        !          1690:     --crl ${BLISS_CDP} --digest sha3_512 > ${TEST_CERT}
        !          1691: cp ${TEST_CERT} ${BLISS_DIR}/certs/${SERIAL}.der
        !          1692: 
        !          1693: # Put a copy in the ikev2/rw-ntru-bliss scenario
        !          1694: TEST="${TEST_DIR}/ikev2/rw-ntru-bliss"
        !          1695: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/private
        !          1696: mkdir -p ${TEST}/hosts/dave/${IPSEC_DIR}/certs
        !          1697: cp ${TEST_KEY} ${TEST}/hosts/dave/${IPSEC_DIR}/private/
        !          1698: cp ${TEST_CERT} ${TEST}/hosts/dave/${IPSEC_DIR}/certs/
        !          1699: 
        !          1700: # Put a copy in the swanctl scenarios
        !          1701: for t in rw-newhope-bliss rw-ntru-bliss
        !          1702: do
        !          1703:   TEST="${TEST_DIR}/swanctl/${t}"
        !          1704:   mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/bliss
        !          1705:   mkdir -p ${TEST}/hosts/dave/${SWANCTL_DIR}/x509
        !          1706:   cp ${TEST_KEY} ${TEST}/hosts/dave/${SWANCTL_DIR}/bliss/
        !          1707:   cp ${TEST_CERT} ${TEST}/hosts/dave/${SWANCTL_DIR}/x509/
        !          1708: done
        !          1709: 
        !          1710: # Generate a moon BLISS certificate with 192 bit security strength
        !          1711: TEST="${TEST_DIR}/ikev2/rw-newhope-bliss"
        !          1712: TEST_KEY="${TEST}/hosts/moon/${IPSEC_DIR}/private/moonKey.der"
        !          1713: TEST_CERT="${TEST}/hosts/moon/${IPSEC_DIR}/certs/moonCert.der"
        !          1714: CN="moon.strongswan.org"
        !          1715: SERIAL="03"
        !          1716: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !          1717: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/certs
        !          1718: pki --gen --type bliss --size 4 > ${TEST_KEY}
        !          1719: pki --issue --cakey ${BLISS_KEY} --cacert ${BLISS_CERT} --type bliss \
        !          1720:     --in ${TEST_KEY} --not-before "${START}" --not-after "${EE_END}" --san ${CN} \
        !          1721:     --serial ${SERIAL} --dn "C=CH, O=${PROJECT}, OU=BLISS IV, CN=${CN}" \
        !          1722:     --crl ${BLISS_CDP} --digest sha3_512 > ${TEST_CERT}
        !          1723: cp ${TEST_CERT} ${BLISS_DIR}/certs/${SERIAL}.der
        !          1724: 
        !          1725: # Put a copy in the ikev2/rw-ntru-bliss scenario
        !          1726: TEST="${TEST_DIR}/ikev2/rw-ntru-bliss"
        !          1727: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/private
        !          1728: mkdir -p ${TEST}/hosts/moon/${IPSEC_DIR}/certs
        !          1729: cp ${TEST_KEY} ${TEST}/hosts/moon/${IPSEC_DIR}/private/
        !          1730: cp ${TEST_CERT} ${TEST}/hosts/moon/${IPSEC_DIR}/certs/
        !          1731: 
        !          1732: # Put a copy in the swanctl scenarios
        !          1733: for t in rw-newhope-bliss rw-ntru-bliss
        !          1734: do
        !          1735:   TEST="${TEST_DIR}/swanctl/${t}"
        !          1736:   mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/bliss
        !          1737:   mkdir -p ${TEST}/hosts/moon/${SWANCTL_DIR}/x509
        !          1738:   cp ${TEST_KEY} ${TEST}/hosts/moon/${SWANCTL_DIR}/bliss/
        !          1739:   cp ${TEST_CERT} ${TEST}/hosts/moon/${SWANCTL_DIR}/x509/
        !          1740: done
        !          1741: 
        !          1742: ################################################################################
        !          1743: # SQL Data                                                                     #
        !          1744: ################################################################################
        !          1745: 
        !          1746: CA_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${CA_KEY}`
        !          1747: CA_SPKI_HEX=`pki --keyid --type rsa --format hex --id spki --in ${CA_KEY}`
        !          1748: CA_CERT_HEX=`cat ${CA_CERT_DER} | hexdump -v -e '/1 "%02x"'`
        !          1749: CA_CERT_PEM_HEX=`cat ${CA_CERT} | hexdump -v -e '/1 "%02x"'`
        !          1750: #
        !          1751: MOON_CERT="${DIR}/hosts/moon/${SWANCTL_DIR}/x509/moonCert.pem"
        !          1752: MOON_KEY="${CA_DIR}/keys/moonKey.der"
        !          1753: MOON_KEY_PEM="${DIR}/hosts/moon/${SWANCTL_DIR}/rsa/moonKey.pem"
        !          1754: MOON_KEY_PEM_HEX=`cat ${MOON_KEY_PEM} | hexdump -v -e '/1 "%02x"'`
        !          1755: MOON_KEY_HEX=`cat ${MOON_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1756: MOON_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${MOON_KEY}`
        !          1757: MOON_PUB_HEX=`pki --pub --type rsa --in ${MOON_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1758: MOON_CERT_HEX=`openssl x509 -in ${MOON_CERT} -outform der | hexdump -v -e '/1 "%02x"'`
        !          1759: MOON_CERT_PEM_HEX=`cat ${MOON_CERT} | hexdump -v -e '/1 "%02x"'`
        !          1760: #
        !          1761: SUN_CERT="${DIR}/hosts/sun/${SWANCTL_DIR}/x509/sunCert.pem"
        !          1762: SUN_KEY="${CA_DIR}/keys/sunKey.der"
        !          1763: SUN_KEY_PEM="${DIR}/hosts/sun/${SWANCTL_DIR}/rsa/sunKey.pem"
        !          1764: SUN_KEY_PEM_HEX=`cat ${SUN_KEY_PEM} | hexdump -v -e '/1 "%02x"'`
        !          1765: SUN_KEY_HEX=`cat ${SUN_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1766: SUN_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${SUN_KEY}`
        !          1767: SUN_CERT_HEX=`openssl x509 -in ${SUN_CERT} -outform der | hexdump -v -e '/1 "%02x"'`
        !          1768: SUN_CERT_PEM_HEX=`cat ${SUN_CERT} | hexdump -v -e '/1 "%02x"'`
        !          1769: #
        !          1770: CAROL_CERT="${DIR}/hosts/carol/${SWANCTL_DIR}/x509/carolCert.pem"
        !          1771: CAROL_KEY="${CA_DIR}/keys/carolKey.der"
        !          1772: CAROL_KEY_HEX=`cat ${CAROL_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1773: CAROL_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${CAROL_KEY}`
        !          1774: CAROL_PUB_HEX=`pki --pub --type rsa --in ${CAROL_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1775: CAROL_CERT_HEX=`openssl x509 -in ${CAROL_CERT} -outform der | hexdump -v -e '/1 "%02x"'`
        !          1776: #
        !          1777: DAVE_CERT="${DIR}/hosts/dave/${SWANCTL_DIR}/x509/daveCert.pem"
        !          1778: DAVE_KEY="${CA_DIR}/keys/daveKey.der"
        !          1779: DAVE_KEY_HEX=`cat ${DAVE_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1780: DAVE_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${DAVE_KEY}`
        !          1781: DAVE_PUB_HEX=`pki --pub --type rsa --in ${DAVE_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1782: DAVE_CERT_HEX=`openssl x509 -in ${DAVE_CERT} -outform der | hexdump -v -e '/1 "%02x"'`
        !          1783: #
        !          1784: ALICE_CERT="${DIR}/hosts/alice/${SWANCTL_DIR}/x509/aliceCert.pem"
        !          1785: ALICE_KEY="${CA_DIR}/keys/aliceKey.der"
        !          1786: ALICE_KEY_HEX=`cat ${ALICE_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1787: ALICE_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${ALICE_KEY}`
        !          1788: ALICE_CERT_HEX=`openssl x509 -in ${ALICE_CERT} -outform der | hexdump -v -e '/1 "%02x"'`
        !          1789: #
        !          1790: VENUS_CERT="${DIR}/hosts/venus/${SWANCTL_DIR}/x509/venusCert.pem"
        !          1791: VENUS_KEY="${CA_DIR}/keys/venusKey.der"
        !          1792: VENUS_KEY_HEX=`cat ${VENUS_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1793: VENUS_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${VENUS_KEY}`
        !          1794: VENUS_CERT_HEX=`openssl x509 -in ${VENUS_CERT} -outform der | hexdump -v -e '/1 "%02x"'`
        !          1795: #
        !          1796: RESEARCH_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${RESEARCH_KEY}`
        !          1797: RESEARCH_SPKI_HEX=`pki --keyid --type rsa --format hex --id spki --in ${RESEARCH_KEY}`
        !          1798: RESEARCH_CERT_HEX=`cat ${RESEARCH_CERT_DER} | hexdump -v -e '/1 "%02x"'`
        !          1799: #
        !          1800: CAROL_R_CERT="${RESEARCH_DIR}/certs/01.pem"
        !          1801: CAROL_R_KEY="${RESEARCH_DIR}/keys/01.der"
        !          1802: CAROL_R_KEY_HEX=`cat ${CAROL_R_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1803: CAROL_R_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${CAROL_R_KEY}`
        !          1804: CAROL_R_CERT_HEX=`openssl x509 -in ${CAROL_R_CERT} -outform der | hexdump -v -e '/1 "%02x"'`
        !          1805: #
        !          1806: SALES_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${SALES_KEY}`
        !          1807: SALES_SPKI_HEX=`pki --keyid --type rsa --format hex --id spki --in ${SALES_KEY}`
        !          1808: SALES_CERT_HEX=`cat ${SALES_CERT_DER} | hexdump -v -e '/1 "%02x"'`
        !          1809: #
        !          1810: DAVE_S_CERT="${SALES_DIR}/certs/01.pem"
        !          1811: DAVE_S_KEY="${SALES_DIR}/keys/01.der"
        !          1812: DAVE_S_KEY_HEX=`cat ${DAVE_S_KEY} | hexdump -v -e '/1 "%02x"'`
        !          1813: DAVE_S_SPK_HEX=`pki --keyid --type rsa --format hex --id spk --in ${DAVE_S_KEY}`
        !          1814: DAVE_S_CERT_HEX=`openssl x509 -in ${DAVE_S_CERT} -outform der | hexdump -v -e '/1 "%02x"'`
        !          1815: #
        !          1816: for t in ip-pool-db ip-pool-db-expired ip-pool-db-restart ip-split-pools-db \
        !          1817:          ip-split-pools-db-restart multi-level-ca rw-cert rw-psk-rsa-split \
        !          1818:          rw-psk-ipv4 rw-psk-ipv6 rw-rsa rw-rsa-keyid
        !          1819: do
        !          1820:   for h in carol dave moon
        !          1821:   do
        !          1822:     TEST_DATA="${TEST_DIR}/sql/${t}/hosts/${h}/${IPSEC_DIR}/data.sql"
        !          1823:     sed -e "s/CA_SPK_HEX/${CA_SPK_HEX}/g" \
        !          1824:         -e "s/CA_SPKI_HEX/${CA_SPKI_HEX}/g" \
        !          1825:         -e "s/CA_CERT_HEX/${CA_CERT_HEX}/g" \
        !          1826:         -e "s/MOON_KEY_HEX/${MOON_KEY_HEX}/g" \
        !          1827:         -e "s/MOON_SPK_HEX/${MOON_SPK_HEX}/g" \
        !          1828:         -e "s/MOON_PUB_HEX/${MOON_PUB_HEX}/g" \
        !          1829:         -e "s/MOON_CERT_HEX/${MOON_CERT_HEX}/g" \
        !          1830:         -e "s/CAROL_KEY_HEX/${CAROL_KEY_HEX}/g" \
        !          1831:         -e "s/CAROL_SPK_HEX/${CAROL_SPK_HEX}/g" \
        !          1832:         -e "s/CAROL_PUB_HEX/${CAROL_PUB_HEX}/g" \
        !          1833:         -e "s/CAROL_CERT_HEX/${CAROL_CERT_HEX}/g" \
        !          1834:         -e "s/DAVE_KEY_HEX/${DAVE_KEY_HEX}/g" \
        !          1835:         -e "s/DAVE_SPK_HEX/${DAVE_SPK_HEX}/g" \
        !          1836:         -e "s/DAVE_PUB_HEX/${DAVE_PUB_HEX}/g" \
        !          1837:         -e "s/DAVE_CERT_HEX/${DAVE_CERT_HEX}/g" \
        !          1838:         -e "s/RESEARCH_SPK_HEX/${RESEARCH_SPK_HEX}/g" \
        !          1839:         -e "s/RESEARCH_SPKI_HEX/${RESEARCH_SPKI_HEX}/g" \
        !          1840:         -e "s/RESEARCH_CERT_HEX/${RESEARCH_CERT_HEX}/g" \
        !          1841:         -e "s/CAROL_R_KEY_HEX/${CAROL_R_KEY_HEX}/g" \
        !          1842:         -e "s/CAROL_R_SPK_HEX/${CAROL_R_SPK_HEX}/g" \
        !          1843:         -e "s/CAROL_R_CERT_HEX/${CAROL_R_CERT_HEX}/g" \
        !          1844:         -e "s/SALES_SPK_HEX/${SALES_SPK_HEX}/g" \
        !          1845:         -e "s/SALES_SPKI_HEX/${SALES_SPKI_HEX}/g" \
        !          1846:         -e "s/SALES_CERT_HEX/${SALES_CERT_HEX}/g" \
        !          1847:         -e "s/DAVE_S_KEY_HEX/${DAVE_S_KEY_HEX}/g" \
        !          1848:         -e "s/DAVE_S_SPK_HEX/${DAVE_S_SPK_HEX}/g" \
        !          1849:         -e "s/DAVE_S_CERT_HEX/${DAVE_S_CERT_HEX}/g" \
        !          1850:         ${TEST_DATA}.in > ${TEST_DATA}
        !          1851:   done
        !          1852: done
        !          1853: #
        !          1854: for t in rw-eap-aka-rsa
        !          1855: do
        !          1856:   for h in carol moon
        !          1857:   do
        !          1858:     TEST_DATA="${TEST_DIR}/sql/${t}/hosts/${h}/${IPSEC_DIR}/data.sql"
        !          1859:     sed -e "s/CA_SPK_HEX/${CA_SPK_HEX}/g" \
        !          1860:         -e "s/CA_SPKI_HEX/${CA_SPKI_HEX}/g" \
        !          1861:         -e "s/CA_CERT_HEX/${CA_CERT_HEX}/g" \
        !          1862:         -e "s/MOON_KEY_HEX/${MOON_KEY_HEX}/g" \
        !          1863:         -e "s/MOON_SPK_HEX/${MOON_SPK_HEX}/g" \
        !          1864:         -e "s/MOON_CERT_HEX/${MOON_CERT_HEX}/g" \
        !          1865:         ${TEST_DATA}.in > ${TEST_DATA}
        !          1866:   done
        !          1867: done
        !          1868: #
        !          1869: for t in net2net-cert net2net-psk net2net-route-pem net2net-start-pem
        !          1870: do
        !          1871:   for h in moon sun
        !          1872:   do
        !          1873:     TEST_DATA="${TEST_DIR}/sql/${t}/hosts/${h}/${IPSEC_DIR}/data.sql"
        !          1874:     sed -e "s/CA_SPK_HEX/${CA_SPK_HEX}/g" \
        !          1875:         -e "s/CA_SPKI_HEX/${CA_SPKI_HEX}/g" \
        !          1876:         -e "s/CA_CERT_HEX/${CA_CERT_HEX}/g" \
        !          1877:         -e "s/CA_CERT_PEM_HEX/${CA_CERT_PEM_HEX}/g" \
        !          1878:         -e "s/MOON_KEY_PEM_HEX/${MOON_KEY_PEM_HEX}/g" \
        !          1879:         -e "s/MOON_KEY_HEX/${MOON_KEY_HEX}/g" \
        !          1880:         -e "s/MOON_SPK_HEX/${MOON_SPK_HEX}/g" \
        !          1881:         -e "s/MOON_CERT_HEX/${MOON_CERT_HEX}/g" \
        !          1882:         -e "s/MOON_CERT_PEM_HEX/${MOON_CERT_PEM_HEX}/g" \
        !          1883:         -e "s/SUN_KEY_PEM_HEX/${SUN_KEY_PEM_HEX}/g" \
        !          1884:         -e "s/SUN_KEY_HEX/${SUN_KEY_HEX}/g" \
        !          1885:         -e "s/SUN_SPK_HEX/${SUN_SPK_HEX}/g" \
        !          1886:         -e "s/SUN_CERT_HEX/${SUN_CERT_HEX}/g" \
        !          1887:         -e "s/SUN_CERT_PEM_HEX/${SUN_CERT_PEM_HEX}/g" \
        !          1888:                ${TEST_DATA}.in > ${TEST_DATA}
        !          1889:   done
        !          1890: done
        !          1891: #
        !          1892: for t in shunt-policies-nat-rw
        !          1893: do
        !          1894:   for h in alice venus sun
        !          1895:   do
        !          1896:     TEST_DATA="${TEST_DIR}/sql/${t}/hosts/${h}/${IPSEC_DIR}/data.sql"
        !          1897:     sed -e "s/CA_SPK_HEX/${CA_SPK_HEX}/g" \
        !          1898:         -e "s/CA_SPKI_HEX/${CA_SPKI_HEX}/g" \
        !          1899:         -e "s/CA_CERT_HEX/${CA_CERT_HEX}/g" \
        !          1900:         -e "s/ALICE_KEY_HEX/${ALICE_KEY_HEX}/g" \
        !          1901:         -e "s/ALICE_SPK_HEX/${ALICE_SPK_HEX}/g" \
        !          1902:         -e "s/ALICE_CERT_HEX/${ALICE_CERT_HEX}/g" \
        !          1903:         -e "s/VENUS_KEY_HEX/${VENUS_KEY_HEX}/g" \
        !          1904:         -e "s/VENUS_SPK_HEX/${VENUS_SPK_HEX}/g" \
        !          1905:         -e "s/VENUS_CERT_HEX/${VENUS_CERT_HEX}/g" \
        !          1906:         -e "s/SUN_KEY_HEX/${SUN_KEY_HEX}/g" \
        !          1907:         -e "s/SUN_SPK_HEX/${SUN_SPK_HEX}/g" \
        !          1908:         -e "s/SUN_CERT_HEX/${SUN_CERT_HEX}/g" \
        !          1909:         ${TEST_DATA}.in > ${TEST_DATA}
        !          1910:   done
        !          1911: done
        !          1912: 
        !          1913: ################################################################################
        !          1914: # Raw RSA keys                                                                 #
        !          1915: ################################################################################
        !          1916: 
        !          1917: MOON_PUB_DNS=`pki --pub --type rsa --outform dnskey --in ${MOON_KEY}`
        !          1918: #
        !          1919: SUN_PUB_DNS=`pki --pub --type rsa --outform dnskey --in ${SUN_KEY}`
        !          1920: #
        !          1921: for h in moon sun
        !          1922: do
        !          1923:   TEST_DATA="${TEST_DIR}/ikev2/net2net-rsa/hosts/${h}/etc/ipsec.conf"
        !          1924:   sed -e "s|MOON_PUB_DNS|${MOON_PUB_DNS}|g" \
        !          1925:       -e "s|SUN_PUB_DNS|${SUN_PUB_DNS}|g" \
        !          1926:       ${TEST_DATA}.in > ${TEST_DATA}
        !          1927: done

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>