Skip to content

Commit

Permalink
fixup! asn1Coding instead of ossl asn1parse
Browse files Browse the repository at this point in the history
asn1parse is broken in ossl 3.2.0
  • Loading branch information
Florian Wernli committed Jan 29, 2024
1 parent 708083e commit 7c2f1e8
Showing 1 changed file with 31 additions and 11 deletions.
42 changes: 31 additions & 11 deletions tests/tpem_encoder
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,35 @@ sed -e "s/#pkcs11-module-encode-key-uri-to-pem/pkcs11-module-encode-key-uri-to-p
"${OPENSSL_CONF}" > "${OPENSSL_CONF}.encode_to_pem"
OPENSSL_CONF=${OPENSSL_CONF}.encode_to_pem

cat <<EOF > "${TMPPDIR}/pk11-uri.asn1def"
pk11-uri { }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
pk11-uri ::= SEQUENCE {
type OBJECT IDENTIFIER,
uri UTF8String
}
END
EOF

make-pkey-pem() {
URI=$1
OUT=$2

RANDOM_HEX=$(od -A n -N 15 -t x1 /dev/random)
TMP_FILE="${TMPPDIR}/pem-encoder-${RANDOM_HEX}.cnf"
cat > "${TMP_FILE}" << EOF
asn1=SEQUENCE:pk11-uri
[pk11-uri]
type=OID:2.5.4.83
uri=UTF8:${URI}
TMP_FILE="${TMPPDIR}/pem-encoder-${RANDOM_HEX// /}"
cat > "${TMP_FILE}.asg" << EOF
dp pk11-uri.pk11-uri
type 2.5.4.83
uri ${URI}
EOF
asn1Coding --output="${TMP_FILE}.asn1" "${TMPPDIR}/pk11-uri.asn1def" "${TMP_FILE}.asg"
{
echo "-----BEGIN PRIVATE KEY PK11-URI-----"
$CHECKER openssl base64 -in <( $CHECKER openssl asn1parse -noout -out - -genconf "${TMP_FILE}" )
base64 "${TMP_FILE}.asn1"
echo "-----END PRIVATE KEY PK11-URI-----"
} > "${OUT}"
rm "${TMP_FILE}"
rm "${TMP_FILE}.asg" "${TMP_FILE}.asn1"
}

sign-verify() {
Expand All @@ -37,7 +48,7 @@ sign-verify() {
FILE=$3

RANDOM_HEX=$(od -A n -N 15 -t x1 /dev/random)
TMP_FILE="${TMPPDIR}/sign-verify-pem-encoder-${RANDOM_HEX}.bin"
TMP_FILE="${TMPPDIR}/sign-verify-pem-encoder-${RANDOM_HEX// /}.bin"

$CHECKER openssl pkeyutl -sign -rawin -digest sha256 \
-inkey "${PRIV_KEY}" \
Expand Down Expand Up @@ -98,10 +109,19 @@ sign-verify "${TMPPDIR}/ec-pkey-uri.pem" \

title PARA "Test ambiguous key is unusable"

make-pkey-pem "${BASEURI}" "${TMPPDIR}/priuri-pkey.pem"
make-pkey-pem "${BASEURI}" "${TMPPDIR}/baseuri-key.pem"
FAIL=0
ossl '
pkey -in "${TMPPDIR}/baseuri-key.pem"' || FAIL=1
if [ $FAIL -eq 0 ]; then
echo "Should fail because the pem references multiple and/or non-private keys"
exit 1
fi

make-pkey-pem "${PUBURI}" "${TMPPDIR}/puburi-key.pem"
FAIL=0
ossl '
pkey -in "${TMPPDIR}/priuri-pkey.pem"' || FAIL=1
pkey -in "${TMPPDIR}/puburi-key.pem"' || FAIL=1
if [ $FAIL -eq 0 ]; then
echo "Should fail because the pem references multiple and/or non-private keys"
exit 1
Expand Down

0 comments on commit 7c2f1e8

Please sign in to comment.