Skip to content

Commit

Permalink
[test/recipes] Add RFC6979 deterministic DSA KATs in evptest format
Browse files Browse the repository at this point in the history
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
(Merged from #18809)
  • Loading branch information
slontis authored and hlandau committed Nov 30, 2022
1 parent 5375fd8 commit 6b3d287
Show file tree
Hide file tree
Showing 4 changed files with 323 additions and 3 deletions.
2 changes: 2 additions & 0 deletions test/evp_test.c
Expand Up @@ -3956,6 +3956,8 @@ static int parse(EVP_TEST *t)
t->s.curr, pp->key, pp->value);
return 0;
}
if (t->skip)
return 0;
}
}

Expand Down
4 changes: 3 additions & 1 deletion test/recipes/30-test_evp.t
Expand Up @@ -26,6 +26,7 @@ my $no_des = disabled("des");
my $no_dh = disabled("dh");
my $no_dsa = disabled("dsa");
my $no_ec = disabled("ec");
my $no_ec2m = disabled("ec2m");
my $no_sm2 = disabled("sm2");
my $no_siv = disabled("siv");

Expand Down Expand Up @@ -117,10 +118,11 @@ my @defltfiles = qw(
evppbe_pkcs12.txt
evppkey_kdf_scrypt.txt
evppkey_kdf_tls1_prf.txt
evppkey_rfc6979.txt
evppkey_rsa.txt
);
push @defltfiles, qw(evppkey_brainpool.txt) unless $no_ec;
push @defltfiles, qw(evppkey_ecdsa_rfc6979.txt) unless $no_ec;
push @defltfiles, qw(evppkey_dsa_rfc6979.txt) unless $no_dsa;
push @defltfiles, qw(evppkey_sm2.txt) unless $no_sm2;
push @defltfiles, qw(evpciph_aes_siv.txt) unless $no_siv;

Expand Down
304 changes: 304 additions & 0 deletions test/recipes/30-test_evp_data/evppkey_dsa_rfc6979.txt
@@ -0,0 +1,304 @@
#
# Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html

# Tests start with one of these keywords
# Cipher Decrypt Derive Digest Encoding KDF MAC PBE
# PrivPubKeyPair Sign Verify VerifyRecover
# and continue until a blank line. Lines starting with a pound sign are ignored.

Title = RFC 6979 deterministic DSA_1024 tests

PrivateKey=DSA_1024_PRIV
-----BEGIN PRIVATE KEY-----
MIIBSgIBADCCASsGByqGSM44BAEwggEeAoGBAIb1ygPc/rIlBj/4MKDHabndnWFT
rZHXzif3h8QyeLRH5lM7hrGL7W6KSLeEoUwlLFvg2/YLhtY4W9LxL7dj7Yhzq/0/
W6LgqMClkILqwFaTXlKdr3xhBGeJnHet7fyEbIgYcLexmytY+b4FIaFwAuO91rhm
he6Qs9mhsCt4Kxd5AhUAmW+Wf2yOOI2eKNAeIF+6lXpWmLECgYAHsPklRhULYlFL
t3HioMDOOH8DvabFa1BSCf8l/TwTPYm7zZfpBOCRFNmn3v3q38kHjqVE0uQBruzE
C7n7v3j9h5laEKHCfLd4m1lLp++1xDJqn+WaBw4TbbdxdUZK3KQXvl3OL0DRCkaj
o5Q/Jqt/2cA5j/jHbuClaCaoqI8dvQQWAhRBFgLLGabMw0SU152Y7x5+1a8l9w==
-----END PRIVATE KEY-----

