Skip to content

Commit 615ddbe

Browse files
vdukhovnihs-viktor
andauthoredMar 15, 2025··
Use SHA3 for SLH with SHAKE (#187)
Co-authored-by: Viktor Dukhovni <ietf-dane@dukhovni.org>
1 parent 8c09b4a commit 615ddbe

File tree

4 files changed

+29
-20
lines changed

4 files changed

+29
-20
lines changed
 
-24 Bytes
Binary file not shown.

‎providers/ossl35/artifacts_cms_v3.zip

-46 Bytes
Binary file not shown.

‎providers/ossl35/check_certs.sh

+20-13
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ do
2727
set -o pipefail
2828
shopt -s nullglob
2929
pubs=()
30+
set -- "$tmp"/*-"${mldsa_oids[0]}"_*.der
31+
if [[ $# -eq 0 ]]; then exit 2; fi
3032
for form in seed expandedkey both ta
3133
do
3234
pubout="$tmp/${mldsa_oids[0]}_${form}_pub.der"
@@ -66,8 +68,11 @@ do
6668
"${mldsa_oids[0]}"
6769
fi
6870
)
69-
if [[ $? -ne 0 ]]; then ok=N; else ok=Y; fi
70-
printf "%s,%s\n" "${mldsa_oids[0]}" "$ok"
71+
case $? in
72+
0) printf "%s,%s\n" "${mldsa_oids[0]}" "Y";;
73+
1) printf "%s,%s\n" "${mldsa_oids[0]}" "N";;
74+
*) : ignored ;;
75+
esac
7176

7277
#
7378
# SLH-DSA
@@ -89,12 +94,13 @@ do
8994
openssl verify -verify_depth 0 -trusted "$obj" "$obj" >/dev/null
9095
count=$((count + 1))
9196
done
92-
if [[ $count -ne 1 ]]; then
93-
die 'Missing TA for %s\n' "${oid}"
94-
fi
97+
if [[ $count -eq 0 ]]; then exit 2; fi
9598
)
96-
if [[ $? -ne 0 ]]; then ok=N; else ok=Y; fi
97-
printf "%s,%s\n" "${oid}" "$ok"
99+
case $? in
100+
0) printf "%s,%s\n" "${oid}" "Y";;
101+
1) printf "%s,%s\n" "${oid}" "N";;
102+
*) : ignored ;;
103+
esac
98104
done
99105

100106
#
@@ -104,6 +110,8 @@ do
104110
set -e
105111
set -o pipefail
106112
shopt -s nullglob
113+
set -- "$tmp"/*-"${mlkem_oids[0]}"_*.der
114+
if [[ $# -eq 0 ]]; then exit 2; fi
107115
count=0; for ta in "$tmp"/*-"${mldsa_oids[0]}_ta.der"
108116
do
109117
if [[ $count > 0 ]]; then
@@ -112,10 +120,6 @@ do
112120
fi
113121
count=$((count + 1))
114122
done
115-
if [[ $count -ne 1 ]]; then
116-
die 'No TA file for %s\n' \
117-
"${mldsa_oids[0]}"
118-
fi
119123
count=0; for ct in "$tmp"/*-"${mlkem_oids[0]}_ciphertext.bin"
120124
do
121125
if [[ $count > 0 ]]; then
@@ -178,8 +182,11 @@ do
178182
"${mlkem_oids[0]}"
179183
fi
180184
)
181-
if [[ $? -ne 0 ]]; then ok=N; else ok=Y; fi
182-
printf "%s,%s\n" "${mlkem_oids[0]}" "$ok"
185+
case $? in
186+
0) printf "%s,%s\n" "${mldsa_oids[0]}" "Y";;
187+
1) printf "%s,%s\n" "${mldsa_oids[0]}" "N";;
188+
*) : ignored ;;
189+
esac
183190

184191
unset "mldsa_oids[0]"
185192
unset "mlkem_oids[0]"

‎providers/ossl35/gen.sh

+9-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ slh3s_names=(slh-dsa-shake-{128,192,256}s)
1414
slh3s_oids=(2.16.840.1.101.3.4.3.{26,28,30})
1515
slh3f_names=(slh-dsa-shake-{128,192,256}f)
1616
slh3f_oids=(2.16.840.1.101.3.4.3.{27,29,31})
17-
md_names=(sha{256,512,512})
17+
md2_names=(sha{256,512,512})
18+
md3_names=(sha3-{256,512,512})
1819

1920
mkdir -p cms
2021
printf 'Attack at dawn!\r\n' > cms/expected_plaintext.txt
@@ -74,7 +75,7 @@ do
7475
;;
7576
esac
7677

77-
gencms "${mldsa_names[0]}" "${mldsa_oids[0]}" "${md_names[0]}"
78+
gencms "${mldsa_names[0]}" "${mldsa_oids[0]}" "${md2_names[0]}"
7879

7980
#
8081
# SLH-DSA
@@ -112,10 +113,10 @@ do
112113
-addext "basicConstraints=critical,CA:true" \
113114
-addext "keyUsage=critical,keyCertSign,cRLSign" -outform DER
114115

115-
gencms "${slh2f_names[0]}" "${slh2f_oids[0]}" "${md_names[0]}"
116-
gencms "${slh2s_names[0]}" "${slh2s_oids[0]}" "${md_names[0]}"
117-
gencms "${slh3f_names[0]}" "${slh3f_oids[0]}" "${md_names[0]}"
118-
gencms "${slh3s_names[0]}" "${slh3s_oids[0]}" "${md_names[0]}"
116+
gencms "${slh2f_names[0]}" "${slh2f_oids[0]}" "${md2_names[0]}"
117+
gencms "${slh2s_names[0]}" "${slh2s_oids[0]}" "${md2_names[0]}"
118+
gencms "${slh3f_names[0]}" "${slh3f_oids[0]}" "${md3_names[0]}"
119+
gencms "${slh3s_names[0]}" "${slh3s_oids[0]}" "${md3_names[0]}"
119120

120121
#
121122
# ML-KEM
@@ -149,7 +150,8 @@ do
149150
-out "${mlkem_der}_ciphertext.bin" \
150151
-secret "${mlkem_der}_ss.bin"
151152
#
152-
unset "md_names[0]"; md_names=("${md_names[@]}")
153+
unset "md2_names[0]"; md2_names=("${md2_names[@]}")
154+
unset "md3_names[0]"; md3_names=("${md3_names[@]}")
153155
unset "mldsa_names[0]"; mldsa_names=("${mldsa_names[@]}")
154156
unset "mlkem_names[0]"; mlkem_names=("${mlkem_names[@]}")
155157
unset "slh2f_names[0]"; slh2f_names=("${slh2f_names[@]}")

0 commit comments

Comments
 (0)
Please sign in to comment.