Skip to content

Commit 8f36f78

Browse files
authored
Merge pull request #6400 from bandi13/ARIA-cipher
Aria cipher
2 parents ba4c96f + ecc138f commit 8f36f78

28 files changed

Lines changed: 2247 additions & 121 deletions

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,3 +419,6 @@ user_settings_asm.h
419419

420420
# auto-created CMake backups
421421
**/CMakeLists.txt.old
422+
423+
# MagicCrypto (ARIA Cipher)
424+
MagicCrypto

configure.ac

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2520,6 +2520,31 @@ fi
25202520
]
25212521
)
25222522

2523+
AC_ARG_ENABLE([aria],
2524+
[AS_HELP_STRING([--enable-aria],[Enable wolfSSL support for ARIA (default: disabled)])],
2525+
[ ENABLED_ARIA=$enableval ],
2526+
[ ENABLED_ARIA=no ]
2527+
)
2528+
if test "$ENABLED_ARIA" = "yes"
2529+
then
2530+
ARIA_DIR=MagicCrypto
2531+
# Enable dependency
2532+
ENABLED_OPENSSLEXTRA="yes"
2533+
CFLAGS="$CFLAGS -I$ARIA_DIR/include"
2534+
AM_CFLAGS="$AM_CFLAGS -DHAVE_ARIA -DOPENSSL_EXTRA"
2535+
AM_LDFLAGS="$AM_LDFLAGS -L$ARIA_DIR/lib -lMagicCrypto"
2536+
build_pwd="$(pwd)"
2537+
headers="mcapi_error.h mcapi_type.h mcapi.h"
2538+
for header in $headers
2539+
do
2540+
AC_CHECK_HEADER([$header], [], [
2541+
AC_MSG_ERROR([Error including $header. Please put the MagicCrypto library in $build_pwd.])
2542+
], [
2543+
extern int dummy_int_to_make_compiler_happy;
2544+
])
2545+
done
2546+
fi
2547+
25232548
AC_ARG_ENABLE([caam],
25242549
[AS_HELP_STRING([--enable-caam],[Enable wolfSSL support for CAAM (default: disabled)])],
25252550
[ ENABLED_CAAM=$enableval ],
@@ -8830,6 +8855,7 @@ AM_CONDITIONAL([BUILD_DTLS_CID],[test "x$ENABLED_DTLS_CID" = "xyes"])
88308855
AM_CONDITIONAL([BUILD_HPKE],[test "x$ENABLED_HPKE" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
88318856
AM_CONDITIONAL([BUILD_DTLS],[test "x$ENABLED_DTLS" = "xyes" || test "x$ENABLED_USERSETTINGS" = "xyes"])
88328857
AM_CONDITIONAL([BUILD_MAXQ10XX],[test "x$ENABLED_MAXQ10XX" = "xyes"])
8858+
AM_CONDITIONAL([BUILD_ARIA],[test "x$ENABLED_ARIA" = "xyes"])
88338859

88348860
if test "$ENABLED_REPRODUCIBLE_BUILD" != "yes" &&
88358861
(test "$ax_enable_debug" = "yes" ||
@@ -9146,6 +9172,7 @@ echo " * AES-CTR: $ENABLED_AESCTR"
91469172
echo " * AES-CFB: $ENABLED_AESCFB"
91479173
echo " * AES-OFB: $ENABLED_AESOFB"
91489174
echo " * AES-SIV: $ENABLED_AESSIV"
9175+
echo " * ARIA: $ENABLED_ARIA"
91499176
echo " * DES3: $ENABLED_DES3"
91509177
echo " * Camellia: $ENABLED_CAMELLIA"
91519178
echo " * SM4-ECB: $ENABLED_SM4_ECB"

scripts/sniffer-gen.sh

Lines changed: 68 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,93 @@
11
#!/bin/bash
2+
#set -x
23

34
# Run this script from the wolfSSL root
45
if [ ! -f wolfssl/ssl.h ]; then
56
echo "Run from the wolfssl root"
67
exit 1
78
fi
89

9-
run_sequence() {
10-
if [ "$1" == "dh" ] || [ "$1" == "ecc" ]; then
11-
# TLS v1.3
12-
./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256 &
13-
sleep 0.1
14-
./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256
15-
16-
./examples/server/server -v 4 -l TLS13-AES256-GCM-SHA384 &
17-
sleep 0.1
18-
./examples/client/client -v 4 -l TLS13-AES256-GCM-SHA384
19-
20-
./examples/server/server -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 &
21-
sleep 0.1
22-
./examples/client/client -v 4 -l TLS13-CHACHA20-POLY1305-SHA256
23-
fi
24-
if [ "$1" == "dh-resume" ] || [ "$1" == "ecc-resume" ]; then
25-
# TLS v1.3 Resumption
26-
./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256 -r &
27-
sleep 0.1
28-
./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256 -r
10+
server_pid=0
11+
tcpdump_pid=0
2912

30-
./examples/server/server -v 4 -l TLS13-AES256-GCM-SHA384 -r &
31-
sleep 0.1
32-
./examples/client/client -v 4 -l TLS13-AES256-GCM-SHA384 -r
33-
34-
./examples/server/server -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -r &
35-
sleep 0.1
36-
./examples/client/client -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -r
37-
fi
38-
39-
if [ "$1" == "x25519" ]; then
40-
# TLS v1.3
41-
./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem &
42-
sleep 0.1
43-
./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem
13+
cleanup() {
14+
if [ "$server_pid" -ne 0 ]; then kill $server_pid; server_pid=0; fi
15+
if [ "$tcpdump_pid" -ne 0 ]; then sleep 1; kill -15 $tcpdump_pid; tcpdump_pid=0; fi
16+
}
17+
trap cleanup EXIT INT TERM HUP
4418

45-
./examples/server/server -v 4 -l TLS13-AES256-GCM-SHA384 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem &
46-
sleep 0.1
47-
./examples/client/client -v 4 -l TLS13-AES256-GCM-SHA384 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem
19+
set -o pipefail
20+
prepend() { # Usage: cmd 2>&1 | prepend "sometext "
21+
while read line; do echo "${1}${line}"; done
22+
}
4823

49-
./examples/server/server -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem &
50-
sleep 0.1
51-
./examples/client/client -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem
24+
run_test() { # Usage: run_test <cipher> [serverArgs [clientArgs]]
25+
echo "Running test $1"
26+
CIPHER=$1
27+
if [ "$CIPHER" != "" ]; then
28+
CIPHER="-l $CIPHER"
5229
fi
53-
# Run: with x25519_resume
54-
if [ "$1" == "x25519-resume" ]; then
55-
# TLS v1.3 Resumption
56-
./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem &
57-
sleep 0.1
58-
./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem
59-
60-
./examples/server/server -v 4 -l TLS13-AES256-GCM-SHA384 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem &
61-
sleep 0.1
62-
./examples/client/client -v 4 -l TLS13-AES256-GCM-SHA384 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem
63-
64-
./examples/server/server -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem &
65-
sleep 0.1
66-
./examples/client/client -v 4 -l TLS13-CHACHA20-POLY1305-SHA256 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem
30+
stdbuf -oL -eL ./examples/server/server -i -x $CIPHER $2 2>&1 | prepend "[server] " &
31+
server_pid=$!
32+
((server_pid--)) # Get the first PID in the pipe
33+
sleep 0.1
34+
stdbuf -oL -eL ./examples/client/client $CIPHER $3 2>&1 | prepend "[client] "
35+
RET=$?
36+
if [ "$RET" != 0 ]; then
37+
echo "Error in test: $RET"
38+
exit $RET
6739
fi
40+
kill $server_pid; server_pid=0
41+
echo "Test passed: $1"
42+
}
6843

69-
# TLS v1.3 Hello Retry Request
70-
if [ "$1" == "hrr" ]; then
71-
# TLS v1.3 Hello Retry Request
72-
./examples/server/server -v 4 -i -x -g &
73-
server_pid=$!
74-
sleep 0.1
75-
./examples/client/client -v 4 -J
76-
kill $server_pid
44+
run_sequence() {
45+
if [ "$1" == "tls13-dh" ] || [ "$1" == "tls13-ecc" ]; then # TLS v1.3
46+
run_test "TLS13-AES128-GCM-SHA256" "-v 4" "-v 4"
47+
run_test "TLS13-AES256-GCM-SHA384" "-v 4" "-v 4"
48+
run_test "TLS13-CHACHA20-POLY1305-SHA256" "-v 4" "-v 4"
49+
elif [ "$1" == "tls12" ]; then # TLS v1.2
50+
run_test "ECDHE-ECDSA-AES128-GCM-SHA256" "-v 3 -A ./certs/ca-ecc-cert.pem -k ./certs/ecc-key.pem -c ./certs/intermediate/server-chain-ecc.pem -V" "-v 3 -A ./certs/ca-ecc-cert.pem -k ./certs/ecc-client-key.pem -c ./certs/intermediate/client-chain-ecc.pem -C"
51+
run_test "ECDHE-ECDSA-AES256-GCM-SHA384" "-v 3 -A ./certs/ca-ecc-cert.pem -k ./certs/ecc-key.pem -c ./certs/intermediate/server-chain-ecc.pem -V" "-v 3 -A ./certs/ca-ecc-cert.pem -k ./certs/ecc-client-key.pem -c ./certs/intermediate/client-chain-ecc.pem -C"
52+
elif [ "$1" == "tls13-dh-resume" ] || [ "$1" == "tls13-ecc-resume" ]; then # TLS v1.3 Resumption
53+
run_test "TLS13-AES128-GCM-SHA256" "-v 4 -r" "-v 4 -r"
54+
run_test "TLS13-AES256-GCM-SHA384" "-v 4 -r" "-v 4 -r"
55+
run_test "TLS13-CHACHA20-POLY1305-SHA256" "-v 4 -r" "-v 4 -r"
56+
elif [ "$1" == "tls13-x25519" ]; then # TLS v1.3
57+
run_test "TLS13-AES128-GCM-SHA256" "-v 4 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem"
58+
run_test "TLS13-AES256-GCM-SHA384" "-v 4 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem"
59+
run_test "TLS13-CHACHA20-POLY1305-SHA256" "-v 4 -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem"
60+
elif [ "$1" == "tls13-x25519-resume" ]; then # TLS v1.3 x25519 Resumption
61+
run_test "TLS13-AES128-GCM-SHA256" "-v 4 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem"
62+
run_test "TLS13-AES256-GCM-SHA384" "-v 4 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem"
63+
run_test "TLS13-CHACHA20-POLY1305-SHA256" "-v 4 -r -c ./certs/ed25519/server-ed25519.pem -k ./certs/ed25519/server-ed25519-priv.pem -A ./certs/ed25519/client-ed25519.pem" "-v 4 -r -c ./certs/ed25519/client-ed25519.pem -k ./certs/ed25519/client-ed25519-priv.pem -A ./certs/ed25519/root-ed25519.pem"
64+
elif [ "$1" == "tls13-hrr" ]; then # TLS v1.3 Hello Retry Request
65+
run_test "" "-v 4 -g" "-v 4 -J"
66+
else
67+
echo "Invalid test"
68+
exit -1
7769
fi
78-
sleep 1
7970
}
8071

8172
run_capture(){
82-
echo -e "\nconfiguring and building wolfssl..."
73+
echo -e "\nconfiguring and building wolfssl ($1)..."
8374
./configure --enable-sniffer $2 1>/dev/null || exit $?
8475
make 1>/dev/null || exit $?
8576
echo "starting capture"
86-
tcpdump -i lo0 -nn port 11111 -w ./scripts/sniffer-tls13-$1.pcap &
77+
tcpdump -i lo -n port 11111 -w ./scripts/sniffer-${1}.pcap -U &
8778
tcpdump_pid=$!
8879
run_sequence $1
89-
kill $tcpdump_pid
80+
sleep 1
81+
kill -15 $tcpdump_pid; tcpdump_pid=0
9082
}
9183

92-
run_capture "ecc" ""
93-
run_capture "ecc-resume" "--enable-session-ticket"
94-
run_capture "dh" "--disable-ecc"
95-
run_capture "dh-resume" "--disable-ecc --enable-session-ticket"
96-
run_capture "x25519" "--enable-curve25519 --disable-dh --disable-ecc"
97-
run_capture "x25519-resume" "--enable-curve25519 --disable-dh --disable-ecc --enable-session-ticket"
98-
run_capture "hrr" "--disable-dh CFLAGS=-DWOLFSSL_SNIFFER_WATCH"
84+
run_capture "tls12" ""
85+
run_capture "tls13-ecc" ""
86+
run_capture "tls13-ecc-resume" "--enable-session-ticket"
87+
run_capture "tls13-dh" "--disable-ecc"
88+
run_capture "tls13-dh-resume" "--disable-ecc --enable-session-ticket"
89+
run_capture "tls13-x25519" "--enable-curve25519 --disable-dh --disable-ecc"
90+
run_capture "tls13-x25519-resume" "--enable-curve25519 --disable-dh --disable-ecc --enable-session-ticket"
91+
run_capture "tls13-hrr" "--disable-dh CFLAGS=-DWOLFSSL_SNIFFER_WATCH"
92+
93+
echo "Tests passed in $SECONDS seconds"

src/include.am

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -791,3 +791,8 @@ endif !BUILD_CRYPTONLY
791791

792792

793793
endif !BUILD_FIPS_RAND
794+
795+
if BUILD_ARIA
796+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/aria/aria-crypt.c
797+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/aria/aria-cryptocb.c
798+
endif

0 commit comments

Comments
 (0)