diff --git a/providers/leancrypto/README.md b/providers/leancrypto/README.md new file mode 100644 index 0000000..e9a0ad2 --- /dev/null +++ b/providers/leancrypto/README.md @@ -0,0 +1,10 @@ +# Generation of X.509 CA certfificates with leancrypto + +Use the script `gen.sh` to generate X.509 CA certificates using the leancrypto +generator. Follow the execution steps outlined in this script at the top. + +# Validation of X.509 certificates from other providers + +Use the script `leancrypto_check_with_ietf.sh` to validate the leancrypto +X.509 implementation with other providers. Follow the execution steps outlined +in this script at the top. diff --git a/providers/leancrypto/artifacts_certs_r4.zip b/providers/leancrypto/artifacts_certs_r4.zip new file mode 100644 index 0000000..026998b Binary files /dev/null and b/providers/leancrypto/artifacts_certs_r4.zip differ diff --git a/providers/leancrypto/compatMatrices/artifacts_certs_r4/bc_leancrypto.csv b/providers/leancrypto/compatMatrices/artifacts_certs_r4/bc_leancrypto.csv new file mode 100644 index 0000000..6874ff5 --- /dev/null +++ b/providers/leancrypto/compatMatrices/artifacts_certs_r4/bc_leancrypto.csv @@ -0,0 +1,12 @@ +key_algorithm_oid,test_result +2.16.840.1.101.3.4.3.26,Y +2.16.840.1.101.3.4.3.27,Y +2.16.840.1.101.3.4.3.28,Y +2.16.840.1.101.3.4.3.29,Y +2.16.840.1.101.3.4.3.30,Y +2.16.840.1.101.3.4.3.31,Y +2.16.840.1.101.3.4.3.17,Y +2.16.840.1.101.3.4.3.18,Y +2.16.840.1.101.3.4.3.19,Y +2.16.840.1.114027.80.8.1.23,Y +2.16.840.1.114027.80.8.1.30,Y diff --git a/providers/leancrypto/compatMatrices/artifacts_certs_r4/carl-redhound_leancrypto.csv b/providers/leancrypto/compatMatrices/artifacts_certs_r4/carl-redhound_leancrypto.csv new file mode 100644 index 0000000..0fe2d6c --- /dev/null +++ b/providers/leancrypto/compatMatrices/artifacts_certs_r4/carl-redhound_leancrypto.csv @@ -0,0 +1,10 @@ +key_algorithm_oid,test_result +2.16.840.1.101.3.4.3.26,Y +2.16.840.1.101.3.4.3.27,Y +2.16.840.1.101.3.4.3.28,Y +2.16.840.1.101.3.4.3.29,Y +2.16.840.1.101.3.4.3.30,Y +2.16.840.1.101.3.4.3.31,Y +2.16.840.1.101.3.4.3.17,Y +2.16.840.1.101.3.4.3.18,Y +2.16.840.1.101.3.4.3.19,Y diff --git a/providers/leancrypto/compatMatrices/artifacts_certs_r4/cht_leancrypto.csv b/providers/leancrypto/compatMatrices/artifacts_certs_r4/cht_leancrypto.csv new file mode 100644 index 0000000..6874ff5 --- /dev/null +++ b/providers/leancrypto/compatMatrices/artifacts_certs_r4/cht_leancrypto.csv @@ -0,0 +1,12 @@ +key_algorithm_oid,test_result +2.16.840.1.101.3.4.3.26,Y +2.16.840.1.101.3.4.3.27,Y +2.16.840.1.101.3.4.3.28,Y +2.16.840.1.101.3.4.3.29,Y +2.16.840.1.101.3.4.3.30,Y +2.16.840.1.101.3.4.3.31,Y +2.16.840.1.101.3.4.3.17,Y +2.16.840.1.101.3.4.3.18,Y +2.16.840.1.101.3.4.3.19,Y +2.16.840.1.114027.80.8.1.23,Y +2.16.840.1.114027.80.8.1.30,Y diff --git a/providers/leancrypto/compatMatrices/artifacts_certs_r4/corey-digicert_leancrypto.csv b/providers/leancrypto/compatMatrices/artifacts_certs_r4/corey-digicert_leancrypto.csv new file mode 100644 index 0000000..0fe2d6c --- /dev/null +++ b/providers/leancrypto/compatMatrices/artifacts_certs_r4/corey-digicert_leancrypto.csv @@ -0,0 +1,10 @@ +key_algorithm_oid,test_result +2.16.840.1.101.3.4.3.26,Y +2.16.840.1.101.3.4.3.27,Y +2.16.840.1.101.3.4.3.28,Y +2.16.840.1.101.3.4.3.29,Y +2.16.840.1.101.3.4.3.30,Y +2.16.840.1.101.3.4.3.31,Y +2.16.840.1.101.3.4.3.17,Y +2.16.840.1.101.3.4.3.18,Y +2.16.840.1.101.3.4.3.19,Y diff --git a/providers/leancrypto/compatMatrices/artifacts_certs_r4/cryptonext-cnsprovider_leancrypto.csv b/providers/leancrypto/compatMatrices/artifacts_certs_r4/cryptonext-cnsprovider_leancrypto.csv new file mode 100644 index 0000000..0fe2d6c --- /dev/null +++ b/providers/leancrypto/compatMatrices/artifacts_certs_r4/cryptonext-cnsprovider_leancrypto.csv @@ -0,0 +1,10 @@ +key_algorithm_oid,test_result +2.16.840.1.101.3.4.3.26,Y +2.16.840.1.101.3.4.3.27,Y +2.16.840.1.101.3.4.3.28,Y +2.16.840.1.101.3.4.3.29,Y +2.16.840.1.101.3.4.3.30,Y +2.16.840.1.101.3.4.3.31,Y +2.16.840.1.101.3.4.3.17,Y +2.16.840.1.101.3.4.3.18,Y +2.16.840.1.101.3.4.3.19,Y diff --git a/providers/leancrypto/compatMatrices/artifacts_certs_r4/cryptonext_leancrypto.csv b/providers/leancrypto/compatMatrices/artifacts_certs_r4/cryptonext_leancrypto.csv new file mode 100644 index 0000000..0fe2d6c --- /dev/null +++ b/providers/leancrypto/compatMatrices/artifacts_certs_r4/cryptonext_leancrypto.csv @@ -0,0 +1,10 @@ +key_algorithm_oid,test_result +2.16.840.1.101.3.4.3.26,Y +2.16.840.1.101.3.4.3.27,Y +2.16.840.1.101.3.4.3.28,Y +2.16.840.1.101.3.4.3.29,Y +2.16.840.1.101.3.4.3.30,Y +2.16.840.1.101.3.4.3.31,Y +2.16.840.1.101.3.4.3.17,Y +2.16.840.1.101.3.4.3.18,Y +2.16.840.1.101.3.4.3.19,Y diff --git a/providers/leancrypto/compatMatrices/artifacts_certs_r4/entrust_leancrypto.csv b/providers/leancrypto/compatMatrices/artifacts_certs_r4/entrust_leancrypto.csv new file mode 100644 index 0000000..0fe2d6c --- /dev/null +++ b/providers/leancrypto/compatMatrices/artifacts_certs_r4/entrust_leancrypto.csv @@ -0,0 +1,10 @@ +key_algorithm_oid,test_result +2.16.840.1.101.3.4.3.26,Y +2.16.840.1.101.3.4.3.27,Y +2.16.840.1.101.3.4.3.28,Y +2.16.840.1.101.3.4.3.29,Y +2.16.840.1.101.3.4.3.30,Y +2.16.840.1.101.3.4.3.31,Y +2.16.840.1.101.3.4.3.17,Y +2.16.840.1.101.3.4.3.18,Y +2.16.840.1.101.3.4.3.19,Y diff --git a/providers/leancrypto/compatMatrices/artifacts_certs_r4/kris_leancrypto.csv b/providers/leancrypto/compatMatrices/artifacts_certs_r4/kris_leancrypto.csv new file mode 100644 index 0000000..0fe2d6c --- /dev/null +++ b/providers/leancrypto/compatMatrices/artifacts_certs_r4/kris_leancrypto.csv @@ -0,0 +1,10 @@ +key_algorithm_oid,test_result +2.16.840.1.101.3.4.3.26,Y +2.16.840.1.101.3.4.3.27,Y +2.16.840.1.101.3.4.3.28,Y +2.16.840.1.101.3.4.3.29,Y +2.16.840.1.101.3.4.3.30,Y +2.16.840.1.101.3.4.3.31,Y +2.16.840.1.101.3.4.3.17,Y +2.16.840.1.101.3.4.3.18,Y +2.16.840.1.101.3.4.3.19,Y diff --git a/providers/leancrypto/compatMatrices/artifacts_certs_r4/seventhsense.ai_leancrypto.csv b/providers/leancrypto/compatMatrices/artifacts_certs_r4/seventhsense.ai_leancrypto.csv new file mode 100644 index 0000000..6874ff5 --- /dev/null +++ b/providers/leancrypto/compatMatrices/artifacts_certs_r4/seventhsense.ai_leancrypto.csv @@ -0,0 +1,12 @@ +key_algorithm_oid,test_result +2.16.840.1.101.3.4.3.26,Y +2.16.840.1.101.3.4.3.27,Y +2.16.840.1.101.3.4.3.28,Y +2.16.840.1.101.3.4.3.29,Y +2.16.840.1.101.3.4.3.30,Y +2.16.840.1.101.3.4.3.31,Y +2.16.840.1.101.3.4.3.17,Y +2.16.840.1.101.3.4.3.18,Y +2.16.840.1.101.3.4.3.19,Y +2.16.840.1.114027.80.8.1.23,Y +2.16.840.1.114027.80.8.1.30,Y diff --git a/providers/leancrypto/gen.sh b/providers/leancrypto/gen.sh new file mode 100755 index 0000000..93a1350 --- /dev/null +++ b/providers/leancrypto/gen.sh @@ -0,0 +1,100 @@ +#!/bin/bash +# +# Written by Stephan Mueller +# +# Generate self-signed certificates with leancrypto +# +# Invoke the script with the following steps: +# +# 1. compile leancrypto with X.509 generator enabled +# 2. update variable LC_X509_GENERATOR below to point to the lc_x509_generator +# tool +# 3. execute this script - the resulting CA certificates are stored in +# $TARGETDIR (NOTE: The private keys are deleted in the gen_cert function.) +# + +LC_X509_GENERATOR="lc_x509_generator" + +TARGETDIR="artifacts_certs_r4" + +CERTTYPES_ML_DSA=" + ML-DSA87:2.16.840.1.101.3.4.3.19 + ML-DSA65:2.16.840.1.101.3.4.3.18 + ML-DSA44:2.16.840.1.101.3.4.3.17" + +CERTTYPES_SLH_DSA=" + SLH-DSA-SHAKE-256S:2.16.840.1.101.3.4.3.30 + SLH-DSA-SHAKE-256F:2.16.840.1.101.3.4.3.31 + SLH-DSA-SHAKE-192S:2.16.840.1.101.3.4.3.28 + SLH-DSA-SHAKE-192F:2.16.840.1.101.3.4.3.29 + SLH-DSA-SHAKE-128S:2.16.840.1.101.3.4.3.26 + SLH-DSA-SHAKE-128F:2.16.840.1.101.3.4.3.27" + +CERTTYPES_COMPOSITE_ML_DSA=" + ML-DSA65-ED25519:SHA512-2.16.840.1.114027.80.8.1.30 + ML-DSA44-ED25519:SHA512-2.16.840.1.114027.80.8.1.23" + +CERTTYPES="$CERTTYPES_ML_DSA $CERTTYPES_SLH_DSA $CERTTYPES_COMPOSITE_ML_DSA" + +################################################################################ +# No further configurations below this line +################################################################################ + +# Generate CA certificate +gen_cert() +{ + local input=$1 + + if [ -z "$input" ] + then + echo "Rejecting empty input" + exit 1 + fi + + local certtype=$(echo $input | cut -d":" -f1) + local fileext=$(echo $input | cut -d":" -f2) + + echo "Generating CA certificate for key type $certtype" + + CA_FILENAME="${certtype}-${fileext}_ta.der" + ${LC_X509_GENERATOR} \ + --keyusage digitalSignature \ + --keyusage keyEncipherment \ + --keyusage keyCertSign \ + --keyusage critical \ + --ca \ + --valid-from 1729527728 \ + --valid-to 2044210606 \ + --subject-cn "leancrypto test CA" \ + --subject-ou "leancrypto test OU" \ + --subject-o leancrypto \ + --subject-st Saxony \ + --subject-c DE \ + --issuer-cn "leancrypto test CA" \ + --issuer-ou "leancrypto test OU" \ + --issuer-o leancrypto \ + --issuer-st Saxony \ + --issuer-c DE \ + --serial 0102030405060708 \ + -o ${TARGETDIR}/${CA_FILENAME} \ + --sk-file ${TARGETDIR}/${CA_FILENAME}.privkey \ + --create-keypair ${certtype} + + if [ $? -eq 0 ] + then + echo "CA certificate generation successful" + else + echo "CA certificate generation failed" + exit 1 + fi + + rm -f ${TARGETDIR}/${CA_FILENAME}.privkey +} + +rm -rf $TARGETDIR +mkdir -p $TARGETDIR + +for i in $CERTTYPES +do + gen_cert $i +done diff --git a/providers/leancrypto/leancrypto_check_with_ietf.sh b/providers/leancrypto/leancrypto_check_with_ietf.sh new file mode 100755 index 0000000..f685a99 --- /dev/null +++ b/providers/leancrypto/leancrypto_check_with_ietf.sh @@ -0,0 +1,264 @@ +#!/bin/bash +# +# Written by Stephan Mueller +# +# Checker script to validate the X.509 certificates created by other +# crypto providers stored in +# https://github.com/IETF-Hackathon/pqc-certificates/providers +# +# To utilize this script, perform the following steps: +# +# 1. compile leancrypto with X.509 generator enabled +# 2. update variable LC_X509_CHECKER below to point to the lc_x509_generator +# tool +# 3. cd into the https://github.com/IETF-Hackathon/pqc-certificates/providers +# directory +# 4. Execute this script +# +# Expected result: no failures should be shown +# + +LC_X509_CHECKER="lc_x509_generator" + +TMPDIR="./tmp" + +global_failure_count=0 + +trap "rm -rf $TMPDIR" 0 1 2 3 15 + +color() +{ + bg=0 + echo -ne "\033[0m" + while [[ $# -gt 0 ]]; do + code=0 + case $1 in + black) code=30 ;; + red) code=31 ;; + green) code=32 ;; + yellow) code=33 ;; + blue) code=34 ;; + magenta) code=35 ;; + cyan) code=36 ;; + white) code=37 ;; + background|bg) bg=10 ;; + foreground|fg) bg=0 ;; + reset|off|default) code=0 ;; + bold|bright) code=1 ;; + esac + [[ $code == 0 ]] || echo -ne "\033[$(printf "%02d" $((code+bg)))m" + shift + done +} + +echo_success() +{ + echo $(color "green")[SUCCESS]$(color off) "$@" +} + +echo_fail() +{ + echo $(color "red")[FAILURE]$(color off) "$@" +} + +echo_info() +{ + echo $(color "magenta")[INFO]$(color off) "$@" +} + +check_one() { + local inputfile=$1 + + if [ ! -f "$inputfile" ] + then + echo_fail "Cannot find $inputfile" + exit 1 + fi + + echo "=== File $inputfile ===" + $LC_X509_CHECKER --print-x509 $inputfile + if [ $? -ne 0 ] + then + echo_fail "Parsing of file $inputfile was unsuccessful" + global_failure_count=$(($global_failure_count+1)) + else + echo_success "Parsing of file $inputfile was successful" + fi +} + +report_result() { + echo "=== Final Result ===" + if [ $global_failure_count -eq 0 ] + then + echo_success "No failures" + exit 0 + else + echo_fail "Total number of failures: $global_failure_count" + exit 1 + fi +} + +extract_files() { + local zipfile=$1 + + if [ ! -f "$zipfile" ] + then + echo_fail "Cannot find $zipfile" + exit 1 + fi + + rm -rf $TMPDIR + mkdir $TMPDIR + unzip $zipfile -d $TMPDIR +} + +bc_test() { + local slh_dsa_files="slh-dsa-shake-128f-2.16.840.1.101.3.4.3.27_ta.der slh-dsa-shake-128s-2.16.840.1.101.3.4.3.26_ta.der slh-dsa-shake-192f-2.16.840.1.101.3.4.3.29_ta.der slh-dsa-shake-192s-2.16.840.1.101.3.4.3.28_ta.der slh-dsa-shake-256f-2.16.840.1.101.3.4.3.31_ta.der slh-dsa-shake-256s-2.16.840.1.101.3.4.3.30_ta.der" + local composite_ml_dsa_files="MLDSA44-Ed25519-SHA512-2.16.840.1.114027.80.8.1.23_ta.der MLDSA65-Ed25519-SHA512-2.16.840.1.114027.80.8.1.30_ta.der" + local ml_dsa_files="ml-dsa-44-2.16.840.1.101.3.4.3.17_ta.der ml-dsa-65-2.16.840.1.101.3.4.3.18_ta.der ml-dsa-87-2.16.840.1.101.3.4.3.19_ta.der" + + local files="$slh_dsa_files $composite_ml_dsa_files $ml_dsa_files" + + extract_files "bc/artifacts_certs_r4.zip" + for i in $files + do + check_one "$TMPDIR/$i" + done +} + +redhound_test() { + local subdir="artifacts_certs_v4" + local slh_dsa_files="$subdir/slh-dsa-shake-128f-2.16.840.1.101.3.4.3.27_ta.der $subdir/slh-dsa-shake-128s-2.16.840.1.101.3.4.3.26_ta.der $subdir/slh-dsa-shake-192f-2.16.840.1.101.3.4.3.29_ta.der $subdir/slh-dsa-shake-192s-2.16.840.1.101.3.4.3.28_ta.der $subdir/slh-dsa-shake-256f-2.16.840.1.101.3.4.3.31_ta.der $subdir/slh-dsa-shake-256s-2.16.840.1.101.3.4.3.30_ta.der" + local ml_dsa_files="$subdir/ml-dsa-44-2.16.840.1.101.3.4.3.17_ta.der $subdir/ml-dsa-65-2.16.840.1.101.3.4.3.18_ta.der $subdir/ml-dsa-87-2.16.840.1.101.3.4.3.19_ta.der" + + local files="$slh_dsa_files $ml_dsa_files" + + extract_files "carl-redhound/artifacts_certs_r4.zip" + for i in $files + do + check_one "$TMPDIR/$i" + done +} + +cht_test() { + local subdir="artifacts_certs_r4" + local slh_dsa_files="$subdir/SLH-DSA-SHAKE-128f-2.16.840.1.101.3.4.3.27_ta.der $subdir/SLH-DSA-SHAKE-128s-2.16.840.1.101.3.4.3.26_ta.der $subdir/SLH-DSA-SHAKE-192f-2.16.840.1.101.3.4.3.29_ta.der $subdir/SLH-DSA-SHAKE-192s-2.16.840.1.101.3.4.3.28_ta.der $subdir/SLH-DSA-SHAKE-256f-2.16.840.1.101.3.4.3.31_ta.der $subdir/SLH-DSA-SHAKE-256s-2.16.840.1.101.3.4.3.30_ta.der" + local composite_ml_dsa_files="$subdir/id-MLDSA44-Ed25519-2.16.840.1.114027.80.8.1.23_ta.der $subdir/id-MLDSA65-Ed25519-2.16.840.1.114027.80.8.1.30_ta.der" + local ml_dsa_files="$subdir/ML-DSA-44-2.16.840.1.101.3.4.3.17_ta.der $subdir/ML-DSA-65-2.16.840.1.101.3.4.3.18_ta.der $subdir/ML-DSA-87-2.16.840.1.101.3.4.3.19_ta.der" + + local files="$slh_dsa_files $composite_ml_dsa_files $ml_dsa_files" + + extract_files "cht/artifacts_certs_r4.zip" + for i in $files + do + check_one "$TMPDIR/$i" + done +} + +corey_digicert_test() { + local ml_dsa_files="ML-DSA-44-2.16.840.1.101.3.4.3.17_ta.der ML-DSA-65-2.16.840.1.101.3.4.3.18_ta.der ML-DSA-87-2.16.840.1.101.3.4.3.19_ta.der" + + local files="$ml_dsa_files" + + extract_files "corey-digicert/artifacts_certs_r4.zip" + for i in $files + do + check_one "$TMPDIR/$i" + done +} + +cryptonext_test() { + local subdir="artifacts_certs_r4" + local slh_dsa_files="$subdir/SLH-DSA-SHAKE-128f-2.16.840.1.101.3.4.3.27_ta.der $subdir/SLH-DSA-SHAKE-128s-2.16.840.1.101.3.4.3.26_ta.der $subdir/SLH-DSA-SHAKE-192f-2.16.840.1.101.3.4.3.29_ta.der $subdir/SLH-DSA-SHAKE-192s-2.16.840.1.101.3.4.3.28_ta.der $subdir/SLH-DSA-SHAKE-256f-2.16.840.1.101.3.4.3.31_ta.der $subdir/SLH-DSA-SHAKE-256s-2.16.840.1.101.3.4.3.30_ta.der" + local ml_dsa_files="$subdir/ML-DSA-44-2.16.840.1.101.3.4.3.17_ta.der $subdir/ML-DSA-65-2.16.840.1.101.3.4.3.18_ta.der $subdir/ML-DSA-87-2.16.840.1.101.3.4.3.19_ta.der" + + local files="$slh_dsa_files $ml_dsa_files" + + extract_files "cryptonext/artifacts_certs_r4.zip" + for i in $files + do + check_one "$TMPDIR/$i" + done +} + +cryptonext_cnsprovider_test() { + local subdir="artifacts_certs_r4" + local slh_dsa_files="$subdir/SLH-DSA-SHAKE-128f-2.16.840.1.101.3.4.3.27_ta.der $subdir/SLH-DSA-SHAKE-128s-2.16.840.1.101.3.4.3.26_ta.der $subdir/SLH-DSA-SHAKE-192f-2.16.840.1.101.3.4.3.29_ta.der $subdir/SLH-DSA-SHAKE-192s-2.16.840.1.101.3.4.3.28_ta.der $subdir/SLH-DSA-SHAKE-256f-2.16.840.1.101.3.4.3.31_ta.der $subdir/SLH-DSA-SHAKE-256s-2.16.840.1.101.3.4.3.30_ta.der" + local ml_dsa_files="$subdir/ML-DSA-44-2.16.840.1.101.3.4.3.17_ta.der $subdir/ML-DSA-65-2.16.840.1.101.3.4.3.18_ta.der $subdir/ML-DSA-87-2.16.840.1.101.3.4.3.19_ta.der" + + local files="$slh_dsa_files $ml_dsa_files" + + extract_files "cryptonext-cnsprovider/artifacts_certs_r4.zip" + for i in $files + do + check_one "$TMPDIR/$i" + done +} + +entrust_test() { + local subdir="artifacts_certs_r4" + local ml_dsa_files="$subdir/ML-DSA-44-2.16.840.1.101.3.4.3.17_ta.der $subdir/ML-DSA-44-2.16.840.1.101.3.4.3.18_ta.der $subdir/ML-DSA-44-2.16.840.1.101.3.4.3.19_ta.der" + + local files="$ml_dsa_files" + + extract_files "entrust/artifacts_certs_r4.zip" + for i in $files + do + check_one "$TMPDIR/$i" + done +} + +kris_test() { + local subdir="artifacts_certs_r4" + local ml_dsa_files="$subdir/ml-dsa-44-2.16.840.1.101.3.4.3.17_ta.der $subdir/ml-dsa-65-2.16.840.1.101.3.4.3.18_ta.der $subdir/ml-dsa-87-2.16.840.1.101.3.4.3.19_ta.der" + + local files="$ml_dsa_files" + + extract_files "kris/artifacts_certs_r4.zip" + for i in $files + do + check_one "$TMPDIR/$i" + done +} + +seventhsense_test() { + local slh_dsa_files="SlhDsaShake128f-2.16.840.1.101.3.4.3.27_ta.der SlhDsaShake128s-2.16.840.1.101.3.4.3.26_ta.der SlhDsaShake192f-2.16.840.1.101.3.4.3.29_ta.der SlhDsaShake192s-2.16.840.1.101.3.4.3.28_ta.der SlhDsaShake256f-2.16.840.1.101.3.4.3.31_ta.der SlhDsaShake256s-2.16.840.1.101.3.4.3.30_ta.der" + local composite_ml_dsa_files="MlDsa44Ed25519-2.16.840.1.114027.80.8.1.23_ta.der MlDsa65Ed25519-2.16.840.1.114027.80.8.1.30_ta.der" + local ml_dsa_files="MlDsa44-2.16.840.1.101.3.4.3.17_ta.der MlDsa65-2.16.840.1.101.3.4.3.18_ta.der MlDsa87-2.16.840.1.101.3.4.3.19_ta.der" + + local files="$slh_dsa_files $composite_ml_dsa_files $ml_dsa_files" + + extract_files "seventhsense.ai/artifact_certs_r4.zip" + for i in $files + do + check_one "$TMPDIR/$i" + done +} + +leancrypto_test() { + local subdir="artifacts_certs_r4" + local slh_dsa_files="$subdir/SLH-DSA-SHAKE-128F-2.16.840.1.101.3.4.3.27_ta.der $subdir/SLH-DSA-SHAKE-128S-2.16.840.1.101.3.4.3.26_ta.der $subdir/SLH-DSA-SHAKE-192F-2.16.840.1.101.3.4.3.29_ta.der $subdir/SLH-DSA-SHAKE-192S-2.16.840.1.101.3.4.3.28_ta.der $subdir/SLH-DSA-SHAKE-256F-2.16.840.1.101.3.4.3.31_ta.der $subdir/SLH-DSA-SHAKE-256S-2.16.840.1.101.3.4.3.30_ta.der" + local composite_ml_dsa_files="$subdir/ML-DSA44-ED25519-SHA512-2.16.840.1.114027.80.8.1.23_ta.der $subdir/ML-DSA65-ED25519-SHA512-2.16.840.1.114027.80.8.1.30_ta.der" + local ml_dsa_files="$subdir/ML-DSA44-2.16.840.1.101.3.4.3.17_ta.der $subdir/ML-DSA65-2.16.840.1.101.3.4.3.18_ta.der $subdir/ML-DSA87-2.16.840.1.101.3.4.3.19_ta.der" + + local files="$slh_dsa_files $composite_ml_dsa_files $ml_dsa_files" + + extract_files "leancrypto/artifacts_certs_r4.zip" + for i in $files + do + check_one "$TMPDIR/$i" + done +} + +bc_test +redhound_test +cht_test +corey_digicert_test +cryptonext_test +cryptonext_cnsprovider_test +entrust_test +kris_test +seventhsense_test +leancrypto_test + +report_result diff --git a/providers/readme.md b/providers/readme.md index 2c40811..c7d501b 100644 --- a/providers/readme.md +++ b/providers/readme.md @@ -63,6 +63,13 @@ * Implementation: WolfSSL, which internally uses WolfSSL, which internally uses OpenQuantumSafe. No artifacts were provided since they would not be different from other OQS artifacts, but test vectors are provided which test parsing other providers' artifacts with WolfSSL. * Implementation link: https://github.com/wolfSSL +# Leancrypto + +* Provider short name: `leancrypto` +* Company name: +* Company website: +* Implementation: Open source certification path builder/validation library. +* Implementation link: https://github.com/smuellerDD/leancrypto # PQShield