#!/bin/sh

set -e

GEN_DUMP="debian/tests/helpers/gen_rsa_dump.sh"

# Defines the RSA private key-material, which
# should be found and extracted
PRIV_EXP=$(cat <<'EOF' | tr -d "\n"
00 b8 84 f6 3e d7 d6 8b 82 fa 3a d7 c2 38 50 
31 a9 33 3f 23 98 67 a9 22 fb 7b 7c 06 76 19 
01 dd c9 98 f2 45 ea ad 8f 41 9f 7c ae 2f 43 
22 f5 c4 2a 9d b1 b4 eb 65 57 dc 64 2d a8 0d 
ee aa 31 3d d9 34 79 bb 64 b3 47 ff c7 2b ee 
1b 54 f0 dc ca 54 3a 9d ad 08 17 7e 76 d1 e9 
33 34 92 76 a3 ff 29 07 a1 69 83 31 ca 20 4e 
d6 06 82 b1 4a ec 42 ee ee 4d 3d a0 90 8f c4 
7c c0 d0 2d 10 d2 2b 34 51 dd 3e de 86 46 0b 
4e 0e 28 8b ce 41 dd 34 ac 42 6e ce e8 45 7d 
52 93 fe f4 9f 9c 9c b2 2a 9a 90 bc b0 50 8b 
17 5d 7f e9 0a 8b 7f 4c b9 c3 3e c8 d5 ce 37 
1b 40 ce e6 03 1a 1a 0d 42 dc 35 67 f1 5d 4c 
59 6d 33 2f e7 75 53 e1 d5 92 cf 23 66 34 9e 
27 85 db a1 d0 35 2f c7 3c 9e b6 0a 5b c6 7e 
57 41 75 90 0a d4 45 e8 d9 7e 0c 91 09 cb bb 
6a fa 33 be 4a 62 6e 74 bf 48 cf a5 77 8f 3f 
df b1
EOF
)

PRIME_1=$(cat <<'EOF' | tr -d "\n"
00 de aa 7c 63 51 8f 95 5b 67 62 3e 06 6a 44 
6a e1 7e 70 1e 1f 6e e3 88 87 68 e9 e4 d7 a9 
22 7f 0a 18 a0 33 ce b9 0c 37 28 b9 2c 40 9a 
ea 1b d6 ea cb 37 df ef a6 d4 7c ad 2b fe 3f 
f3 f0 56 fe 3a 52 80 18 04 3e d9 ea 54 11 26 
af 69 e2 85 da 6f cd 0e 34 c7 6c d6 73 1e a5 
ca 9f 00 f8 8e 86 95 d9 50 29 67 82 6e 26 be 
b2 86 42 e6 82 c5 9e 71 e5 74 72 66 bf 42 78 
87 d8 38 c8 72 4d 5d 8f b5 
EOF
)

PRIME_2=$(cat <<'EOF' | tr -d "\n"
00 dd 44 c9 46 ae 31 9d e7 83 47 11 ca 81 e3 
c4 67 50 cd ac 66 e6 45 39 33 60 b4 7b 40 77 
aa 4b dd c6 1b 9b 8c c0 77 77 0e 04 cd cd 88 
5c 66 8e dd ee de 99 f7 f5 84 3b f9 7a a9 e9 
71 f2 eb aa ed 22 04 89 79 6e f4 5a a1 12 a2 
f7 49 d3 fb 1f 22 ee ef f0 cc 44 92 f5 94 9b 
00 68 99 7c d7 0a 4d d9 eb 7e 5e b9 01 80 b7 
1c 88 aa 97 18 89 6d 72 45 03 43 cb b4 64 31 
35 53 af 68 01 fa aa c2 7f
EOF
)

PUB_EXP="01 00 01"

# Combination of the parameters to feed into the script
KEYSPEC="\
PRIV_EXP=${PRIV_EXP}
PRIME_1=${PRIME_1}
PRIME_2=${PRIME_2}
PUB_EXP=${PUB_EXP}
"

AUTOPKGTEST_TMP="."

# Memory dump to process
DMP="${AUTOPKGTEST_TMP}/rsa-2048.dmp"

# Dump memory of process, which generates key material
sh ${GEN_DUMP} "$KEYSPEC" "$DMP"

# Performs key extraction
ACTUAL=$(rsakeyfind ${DMP} | tr -d "\n" )

# Compares, actual results with expected values
echo "${ACTUAL}" | grep -q "${PRIV_EXP}"
echo "${ACTUAL}" | grep -q "${PRIME_1}"
echo "${ACTUAL}" | grep -q "${PRIME_2}"
echo "${ACTUAL}" | grep -q "${PUB_EXP}"

rm "${DMP}"

exit 0