PublicKey=DSA_1024_PUB
-----BEGIN PUBLIC KEY-----
MIIBtjCCASsGByqGSM44BAEwggEeAoGBAIb1ygPc/rIlBj/4MKDHabndnWFTrZHX
zif3h8QyeLRH5lM7hrGL7W6KSLeEoUwlLFvg2/YLhtY4W9LxL7dj7Yhzq/0/W6Lg
qMClkILqwFaTXlKdr3xhBGeJnHet7fyEbIgYcLexmytY+b4FIaFwAuO91rhmhe6Q
s9mhsCt4Kxd5AhUAmW+Wf2yOOI2eKNAeIF+6lXpWmLECgYAHsPklRhULYlFLt3Hi
oMDOOH8DvabFa1BSCf8l/TwTPYm7zZfpBOCRFNmn3v3q38kHjqVE0uQBruzEC7n7
v3j9h5laEKHCfLd4m1lLp++1xDJqn+WaBw4TbbdxdUZK3KQXvl3OL0DRCkajo5Q/
Jqt/2cA5j/jHbuClaCaoqI8dvQOBhAACgYBd9eAd7THQKX4nThaRwZL+WGj++eGa
hHdkVLEAzxb2U5IZWji5BSPiVC7mGHHARAy4fDIvxLTS7F4efsdm4b6NTOk1Q33B
HDyP1CYziTPr/nOcs0ZfTTZoxeRzUIJTseaC9ly9xPrpPC6iEjkOVJBahuIiMXC0
Tqp9pd2f/Pt/Ow==
-----END PUBLIC KEY-----

PrivPubKeyPair=DSA_1024_PRIV:DSA_1024_PUB

DigestSign = SHA1
Key = DSA_1024_PRIV
NonceType = deterministic
Input = "sample"
Output = 302C02142E1A0C2562B2912CAAF89186FB0F42001585DA55021429EFB6B0AFF2D7A68EB70CA313022253B9A88DF5

DigestVerify = SHA1
Key = DSA_1024_PUB
Input = "sample"
Output = 302C02142E1A0C2562B2912CAAF89186FB0F42001585DA55021429EFB6B0AFF2D7A68EB70CA313022253B9A88DF5

DigestSign = SHA224
Key = DSA_1024_PRIV
NonceType = deterministic
Input = "sample"
Output = 302C02144BC3B686AEA70145856814A6F1BB53346F02101E0214410697B92295D994D21EDD2F4ADA85566F6F94C1

DigestVerify = SHA224
Key = DSA_1024_PUB
Input = "sample"
Output = 302C02144BC3B686AEA70145856814A6F1BB53346F02101E0214410697B92295D994D21EDD2F4ADA85566F6F94C1

DigestSign = SHA256
Key = DSA_1024_PRIV
NonceType = deterministic
Input = "sample"
Output = 302D02150081F2F5850BE5BC123C43F71A3033E9384611C54502144CDD914B65EB6C66A8AAAD27299BEE6B035F5E89

DigestVerify = SHA256
Key = DSA_1024_PUB
Input = "sample"
Output = 302D02150081F2F5850BE5BC123C43F71A3033E9384611C54502144CDD914B65EB6C66A8AAAD27299BEE6B035F5E89

DigestSign = SHA384
Key = DSA_1024_PRIV
NonceType = deterministic
Input = "sample"
Output = 302C021407F2108557EE0E3921BC1774F1CA9B410B4CE65A021454DF70456C86FAC10FAB47C1949AB83F2C6F7595

DigestVerify = SHA384
Key = DSA_1024_PUB
Input = "sample"
Output = 302C021407F2108557EE0E3921BC1774F1CA9B410B4CE65A021454DF70456C86FAC10FAB47C1949AB83F2C6F7595

DigestSign = SHA512
Key = DSA_1024_PRIV
NonceType = deterministic
Input = "sample"
Output = 302C021416C3491F9B8C3FBBDD5E7A7B667057F0D8EE8E1B021402C36A127A7B89EDBB72E4FFBC71DABC7D4FC69C

DigestVerify = SHA512
Key = DSA_1024_PUB
Input = "sample"
Output = 302C021416C3491F9B8C3FBBDD5E7A7B667057F0D8EE8E1B021402C36A127A7B89EDBB72E4FFBC71DABC7D4FC69C

