54 lines
1.4 KiB
Bash
54 lines
1.4 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
|
||
|
|
# http://redsymbol.net/articles/unofficial-bash-strict-mode/
|
||
|
|
set -euo pipefail
|
||
|
|
IFS=$'\n\t'
|
||
|
|
|
||
|
|
password="hunter2"
|
||
|
|
passout="pass:${password}"
|
||
|
|
|
||
|
|
openssl genrsa -out rsa_sk.pkcs1.pem 1024
|
||
|
|
|
||
|
|
openssl pkcs8 -topk8 -in rsa_sk.pkcs1.pem -outform DER -out rsa_sk.pkcs8.der -nocrypt
|
||
|
|
|
||
|
|
gen_pkcs8 () {
|
||
|
|
local aes_mode="${1:?}"
|
||
|
|
local prf="${2:?}"
|
||
|
|
|
||
|
|
openssl pkcs8 \
|
||
|
|
-topk8 \
|
||
|
|
-in rsa_sk.pkcs1.pem \
|
||
|
|
-v2 "$aes_mode" \
|
||
|
|
-v2prf "$prf" \
|
||
|
|
-iter 10 \
|
||
|
|
-passout "$passout" \
|
||
|
|
-outform DER -out "rsa_sk_${aes_mode}_${prf}.pkcs8.der"
|
||
|
|
}
|
||
|
|
|
||
|
|
for aes_mode in "aes-128-cbc" "aes-192-cbc" "aes-256-cbc"
|
||
|
|
do
|
||
|
|
for prf in "hmacWithSHA1" "hmacWithSHA224" "hmacWithSHA256" "hmacWithSHA384" "hmacWithSHA512"
|
||
|
|
do
|
||
|
|
gen_pkcs8 "$aes_mode" "$prf"
|
||
|
|
done
|
||
|
|
done
|
||
|
|
|
||
|
|
extract () {
|
||
|
|
local aes_mode="${1:?}"
|
||
|
|
local prf="${2:?}"
|
||
|
|
local algid_len="${3:?}"
|
||
|
|
|
||
|
|
dd bs=1 skip=4 count="$algid_len" if="rsa_sk_${aes_mode}_${prf}.pkcs8.der" of="pbes2_${aes_mode}_${prf}_algid.der"
|
||
|
|
dd bs=1 skip="$(expr $algid_len + 8)" if="rsa_sk_${aes_mode}_${prf}.pkcs8.der" of="pbes2_${aes_mode}_${prf}_ciphertext.bin"
|
||
|
|
}
|
||
|
|
|
||
|
|
for aes_mode in "aes-128-cbc" "aes-192-cbc" "aes-256-cbc"
|
||
|
|
do
|
||
|
|
extract "$aes_mode" "hmacWithSHA1" 74
|
||
|
|
|
||
|
|
for prf in "hmacWithSHA224" "hmacWithSHA256" "hmacWithSHA384" "hmacWithSHA512"
|
||
|
|
do
|
||
|
|
extract "$aes_mode" "$prf" 88
|
||
|
|
done
|
||
|
|
done
|