blob: b2cef4b33f8a05585f5e537df91733019f4ecff6 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/bin/sh
2# shellcheck disable=SC2059
3
4run_md_test () {
5 [ $# -ge 3 ] || {
6 echo "Error: insufficient args to run_md_test()" >&2
7 exit 1
8 }
9 DGST="$1"; shift
10 INP="$1"; shift
11 EXP="$1"; shift
12 printf "Testing digest %s: " "$DGST" >&2
13 OUT="$(printf "$INP" | openssl dgst -"$DGST" "$@")" || exit 1
14 [ -z "${OUT%%*"$EXP"}" ] || {
15 printf "Failure: expected: '%s', got '%s'\n" "$EXP" "$OUT" >&2
16 exit 1
17 }
18 echo OK >&2 || true
19}
20
21run_cipher_test() {
22 [ $# -ge 5 ] || {
23 echo "Error: insufficient args to run_cipher_test()" >&2
24 exit 1
25 }
26 ALG="$1"; shift
27 KEY="$1"; shift
28 IV="$1"; shift
29 CLEAR_TEXT="$1"; shift
30 CIPHER_TEXT="$1"; shift
31 printf "Testing %s encryption: " "$ALG" >&2
32 OUT="$(printf "$CLEAR_TEXT" | openssl enc -e -"$ALG" -K "$KEY" -iv "$IV" "$@" -a -A)" || exit 1
33 [ -z "${OUT%"$CIPHER_TEXT"}" ] || {
34 printf "Encryption failure: expected: '%s', got '%s'\n" "$CIPHER_TEXT" "$OUT" >&2
35 exit 1
36 }
37 echo OK >&2
38 printf "Testing %s decryption: " "$ALG" >&2
39 OUT="$(printf "$CIPHER_TEXT" | openssl enc -d -"$ALG" -K "$KEY" -iv "$IV" "$@" -a -A)" || exit 1
40 [ -z "${OUT%"$(printf "$CLEAR_TEXT")"}" ] || {
41 echo "Decryption failure!" >&2
42 echo "----------- expected hexdump -------------" >&2
43 printf "$CLEAR_TEXT" | hexdump -C
44 echo "------------ result hexdump --------------" >&2
45 echo "$OUT" | hexdump -C >&2
46 exit 1
47 }
48 echo OK >&2 || true
49}
50
51case "$1" in
52 libopenssl-gost_engine)
53 opkg install openssl-util
54 run_md_test \
55 md_gost12_256 \
56 012345678901234567890123456789012345678901234567890123456789012 \
57 9d151eefd8590b89daa6ba6cb74af9275dd051026bb149a452fd84e5e57b5500
58 export CRYPT_PARAMS="1.2.643.2.2.31.1"
59 run_cipher_test \
60 gost89 \
61 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF \
62 0000000000000000 \
63 "The quick brown fox jumps over the lazy dog\n" \
64 "B/QQLGGFxKCeZ24mm/pLycXfZXWRa4eb0TqJOiKF7maQEHze73oxXS61S/o="
65 ;;
66 gost_engine-util)
67 printf "Testing gost12sum: "
68 EXP=9d151eefd8590b89daa6ba6cb74af9275dd051026bb149a452fd84e5e57b5500
69 OUT=$(printf 012345678901234567890123456789012345678901234567890123456789012 | gost12sum)
70 [ -z "${OUT##"$EXP"*}" ] || {
71 printf "Failure: expected: '%s', got '%s'\n" "$EXP" "$OUT" >&2
72 exit 1
73 }
74 echo OK >&2 || true
75 ;;
76 *)
77 echo "Unexpected package '$1'" >&2
78 exit 1
79 ;;
80esac