DigestSign = SHA1
Key = DSA_1024_PRIV
NonceType = deterministic
Input = "test"
Output = 302C021442AB2052FD43E123F0607F115052A67DCD9C5C770214183916B0230D45B9931491D4C6B0BD2FB4AAF088

DigestVerify = SHA1
Key = DSA_1024_PUB
Input = "test"
Output = 302C021442AB2052FD43E123F0607F115052A67DCD9C5C770214183916B0230D45B9931491D4C6B0BD2FB4AAF088

DigestSign = SHA224
Key = DSA_1024_PRIV
NonceType = deterministic
Input = "test"
Output = 302C02146868E9964E36C1689F6037F91F28D5F2C30610F2021449CEC3ACDC83018C5BD2674ECAAD35B8CD22940F

DigestVerify = SHA224
Key = DSA_1024_PUB
Input = "test"
Output = 302C02146868E9964E36C1689F6037F91F28D5F2C30610F2021449CEC3ACDC83018C5BD2674ECAAD35B8CD22940F

DigestSign = SHA256
Key = DSA_1024_PRIV
NonceType = deterministic
Input = "test"
Output = 302C021422518C127299B0F6FDC9872B282B9E70D079081202146837EC18F150D55DE95B5E29BE7AF5D01E4FE160

DigestVerify = SHA256
Key = DSA_1024_PUB
Input = "test"
Output = 302C021422518C127299B0F6FDC9872B282B9E70D079081202146837EC18F150D55DE95B5E29BE7AF5D01E4FE160

DigestSign = SHA384
Key = DSA_1024_PRIV
NonceType = deterministic
Input = "test"
Output = 302E021500854CF929B58D73C3CBFDC421E8D5430CD6DB5E6602150091D0E0F53E22F898D158380676A871A157CDA622

DigestVerify = SHA384
Key = DSA_1024_PUB
Input = "test"
Output = 302E021500854CF929B58D73C3CBFDC421E8D5430CD6DB5E6602150091D0E0F53E22F898D158380676A871A157CDA622

DigestSign = SHA512
Key = DSA_1024_PRIV
NonceType = deterministic
Input = "test"
Output = 302D0215008EA47E475BA8AC6F2D821DA3BD212D11A3DEB9A002147C670C7AD72B6C050C109E1790008097125433E8

DigestVerify = SHA512
Key = DSA_1024_PUB
Input = "test"
Output = 302D0215008EA47E475BA8AC6F2D821DA3BD212D11A3DEB9A002147C670C7AD72B6C050C109E1790008097125433E8

Title = RFC 6979 deterministic DSA_2048 tests

PrivateKey=DSA_2048_PRIV
-----BEGIN PRIVATE KEY-----
MIICZAIBADCCAjkGByqGSM44BAEwggIsAoIBAQCdtvtZUbZrtv4eFA8dLOVQI3QW
H9ZTjfFkghhkLwtcSMj3pBqt+hhzJLh2dPoYIrAPHs+BNpQ9fFV1cmTloaRP/gEu
mTbgDB0+kxCwHH0XmAXTBYsqn0u2+XFr/mEXxrWzzE2b40EQStSoCtbJTgBfS5k+
FPCR61F0O/MwUMON4jVWfhs0w9alwM6qGg82ghPD0ZhD0LSwncufxy05yN5B8b8U
1LtFY8ooNxYhytMyS2otOSFFvr+sdIgFI29cov6SuHHNj5w20ykrVQnKjKp3oq38
e/133ab3ESWnRW/qFT5DMlaiJhxqBu02k3l+eZX61aq7z74+2idB43VASuJbAiEA
8sMRk3TOdsk1aZC0ZTdKF/I/ntNQib2Wn2HG3emZjB8CggEAXH/2sG+PFD/oKIQz
ST5HacTZiKzlviWg4kgJZwcWxhPXsM7mky+PqnxE0sskUj2lP75PbsNZWJLRqljE
MooGxGoVZi5+qnA6Hez4u7LQXb4uuVbBQqM4Zh0QRhwNE1RyCFBX80lDCf+nPGEf
eLMq27V0DDYcnzW+kJl9sgFOLvWqYXgvUqvri9ZDLE3Ql7xUI7KF2vtg3DZOgWH0
oqNayjoQscTSA8x2pHCjOv3L3ZKVmFmr2LVuFyUlLXjqxm5xuprj8d0khxmYdDk8
1NgyGGgAZUdg4eNMCeTRVRefnsDcRHP5lr3Obu0cq+2LbxFvetnPUF3w+ZjjSrJ1
FLD/5wQiAiBpx1SMIdDf6muaUcnq1OJ8M9Oz8YAxblvKuSyTPw5NvA==
-----END PRIVATE KEY-----

