From cf457615e3ea3bd0424b56a02988f204f0bbbfa2 Mon Sep 17 00:00:00 2001 From: bleichen Date: Wed, 12 Jun 2019 04:30:20 -0700 Subject: [PATCH] Updating documentation. * including new primitives * more detailed description of JSON types. * adding links for algorithms NOKEYCHECK=True PiperOrigin-RevId: 252799091 GitOrigin-RevId: ebf54ad59ebc55f4cbee010d67867ee9a95ce987 --- doc/files.md | 189 ++++++++++++++++++++++++++++-------------------- doc/types.md | 198 +++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 282 insertions(+), 105 deletions(-) diff --git a/doc/files.md b/doc/files.md index a78daa8..c5eb0dc 100644 --- a/doc/files.md +++ b/doc/files.md @@ -21,6 +21,9 @@ Type of the test vectors\: [AeadTestVector](types.md#AeadTestVector) **name** | **tests** | **validity** | **algorithm** {.sortable} ---------------------------- | --------- | ------------ | ------------- aead_aes_siv_cmac_test.json | 828 | 180, 0, 648 | AEAD-AES-SIV-CMAC +aegis128L_test.json | 462 | 350, 0, 112 | AEGIS128L +aegis128_test.json | 465 | 357, 0, 108 | AEGIS128 +aegis256_test.json | 460 | 348, 0, 112 | AEGIS256 aes_ccm_test.json | 510 | 366, 0, 144 | AES-CCM aes_eax_test.json | 171 | 78, 12, 81 | AES-EAX aes_gcm_siv_test.json | 155 | 88, 0, 67 | AES-GCM-SIV @@ -154,6 +157,34 @@ Type of the test vectors\: ------------------------ | --------- | ------------ | ------------- ecdh_webcrypto_test.json | 833 | 743, 0, 90 | ECDH +## EcdsaBitcoinVerify {#EcdsaBitcoinVerify} + +Test vectors of type EcdsaBitcoinVerify are meant for the verification of a +ECDSA variant used for bitcoin, that add signature non-malleability. + +The bitcoin protocol requires that the signature scheme is non-malleable. It +must not be possible to format the same signature in multiple ways. This variant +is described in https\://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki + +Test vectors with "result" \: "valid" are valid signatures. Test vectors with +"result" \: "invalid" are invalid. Test vectors with "result" \: "acceptable" +are signatures that may or may not be rejected. + +Compared to normal ECDSA signatures, all alternative BER encodings of the +signature are invalid. The value s in the signature must be a positive integer +smaller than n/2. + +JSON schema\: ecdsa_bitcoin_verify_schema.json + +Type of the test group\: [EcdsaBitcoinTestGroup](types.md#EcdsaBitcoinTestGroup) + +Type of the test vectors\: +[AsnSignatureTestVector](types.md#AsnSignatureTestVector) + +**name** | **tests** | **validity** | **algorithm** {.sortable} +---------------------------------------- | --------- | ------------ | ------------- +ecdsa_secp256k1_sha256_bitcoin_test.json | 374 | 140, 0, 234 | ECDSA + ## EcdsaP1363Verify {#EcdsaP1363Verify} Test vectors of type EcdsaVerify are meant for the verification of IEEE P1363 @@ -177,22 +208,22 @@ Type of the test vectors\: [SignatureTestVector](types.md#SignatureTestVector) **name** | **tests** | **validity** | **algorithm** {.sortable} -------------------------------------------- | --------- | ------------ | ------------- -ecdsa_brainpoolP224r1_sha224_p1363_test.json | 188 | 118, 3, 67 | ECDSA -ecdsa_brainpoolP256r1_sha256_p1363_test.json | 218 | 147, 3, 68 | ECDSA -ecdsa_brainpoolP320r1_sha384_p1363_test.json | 221 | 150, 3, 68 | ECDSA -ecdsa_brainpoolP384r1_sha384_p1363_test.json | 249 | 178, 3, 68 | ECDSA -ecdsa_brainpoolP512r1_sha512_p1363_test.json | 292 | 222, 3, 67 | ECDSA -ecdsa_secp224r1_sha224_p1363_test.json | 185 | 115, 3, 67 | ECDSA -ecdsa_secp224r1_sha256_p1363_test.json | 213 | 143, 3, 67 | ECDSA -ecdsa_secp224r1_sha512_p1363_test.json | 282 | 212, 3, 67 | ECDSA -ecdsa_secp256k1_sha256_p1363_test.json | 209 | 139, 3, 67 | ECDSA -ecdsa_secp256k1_sha512_p1363_test.json | 278 | 208, 3, 67 | ECDSA -ecdsa_secp256r1_sha256_p1363_test.json | 217 | 144, 4, 69 | ECDSA -ecdsa_secp256r1_sha512_p1363_test.json | 286 | 213, 4, 69 | ECDSA -ecdsa_secp384r1_sha384_p1363_test.json | 237 | 165, 3, 69 | ECDSA -ecdsa_secp384r1_sha512_p1363_test.json | 274 | 202, 3, 69 | ECDSA -ecdsa_secp521r1_sha512_p1363_test.json | 275 | 203, 3, 69 | ECDSA -ecdsa_webcrypto_test.json | 358 | 266, 10, 82 | ECDSA +ecdsa_brainpoolP224r1_sha224_p1363_test.json | 190 | 120, 3, 67 | ECDSA +ecdsa_brainpoolP256r1_sha256_p1363_test.json | 220 | 149, 3, 68 | ECDSA +ecdsa_brainpoolP320r1_sha384_p1363_test.json | 223 | 152, 3, 68 | ECDSA +ecdsa_brainpoolP384r1_sha384_p1363_test.json | 251 | 180, 3, 68 | ECDSA +ecdsa_brainpoolP512r1_sha512_p1363_test.json | 294 | 224, 3, 67 | ECDSA +ecdsa_secp224r1_sha224_p1363_test.json | 187 | 117, 3, 67 | ECDSA +ecdsa_secp224r1_sha256_p1363_test.json | 215 | 145, 3, 67 | ECDSA +ecdsa_secp224r1_sha512_p1363_test.json | 284 | 214, 3, 67 | ECDSA +ecdsa_secp256k1_sha256_p1363_test.json | 211 | 141, 3, 67 | ECDSA +ecdsa_secp256k1_sha512_p1363_test.json | 280 | 210, 3, 67 | ECDSA +ecdsa_secp256r1_sha256_p1363_test.json | 219 | 146, 4, 69 | ECDSA +ecdsa_secp256r1_sha512_p1363_test.json | 288 | 215, 4, 69 | ECDSA +ecdsa_secp384r1_sha384_p1363_test.json | 239 | 167, 3, 69 | ECDSA +ecdsa_secp384r1_sha512_p1363_test.json | 276 | 204, 3, 69 | ECDSA +ecdsa_secp521r1_sha512_p1363_test.json | 277 | 205, 3, 69 | ECDSA +ecdsa_webcrypto_test.json | 362 | 270, 10, 82 | ECDSA ## EcdsaVerify {#EcdsaVerify} @@ -215,32 +246,32 @@ Type of the test vectors\: **name** | **tests** | **validity** | **algorithm** {.sortable} -------------------------------------- | --------- | ------------ | ------------- -ecdsa_brainpoolP224r1_sha224_test.json | 351 | 119, 2, 230 | ECDSA -ecdsa_brainpoolP256r1_sha256_test.json | 381 | 148, 0, 233 | ECDSA -ecdsa_brainpoolP320r1_sha384_test.json | 384 | 151, 1, 232 | ECDSA -ecdsa_brainpoolP384r1_sha384_test.json | 412 | 179, 0, 233 | ECDSA -ecdsa_brainpoolP512r1_sha512_test.json | 454 | 223, 0, 231 | ECDSA -ecdsa_secp224r1_sha224_test.json | 348 | 116, 1, 231 | ECDSA -ecdsa_secp224r1_sha256_test.json | 376 | 144, 0, 232 | ECDSA -ecdsa_secp224r1_sha3_224_test.json | 376 | 144, 2, 230 | ECDSA -ecdsa_secp224r1_sha3_256_test.json | 384 | 152, 2, 230 | ECDSA -ecdsa_secp224r1_sha3_512_test.json | 449 | 217, 2, 230 | ECDSA -ecdsa_secp224r1_sha512_test.json | 445 | 213, 1, 231 | ECDSA -ecdsa_secp256k1_sha256_test.json | 372 | 140, 1, 231 | ECDSA -ecdsa_secp256k1_sha3_256_test.json | 380 | 148, 1, 231 | ECDSA -ecdsa_secp256k1_sha3_512_test.json | 445 | 213, 1, 231 | ECDSA -ecdsa_secp256k1_sha512_test.json | 441 | 209, 1, 231 | ECDSA -ecdsa_secp256r1_sha256_test.json | 379 | 145, 1, 233 | ECDSA -ecdsa_secp256r1_sha3_256_test.json | 387 | 153, 1, 233 | ECDSA -ecdsa_secp256r1_sha3_512_test.json | 452 | 218, 2, 232 | ECDSA -ecdsa_secp256r1_sha512_test.json | 448 | 214, 1, 233 | ECDSA -ecdsa_secp384r1_sha384_test.json | 400 | 166, 1, 233 | ECDSA -ecdsa_secp384r1_sha3_384_test.json | 410 | 176, 0, 234 | ECDSA -ecdsa_secp384r1_sha3_512_test.json | 441 | 207, 2, 232 | ECDSA -ecdsa_secp384r1_sha512_test.json | 437 | 203, 2, 232 | ECDSA -ecdsa_secp521r1_sha3_512_test.json | 441 | 208, 0, 233 | ECDSA -ecdsa_secp521r1_sha512_test.json | 439 | 204, 0, 235 | ECDSA -ecdsa_test.json | 1541 | 989, 5, 547 | ECDSA +ecdsa_brainpoolP224r1_sha224_test.json | 353 | 121, 2, 230 | ECDSA +ecdsa_brainpoolP256r1_sha256_test.json | 383 | 150, 0, 233 | ECDSA +ecdsa_brainpoolP320r1_sha384_test.json | 386 | 153, 1, 232 | ECDSA +ecdsa_brainpoolP384r1_sha384_test.json | 414 | 181, 0, 233 | ECDSA +ecdsa_brainpoolP512r1_sha512_test.json | 456 | 225, 0, 231 | ECDSA +ecdsa_secp224r1_sha224_test.json | 350 | 118, 1, 231 | ECDSA +ecdsa_secp224r1_sha256_test.json | 378 | 146, 0, 232 | ECDSA +ecdsa_secp224r1_sha3_224_test.json | 378 | 146, 2, 230 | ECDSA +ecdsa_secp224r1_sha3_256_test.json | 386 | 154, 2, 230 | ECDSA +ecdsa_secp224r1_sha3_512_test.json | 451 | 219, 2, 230 | ECDSA +ecdsa_secp224r1_sha512_test.json | 447 | 215, 1, 231 | ECDSA +ecdsa_secp256k1_sha256_test.json | 374 | 142, 1, 231 | ECDSA +ecdsa_secp256k1_sha3_256_test.json | 382 | 150, 1, 231 | ECDSA +ecdsa_secp256k1_sha3_512_test.json | 447 | 215, 1, 231 | ECDSA +ecdsa_secp256k1_sha512_test.json | 443 | 211, 1, 231 | ECDSA +ecdsa_secp256r1_sha256_test.json | 381 | 147, 1, 233 | ECDSA +ecdsa_secp256r1_sha3_256_test.json | 389 | 155, 1, 233 | ECDSA +ecdsa_secp256r1_sha3_512_test.json | 454 | 220, 2, 232 | ECDSA +ecdsa_secp256r1_sha512_test.json | 450 | 216, 1, 233 | ECDSA +ecdsa_secp384r1_sha384_test.json | 402 | 168, 1, 233 | ECDSA +ecdsa_secp384r1_sha3_384_test.json | 412 | 178, 0, 234 | ECDSA +ecdsa_secp384r1_sha3_512_test.json | 443 | 209, 2, 232 | ECDSA +ecdsa_secp384r1_sha512_test.json | 439 | 205, 2, 232 | ECDSA +ecdsa_secp521r1_sha3_512_test.json | 443 | 210, 0, 233 | ECDSA +ecdsa_secp521r1_sha512_test.json | 441 | 206, 0, 235 | ECDSA +ecdsa_test.json | 1559 | 1007, 5, 547 | ECDSA ## EddsaVerify {#EddsaVerify} @@ -312,7 +343,7 @@ Type of the test vectors\: [KeywrapTestVector](types.md#KeywrapTestVector) **name** | **tests** | **validity** | **algorithm** {.sortable} ------------- | --------- | ------------ | ------------- kw_test.json | 162 | 36, 0, 126 | KW -kwp_test.json | 224 | 20, 60, 144 | KWP +kwp_test.json | 254 | 20, 60, 174 | KWP ## MacTest {#MacTest} @@ -334,20 +365,22 @@ Type of the test vectors\: [MacTestVector](types.md#MacTestVector) ------------------ | --------- | ------------ | ------------- aes_cmac_test.json | 290 | 42, 0, 248 | AES-CMAC -## RsaKeyTest {#RsaKeyTest} +## RsaPublicKeyAsnTest {#RsaPublicKeyAsnTest} -Test vectors of type RsaKeyTest are intended for checking the decoding of RSA -public keys. +Test vectors of type RsaKeyTest are intended for checking the decoding of X509 +encoded RSA public keys. -JSON schema\: rsa_key_test_schema.json +JSON schema\: rsa_public_key_asn_test_schema.json -Type of the test group\: [RsaKeyTestGroup](types.md#RsaKeyTestGroup) +Type of the test group\: +[RsaPublicKeyAsnTestGroup](types.md#RsaPublicKeyAsnTestGroup) -Type of the test vectors\: [RsaKeyTestVector](types.md#RsaKeyTestVector) +Type of the test vectors\: +[RsaPublicKeyAsnTestVector](types.md#RsaPublicKeyAsnTestVector) -**name** | **tests** | **validity** | **algorithm** | **missingFlags** {.sortable} -------------- | --------- | ------------ | ------------- | ---------------- -rsa_test.json | 334 | 1, 333, 0 | RSA | 333 +**name** | **tests** | **validity** | **algorithm** {.sortable} +------------- | --------- | ------------ | ------------- +rsa_test.json | 335 | 1, 334, 0 | RSA ## RsaesOaepDecrypt {#RsaesOaepDecrypt} @@ -365,26 +398,29 @@ Type of the test group\: [RsaesOaepTestGroup](types.md#RsaesOaepTestGroup) Type of the test vectors\: [RsaesOaepTestVector](types.md#RsaesOaepTestVector) -**name** | **tests** | **validity** | **algorithm** {.sortable} ------------------------------------------ | --------- | ------------ | ------------- -rsa_oaep_2048_sha1_mgf1sha1_test.json | 34 | 17, 0, 17 | RSAES-OAEP -rsa_oaep_2048_sha224_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP -rsa_oaep_2048_sha224_mgf1sha224_test.json | 33 | 17, 0, 16 | RSAES-OAEP -rsa_oaep_2048_sha256_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP -rsa_oaep_2048_sha256_mgf1sha256_test.json | 35 | 18, 0, 17 | RSAES-OAEP -rsa_oaep_2048_sha384_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP -rsa_oaep_2048_sha384_mgf1sha384_test.json | 32 | 16, 0, 16 | RSAES-OAEP -rsa_oaep_2048_sha512_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP -rsa_oaep_2048_sha512_mgf1sha512_test.json | 31 | 14, 0, 17 | RSAES-OAEP -rsa_oaep_3072_sha256_mgf1sha1_test.json | 30 | 13, 0, 17 | RSAES-OAEP -rsa_oaep_3072_sha256_mgf1sha256_test.json | 35 | 18, 0, 17 | RSAES-OAEP -rsa_oaep_3072_sha512_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP -rsa_oaep_3072_sha512_mgf1sha512_test.json | 31 | 15, 0, 16 | RSAES-OAEP -rsa_oaep_4096_sha256_mgf1sha1_test.json | 30 | 13, 0, 17 | RSAES-OAEP -rsa_oaep_4096_sha256_mgf1sha256_test.json | 35 | 18, 0, 17 | RSAES-OAEP -rsa_oaep_4096_sha512_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP -rsa_oaep_4096_sha512_mgf1sha512_test.json | 34 | 17, 0, 17 | RSAES-OAEP -rsa_oaep_misc_test.json | 775 | 460, 315, 0 | RSAES-OAEP +**name** | **tests** | **validity** | **algorithm** {.sortable} +------------------------------------------------------ | --------- | ------------ | ------------- +rsa_oaep_2048_sha1_mgf1sha1_test.json | 34 | 17, 0, 17 | RSAES-OAEP +rsa_oaep_2048_sha224_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP +rsa_oaep_2048_sha224_mgf1sha224_test.json | 33 | 17, 0, 16 | RSAES-OAEP +rsa_oaep_2048_sha256_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP +rsa_oaep_2048_sha256_mgf1sha256_test.json | 35 | 18, 0, 17 | RSAES-OAEP +rsa_oaep_2048_sha384_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP +rsa_oaep_2048_sha384_mgf1sha384_test.json | 32 | 16, 0, 16 | RSAES-OAEP +rsa_oaep_2048_sha512_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP +rsa_oaep_2048_sha512_mgf1sha512_test.json | 31 | 14, 0, 17 | RSAES-OAEP +rsa_oaep_3072_sha256_mgf1sha1_test.json | 30 | 13, 0, 17 | RSAES-OAEP +rsa_oaep_3072_sha256_mgf1sha256_test.json | 35 | 18, 0, 17 | RSAES-OAEP +rsa_oaep_3072_sha512_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP +rsa_oaep_3072_sha512_mgf1sha512_test.json | 31 | 15, 0, 16 | RSAES-OAEP +rsa_oaep_4096_sha256_mgf1sha1_test.json | 30 | 13, 0, 17 | RSAES-OAEP +rsa_oaep_4096_sha256_mgf1sha256_test.json | 35 | 18, 0, 17 | RSAES-OAEP +rsa_oaep_4096_sha512_mgf1sha1_test.json | 29 | 13, 0, 16 | RSAES-OAEP +rsa_oaep_4096_sha512_mgf1sha512_test.json | 34 | 17, 0, 17 | RSAES-OAEP +rsa_oaep_misc_test.json | 775 | 460, 315, 0 | RSAES-OAEP +rsa_three_primes_oaep_2048_sha1_mgf1sha1_test.json | 34 | 17, 0, 17 | RSAES-OAEP +rsa_three_primes_oaep_3072_sha224_mgf1sha224_test.json | 35 | 19, 0, 16 | RSAES-OAEP +rsa_three_primes_oaep_4096_sha256_mgf1sha256_test.json | 35 | 18, 0, 17 | RSAES-OAEP ## RsaesPkcs1Decrypt {#RsaesPkcs1Decrypt} @@ -423,9 +459,10 @@ Type of the test group\: Type of the test vectors\: [SignatureTestVector](types.md#SignatureTestVector) -**name** | **tests** | **validity** | **algorithm** {.sortable} --------------------------- | --------- | ------------ | ------------- -rsa_sig_gen_misc_test.json | 158 | 80, 78, 0 | RSASSA-PKCS1-v1_5 +**name** | **tests** | **validity** | **algorithm** {.sortable} +--------------------------------------- | --------- | ------------ | ------------- +rsa_sig_gen_misc_test.json | 158 | 80, 78, 0 | RSASSA-PKCS1-v1_5 +rsa_sig_gen_misc_three_primes_test.json | 32 | 24, 8, 0 | RSASSA-PKCS1-v1_5 ## RsassaPkcs1Verify {#RsassaPkcs1Verify} @@ -454,7 +491,7 @@ rsa_signature_3072_sha384_test.json | 239 | 7, 1, 231 | RSASSA-PKCS1-v1 rsa_signature_3072_sha512_test.json | 240 | 7, 2, 231 | RSASSA-PKCS1-v1_5 rsa_signature_4096_sha384_test.json | 239 | 7, 1, 231 | RSASSA-PKCS1-v1_5 rsa_signature_4096_sha512_test.json | 239 | 7, 1, 231 | RSASSA-PKCS1-v1_5 -rsa_signature_test.json | 377 | 77, 70, 230 | RSASSA-PKCS1-v1_5 +rsa_signature_test.json | 377 | 84, 63, 230 | RSASSA-PKCS1-v1_5 ## RsassaPssVerify {#RsassaPssVerify} diff --git a/doc/types.md b/doc/types.md index b3efcd9..2544b5d 100644 --- a/doc/types.md +++ b/doc/types.md @@ -2,7 +2,7 @@ # Test vector types -Version\: 0.7 +Version\: 0.8r4 [TOC] @@ -55,7 +55,9 @@ Fields additional to the fields in TestVector are\: msg | [HexBytes](formats.md#DataTypes) | The message to sign sig | Asn | An ASN encoded signature for msg -Used in [DsaTestGroup](#DsaTestGroup), [EcdsaTestGroup](#EcdsaTestGroup). +Used in [DsaTestGroup](#DsaTestGroup), +[EcdsaBitcoinTestGroup](#EcdsaBitcoinTestGroup), +[EcdsaTestGroup](#EcdsaTestGroup). ## DaeadTestGroup {#DaeadTestGroup} @@ -310,13 +312,31 @@ tests | List of [EcdhWebcryptoTestVector](types.md#EcdhWebcryptoTestVector) | Fields additional to the fields in TestVector are\: **name** | **type** | **desc** --------- | -------------------------------- | ------------------------------- -public | Json | Public key in webcrypto format -private | Json | Private key in webcrypto format +-------- | -------------------------------- | -------- +public | Json | Valid or invalid public key in webcrypto format +private | JwkEcPrivateKey | Private key in webcrypto format shared | [HexBytes](formats.md#DataTypes) | The shared secret key Used in [EcdhWebcryptoTestGroup](#EcdhWebcryptoTestGroup). +## EcdsaBitcoinTestGroup {#EcdsaBitcoinTestGroup} + +A test group for the bitcoin variant of ECDSA signatures. The test vectors in +this group are meant for signature verification. The test group contains the +same public key for the signatures in multiple representations. The public keys +are valid. + +Fields in EcdsaBitcoinTestGroup are\: + +**name** | **type** | **desc** | **enum** +-------- | ----------------------------------------------------------------- | -------------------------------- | -------- +key | EcPublicKey | unenocded EC public key | +keyDer | [Der](formats.md#DataTypes) | DER encoded public key | +keyPem | [Pem](formats.md#DataTypes) | Pem encoded public key | +sha | [MdName](formats.md#HashFunctions) | the hash function used for ECDSA | 'SHA-256' +type | str | the type of the test | '[EcdsaBitcoinVerify](files.md#EcdsaBitcoinVerify)' +tests | List of [AsnSignatureTestVector](types.md#AsnSignatureTestVector) | a list of test vectors | + ## EcdsaP1363TestGroup {#EcdsaP1363TestGroup} A test group for ECDSA signatures using IEEE P1363 encoding. The test vectors in @@ -329,7 +349,7 @@ Fields in EcdsaP1363TestGroup are\: **name** | **type** | **desc** | **enum** -------- | ----------------------------------------------------------- | --------------------------------------------- | -------- -jwk | Json | [optional] the public key in webcrypto format | +jwk | JwkEcPublicKey | [optional] the public key in webcrypto format | key | EcPublicKey | unenocded EC public key | keyDer | [Der](formats.md#DataTypes) | DER encoded public key | keyPem | [Pem](formats.md#DataTypes) | Pem encoded public key | @@ -428,6 +448,74 @@ ct | [HexBytes](formats.md#DataTypes) | the raw ciphertext (without IV) Used in [IndCpaTestGroup](#IndCpaTestGroup). +## JwkEcPrivateKey {#JwkEcPrivateKey} + +**name** | **type** | **desc** | **enum** +-------- | --------------------------------- | ------------------------------------ | -------- +crv | str | the curve | 'P-256', 'P-384', 'P-521', 'P-256K' +d | [Base64Url](formats.md#DataTypes) | The private multiplier | +kid | str | the key id | +kty | str | the algorithm | 'EC' +use | str | the purpose of the key | +x | [Base64Url](formats.md#DataTypes) | The x-coordinate of the public point | +y | [Base64Url](formats.md#DataTypes) | The y-coordinate of the public point | + +## JwkEcPublicKey {#JwkEcPublicKey} + +**name** | **type** | **desc** | **enum** +-------- | --------------------------------- | ------------------------------------ | -------- +crv | str | the curve | 'P-256', 'P-384', 'P-521', 'P-256K' +kid | str | the key id | +kty | str | the algorithm | 'EC' +use | str | the purpose of the key | +x | [Base64Url](formats.md#DataTypes) | The x-coordinate of the public point | +y | [Base64Url](formats.md#DataTypes) | The y-coordinate of the public point | + +## JwkRsaPrivateKey {#JwkRsaPrivateKey} + +**name** | **type** | **desc** | **enum** +-------- | --------------------------------- | ----------------------------- | -------- +d | [Base64Url](formats.md#DataTypes) | the private exponent | +dp | [Base64Url](formats.md#DataTypes) | the value d % (p-1) | +dq | [Base64Url](formats.md#DataTypes) | the value d % (q-1) | +e | [Base64Url](formats.md#DataTypes) | the public exponent | +kid | str | the key identifier | +kty | str | the algorithm | 'RSA' +n | [Base64Url](formats.md#DataTypes) | the modulus of the key | +p | [Base64Url](formats.md#DataTypes) | a prime factor of the modulus | +q | [Base64Url](formats.md#DataTypes) | a prime factor of the modulus | +qi | [Base64Url](formats.md#DataTypes) | the CRT value q^(-1) % p | +use | str | the purpose of the key | 'sig', 'enc' + +## JwkRsaPublicKey {#JwkRsaPublicKey} + +**name** | **type** | **desc** | **enum** +-------- | --------------------------------- | ---------------------- | -------- +e | [Base64Url](formats.md#DataTypes) | the public exponent | +kid | str | the key identifier | +kty | str | the algorithm | 'RSA' +n | [Base64Url](formats.md#DataTypes) | the modulus of the key | +use | str | the purpose of the key | 'sig', 'enc' + +## JwkXdhPrivateKey {#JwkXdhPrivateKey} + +**name** | **type** | **desc** | **enum** +-------- | --------------------------------- | --------------------- | -------- +crv | str | the DH function | 'X25519', 'X448' +d | [Base64Url](formats.md#DataTypes) | the private key value | +kid | str | the key identifier | +kty | str | the key type | 'OKP' +x | [Base64Url](formats.md#DataTypes) | the public key value | + +## JwkXdhPublicKey {#JwkXdhPublicKey} + +**name** | **type** | **desc** | **enum** +-------- | --------------------------------- | -------------------- | -------- +crv | str | the DH function | 'X25519', 'X448' +kid | str | the key identifier | +kty | str | the key type | 'OKP' +x | [Base64Url](formats.md#DataTypes) | the public key value | + ## KeywrapTestGroup {#KeywrapTestGroup} Fields in KeywrapTestGroup are\: @@ -481,26 +569,78 @@ tag | [HexBytes](formats.md#DataTypes) | the authentication tag Used in [MacTestGroup](#MacTestGroup). -## RsaKeyTestGroup {#RsaKeyTestGroup} +## RsaPrivateKey {#RsaPrivateKey} -Fields in RsaKeyTestGroup are\: +Describes an RSA private key. The data type is based on the RSAPrivateKey type +defined in Section A.1.2 of RFC 8017. -**name** | **type** | **desc** | **enum** --------- | ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- -encoding | str | The encoding of the public key in the test vectors. asn implies PKCS8 encoded public keys. pem implies a PEM encoded public key (compatible with OpenSSL. | 'asn', 'pem' -private | Json | the private key | -type | str | the type of the test | '[RsaKeyTest](files.md#RsaKeyTest)' -tests | List of [RsaKeyTestVector](types.md#RsaKeyTestVector) | a list of test vectors | +**name** | **type** | **desc** | **enum** +--------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | -------- +coefficient | [BigInt](formats.md#DataTypes) | the CRT value q^(-1) % p | +exponent1 | [BigInt](formats.md#DataTypes) | the value d % (p-1) | +exponent2 | [BigInt](formats.md#DataTypes) | the value d % (q-1) | +modulus | [BigInt](formats.md#DataTypes) | the modulus of the key | +otherPrimeInfos | List | list of triples [prime, exponent, coefficient] | +prime1 | [BigInt](formats.md#DataTypes) | p: a prime factor of the modulus | +prime2 | [BigInt](formats.md#DataTypes) | q: a prime factor of the modulus | +privateExponent | [BigInt](formats.md#DataTypes) | the private exponent | +publicExponent | [BigInt](formats.md#DataTypes) | the public exponent | +version | int | The version of the private key. This is 0 for keys with no otherPrimeInfos and 1 for keys with otherPrimeInfos, i.e. multiprime keys. | 0, 1 -## RsaKeyTestVector {#RsaKeyTestVector} +## RsaPublicKey {#RsaPublicKey} + +Describes an RSA private key. The data type is based on the RSAPublicKey type +defined in Appendix C of RFC 8017. + +**name** | **type** | **desc** | **enum** +-------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | -------- +modulus | [BigInt](formats.md#DataTypes) | the modulus of the key | +publicExponent | [BigInt](formats.md#DataTypes) | the public exponent | +version | int | The version of the private key. This is 0 for keys with no otherPrimeInfos and 1 for keys with otherPrimeInfos, i.e. multiprime keys. | 0, 1 + +## RsaPublicKeyAsnTestGroup {#RsaPublicKeyAsnTestGroup} + +Fields in RsaPublicKeyAsnTestGroup are\: + +**name** | **type** | **desc** | **enum** +------------- | ----------------------------------------------------------------------- | --------------------------- | -------- +privateKey | RsaPrivateKey | the private key | +privateKeyAsn | [Der](formats.md#DataTypes) | PKCS #8 encoded private key | +publicKeyAsn | [Der](formats.md#DataTypes) | the X509 encoded public key | +type | str | the type of the test | '[RsaPublicKeyAsnTest](files.md#RsaPublicKeyAsnTest)' +tests | List of [RsaPublicKeyAsnTestVector](types.md#RsaPublicKeyAsnTestVector) | a list of test vectors | + +## RsaPublicKeyAsnTestVector {#RsaPublicKeyAsnTestVector} Fields additional to the fields in TestVector are\: -**name** | **type** | **desc** --------- | -------------------------------- | ---------------------- -public | [HexBytes](formats.md#DataTypes) | the encoded public key +**name** | **type** | **desc** +-------- | --------------------------- | ---------------------------------- +encoded | [Asn](formats.md#DataTypes) | a modified X509 encoded public key -Used in [RsaKeyTestGroup](#RsaKeyTestGroup). +Used in [RsaPublicKeyAsnTestGroup](#RsaPublicKeyAsnTestGroup). + +## RsaPublicKeyPemTestGroup {#RsaPublicKeyPemTestGroup} + +Fields in RsaPublicKeyPemTestGroup are\: + +**name** | **type** | **desc** | **enum** +------------- | ----------------------------------------------------------------------- | ---------------------------------------- | -------- +privateKey | RsaPrivateKey | the private key | +privateKeyPem | [Pem](formats.md#DataTypes) | PEM encoded private key | +publicKeyPem | [Pem](formats.md#DataTypes) | the corresponding PEM encoded public key | +type | str | the type of the test | '[RsaPublicKeyPemTest](files.md#RsaPublicKeyPemTest)' +tests | List of [RsaPublicKeyPemTestVector](types.md#RsaPublicKeyPemTestVector) | a list of test vectors | + +## RsaPublicKeyPemTestVector {#RsaPublicKeyPemTestVector} + +Fields additional to the fields in TestVector are\: + +**name** | **type** | **desc** +-------- | --------------------------- | --------------------------------- +encoded | [Pem](formats.md#DataTypes) | a modified PEM encoded public key + +Used in [RsaPublicKeyPemTestGroup](#RsaPublicKeyPemTestGroup). ## RsaesOaepTestGroup {#RsaesOaepTestGroup} @@ -513,7 +653,7 @@ e | [BigInt](formats.md#DataTypes) | mgf | str | the message generating function (e.g. MGF1) | | mgfSha | [MdName](formats.md#HashFunctions) | The hash function used for the message generating function. | | n | [BigInt](formats.md#DataTypes) | The modulus of the key | | -privateKeyJwk | JSON | [optional] JSON encoded private key | 0.7 | +privateKeyJwk | JwkRsaPrivateKey | [optional] JSON encoded private key | 0.7 | privateKeyPem | [Pem](formats.md#DataTypes) | Pem encoded private key | | privateKeyPkcs8 | [Der](formats.md#DataTypes) | Pkcs 8 encoded private key | | sha | [MdName](formats.md#HashFunctions) | The hash function for hashing the label. | | @@ -541,7 +681,7 @@ Fields in RsaesPkcs1TestGroup are\: d | [BigInt](formats.md#DataTypes) | The private exponent | | e | [BigInt](formats.md#DataTypes) | The public exponent | | n | [BigInt](formats.md#DataTypes) | The modulus of the key | | -privateKeyJwk | JSON | JWK encoded private key | 0.7 | +privateKeyJwk | JwkRsaPrivateKey | JWK encoded private key | 0.7 | privateKeyPem | [Pem](formats.md#DataTypes) | Pem encoded private key | | privateKeyPkcs8 | [Der](formats.md#DataTypes) | Pkcs 8 encoded private key. | | type | str | the type of the test | | '[RsaesPkcs1Decrypt](files.md#RsaesPkcs1Decrypt)' @@ -568,12 +708,12 @@ d | [BigInt](formats.md#DataTypes) | Th e | [BigInt](formats.md#DataTypes) | The public exponent | | | keyAsn | [Der](formats.md#DataTypes) | DER encoding of the sequence [n, e] | | | keyDer | [Der](formats.md#DataTypes) | DER encoding of the public key | | | -keyJwk | Json | [Optional] Private key in JWK format | RFC 7517 | 0.7 | +keyJwk | JwkRsaPublicKey | [Optional] public key in JWK format | RFC 7517 | 0.7 | keyPem | [Pem](formats.md#DataTypes) | Pem encoded public key | | | keySize | int | the size of the modulus in bits | | | n | [BigInt](formats.md#DataTypes) | The modulus of the key | | | privateKeyDer | [Der](formats.md#DataTypes) | DER encoding of the private key | | | -privateKeyJwk | Json | [Optional] Private key in JWK format | RFC 7517 | 0.7 | +privateKeyJwk | JwkRsaPrivateKey | [Optional] Private key in JWK format | RFC 7517 | 0.7 | privateKeyPem | Pem | Pem encoded private key | | | sha | [MdName](formats.md#HashFunctions) | the hash function used for the message | | | type | str | the type of the test | | | '[RsassaPkcs1Generate](files.md#RsassaPkcs1Generate)' @@ -589,7 +729,7 @@ d | [BigInt](formats.md#DataTypes) | The pri e | [BigInt](formats.md#DataTypes) | The public exponent | | | keyAsn | [Der](formats.md#DataTypes) | ASN encoding of the sequence [n, e] | | | keyDer | [Der](formats.md#DataTypes) | ASN encoding of the public key | | | -keyJwk | Json | The public key in JWK format. The key is missing if the signature algorithm for the given hash is not defined. | RFC 7517 | 0.7 | +keyJwk | JwkRsaPublicKey | The public key in JWK format. The key is missing if the signature algorithm for the given hash is not defined. | RFC 7517 | 0.7 | keyPem | [Pem](formats.md#DataTypes) | Pem encoded public key | | | keySize | int | the size of the modulus in bits | | | n | [BigInt](formats.md#DataTypes) | The modulus of the key | | | @@ -733,11 +873,11 @@ the jwk format. Fields additional to the fields in TestVector are\: -**name** | **type** | **desc** | **ref** --------- | -------------------------------- | ----------------------------- | ------- -public | JSON | the public key in jwk format | RFC 8037 -private | JSON | the private key in jwk format | RFC 8037 -shared | [HexBytes](formats.md#DataTypes) | the shared secret | +**name** | **type** | **desc** | **ref** +-------- | -------------------------------- | ----------------------------------------- | ------- +public | JSON | valid or invalid public key in jwk format | RFC 8037 +private | JwkXdhPrivateKey | the private key in jwk format | RFC 8037 +shared | [HexBytes](formats.md#DataTypes) | the shared secret | Used in [XdhJwkTestGroup](#XdhJwkTestGroup).