tpm2: Extend asym key test case data generation script with sm4

Extend the test case data generation script with sm4. Since several
distros' openssl do not support sm4, we need to test for whether sm4
is supported by the installed openssl.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
This commit is contained in:
Stefan Berger 2021-09-01 15:42:55 +00:00 committed by Stefan Berger
parent 4c19adce30
commit a9657246e2

View File

@ -114,6 +114,45 @@ function do_tdes() {
done
}
function do_sm4() {
local data="$1"
local osslflag="$2"
for keysize in 128; do
tmp=SM4_KEY_${keysize}
key=$(eval echo \$$tmp)
for mode in ecb cbc cfb ofb ctr; do
cipher="sm4-${mode}"
bs=$((128 / 8))
iv=""
ivparm=""
case $mode in
ecb)
;;
ctr)
v=255
for ((c=0; c < bs; c++)); do
iv="$(printf "%02x" $v)${iv}"
v=$((v - 1))
done
ivparm="-iv ${iv}"
;;
*)
for ((c=0; c < bs; c++)); do
iv="${iv}$(printf "%02x" $c)"
done
ivparm="-iv ${iv}"
;;
esac
echo -n "$cipher: "
openssl enc -e -K "${key}" ${ivparm} -${cipher} -in <(echo -en "$data") ${osslflag} | \
od -t x1 -w128 -An | \
sed -n 's/ \([a-f0-9]\{2\}\)/ 0x\1/pg'
done
done
}
AES_KEY_128='2b7e151628aed2a6abf7158809cf4f3c'
AES_KEY_192='8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b'
AES_KEY_256='603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4'
@ -145,3 +184,12 @@ CAMELLIA_DATA_IN=${AES_DATA_IN}
echo "----- CAMELLIA -----"
do_camellia "${CAMELLIA_DATA_IN}" ""
echo "--------------------"
if [ -n "$(openssl enc -ciphers | grep sm4)" ]; then
SM4_KEY_128='0123456789abcdeffedcba9876543210'
SM4_DATA_IN='\xaa\xaa\xaa\xaa\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xbb\xbb\xbb\xbb'
echo "-------- SM4 -------"
do_sm4 "${SM4_DATA_IN}" ""
echo "--------------------"
fi