PublicKey=DSA_2048_PUB
-----BEGIN PUBLIC KEY-----
MIIDRjCCAjkGByqGSM44BAEwggIsAoIBAQCdtvtZUbZrtv4eFA8dLOVQI3QWH9ZT
jfFkghhkLwtcSMj3pBqt+hhzJLh2dPoYIrAPHs+BNpQ9fFV1cmTloaRP/gEumTbg
DB0+kxCwHH0XmAXTBYsqn0u2+XFr/mEXxrWzzE2b40EQStSoCtbJTgBfS5k+FPCR
61F0O/MwUMON4jVWfhs0w9alwM6qGg82ghPD0ZhD0LSwncufxy05yN5B8b8U1LtF
Y8ooNxYhytMyS2otOSFFvr+sdIgFI29cov6SuHHNj5w20ykrVQnKjKp3oq38e/13
3ab3ESWnRW/qFT5DMlaiJhxqBu02k3l+eZX61aq7z74+2idB43VASuJbAiEA8sMR
k3TOdsk1aZC0ZTdKF/I/ntNQib2Wn2HG3emZjB8CggEAXH/2sG+PFD/oKIQzST5H
acTZiKzlviWg4kgJZwcWxhPXsM7mky+PqnxE0sskUj2lP75PbsNZWJLRqljEMooG
xGoVZi5+qnA6Hez4u7LQXb4uuVbBQqM4Zh0QRhwNE1RyCFBX80lDCf+nPGEfeLMq
27V0DDYcnzW+kJl9sgFOLvWqYXgvUqvri9ZDLE3Ql7xUI7KF2vtg3DZOgWH0oqNa
yjoQscTSA8x2pHCjOv3L3ZKVmFmr2LVuFyUlLXjqxm5xuprj8d0khxmYdDk81Ngy
GGgAZUdg4eNMCeTRVRefnsDcRHP5lr3Obu0cq+2LbxFvetnPUF3w+ZjjSrJ1FLD/
5wOCAQUAAoIBAGZwmMZUQmx41/ggHqxsID7wMNQ2BQMsLx+pN+Ujfb2UnzSgolZP
4Sbci3FcUUGALOCXnIJGRjxA5ra9qiUT+mEXKHFsLk/VO8lbieaZSdllEuhzucj4
39SZzDEoglYa3ssx9ljpNMDBl/LE2WsFy61nOB57doiR5No4Q9JNlM37USbpuL8h
6DWO4OCjDvE/1qZkwNzjcx9/tJpIRaT9glRoeXKi04JZnJusTg7XmYGTB4kTAyVY
E0l2QQuJ0sFx0SOsNf2XchlZeqfRXBqaQo5ZGU91xyHry8+uRGlqSZr6dOBCmfEy
AmYBY4y4ereRkNSgmGMV2o7sZWHJOJlr6t8=
-----END PUBLIC KEY-----

PrivPubKeyPair=DSA_2048_PRIV:DSA_2048_PUB

DigestSign = SHA1
Key = DSA_2048_PRIV
NonceType = deterministic
Input = "sample"
Output = 304502203A1B2DBD7489D6ED7E608FD036C83AF396E290DBD602408E8677DAABD6E7445A022100D26FCBA19FA3E3058FFC02CA1596CDBB6E0D20CB37B06054F7E36DED0CDBBCCF

DigestVerify = SHA1
Key = DSA_2048_PUB
Input = "sample"
Output = 304502203A1B2DBD7489D6ED7E608FD036C83AF396E290DBD602408E8677DAABD6E7445A022100D26FCBA19FA3E3058FFC02CA1596CDBB6E0D20CB37B06054F7E36DED0CDBBCCF

DigestSign = SHA224
Key = DSA_2048_PRIV
NonceType = deterministic
Input = "sample"
Output = 3046022100DC9F4DEADA8D8FF588E98FED0AB690FFCE858DC8C79376450EB6B76C24537E2C022100A65A9C3BC7BABE286B195D5DA68616DA8D47FA0097F36DD19F517327DC848CEC

DigestVerify = SHA224
Key = DSA_2048_PUB
Input = "sample"
Output = 3046022100DC9F4DEADA8D8FF588E98FED0AB690FFCE858DC8C79376450EB6B76C24537E2C022100A65A9C3BC7BABE286B195D5DA68616DA8D47FA0097F36DD19F517327DC848CEC

DigestSign = SHA256
Key = DSA_2048_PRIV
NonceType = deterministic
Input = "sample"
Output = 3045022100EACE8BDBBE353C432A795D9EC556C6D021F7A03F42C36E9BC87E4AC7932CC80902207081E175455F9247B812B74583E9E94F9EA79BD640DC962533B0680793A38D53

DigestVerify = SHA256
Key = DSA_2048_PUB
Input = "sample"
Output = 3045022100EACE8BDBBE353C432A795D9EC556C6D021F7A03F42C36E9BC87E4AC7932CC80902207081E175455F9247B812B74583E9E94F9EA79BD640DC962533B0680793A38D53

DigestSign = SHA384
Key = DSA_2048_PRIV
NonceType = deterministic
Input = "sample"
Output = 3045022100B2DA945E91858834FD9BF616EBAC151EDBC4B45D27D0DD4A7F6A22739F45C00B022019048B63D9FD6BCA1D9BAE3664E1BCB97F7276C306130969F63F38FA8319021B

DigestVerify = SHA384
Key = DSA_2048_PUB
Input = "sample"
Output = 3045022100B2DA945E91858834FD9BF616EBAC151EDBC4B45D27D0DD4A7F6A22739F45C00B022019048B63D9FD6BCA1D9BAE3664E1BCB97F7276C306130969F63F38FA8319021B

DigestSign = SHA512
Key = DSA_2048_PRIV
NonceType = deterministic
Input = "sample"
Output = 304502202016ED092DC5FB669B8EFB3D1F31A91EECB199879BE0CF78F02BA062CB4C942E022100D0C76F84B5F091E141572A639A4FB8C230807EEA7D55C8A154A224400AFF2351

DigestVerify = SHA512
Key = DSA_2048_PUB
Input = "sample"
Output = 304502202016ED092DC5FB669B8EFB3D1F31A91EECB199879BE0CF78F02BA062CB4C942E022100D0C76F84B5F091E141572A639A4FB8C230807EEA7D55C8A154A224400AFF2351

DigestSign = SHA1
Key = DSA_2048_PRIV
NonceType = deterministic
Input = "test"
Output = 3045022100C18270A93CFC6063F57A4DFA86024F700D980E4CF4E2CB65A504397273D98EA00220414F22E5F31A8B6D33295C7539C1C1BA3A6160D7D68D50AC0D3A5BEAC2884FAA

DigestVerify = SHA1
Key = DSA_2048_PUB
Input = "test"
Output = 3045022100C18270A93CFC6063F57A4DFA86024F700D980E4CF4E2CB65A504397273D98EA00220414F22E5F31A8B6D33295C7539C1C1BA3A6160D7D68D50AC0D3A5BEAC2884FAA

DigestSign = SHA224
Key = DSA_2048_PRIV
NonceType = deterministic
Input = "test"
Output = 30450220272ABA31572F6CC55E30BF616B7A265312018DD325BE031BE0CC82AA17870EA3022100E9CC286A52CCE201586722D36D1E917EB96A4EBDB47932F9576AC645B3A60806

DigestVerify = SHA224
Key = DSA_2048_PUB
Input = "test"
Output = 30450220272ABA31572F6CC55E30BF616B7A265312018DD325BE031BE0CC82AA17870EA3022100E9CC286A52CCE201586722D36D1E917EB96A4EBDB47932F9576AC645B3A60806

DigestSign = SHA256
Key = DSA_2048_PRIV
NonceType = deterministic
Input = "test"
Output = 30450221008190012A1969F9957D56FCCAAD223186F423398D58EF5B3CEFD5A4146A4476F002207452A53F7075D417B4B013B278D1BB8BBD21863F5E7B1CEE679CF2188E1AB19E

DigestVerify = SHA256
Key = DSA_2048_PUB
Input = "test"
Output = 30450221008190012A1969F9957D56FCCAAD223186F423398D58EF5B3CEFD5A4146A4476F002207452A53F7075D417B4B013B278D1BB8BBD21863F5E7B1CEE679CF2188E1AB19E

DigestSign = SHA384
Key = DSA_2048_PRIV
NonceType = deterministic
Input = "test"
Output = 30440220239E66DDBE8F8C230A3D071D601B6FFBDFB5901F94D444C6AF56F732BEB954BE02206BD737513D5E72FE85D1C750E0F73921FE299B945AAD1C802F15C26A43D34961

DigestVerify = SHA384
Key = DSA_2048_PUB
Input = "test"
Output = 30440220239E66DDBE8F8C230A3D071D601B6FFBDFB5901F94D444C6AF56F732BEB954BE02206BD737513D5E72FE85D1C750E0F73921FE299B945AAD1C802F15C26A43D34961

DigestSign = SHA512
Key = DSA_2048_PRIV
NonceType = deterministic
Input = "test"
Output = 304602210089EC4BB1400ECCFF8E7D9AA515CD1DE7803F2DAFF09693EE7FD1353E90A68307022100C9F0BDABCC0D880BB137A994CC7F3980CE91CC10FAF529FC46565B15CEA854E1

DigestVerify = SHA512
Key = DSA_2048_PUB
Input = "test"
Output = 304602210089EC4BB1400ECCFF8E7D9AA515CD1DE7803F2DAFF09693EE7FD1353E90A68307022100C9F0BDABCC0D880BB137A994CC7F3980CE91CC10FAF529FC46565B15CEA854E1
@@ -1,3 +1,17 @@
#
# Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html

# Tests start with one of these keywords
# Cipher Decrypt Derive Digest Encoding KDF MAC PBE
# PrivPubKeyPair Sign Verify VerifyRecover
# and continue until a blank line. Lines starting with a pound sign are ignored.


Title = RFC 6979 P-192 deterministic ECDSA tests

PrivateKey=P-192_PRIV
Expand Down Expand Up @@ -2791,5 +2805,3 @@ Key = B-571_PUB
Input = "test"
Output = 308194024802AA1888EAB05F7B00B6A784C4F7081D2C833D50794D9FEAF6E22B8BE728A2A90BFCABDC803162020AA629718295A1489EE7ED0ECB8AAA197B9BDFC49D18DDD78FC85A48F9715544024800AA5371FE5CA671D6ED9665849C37F394FED85D51FEF72DA2B5F28EDFB2C6479CA63320C19596F5E1101988E2C619E302DD05112F47E8823040CE540CD3E90DCF41DBC461744EE8
Result = VERIFY_ERROR

# tests: 465

0 comments on commit 6b3d287

Please sign in to comment.