From: Matt Caswell Date: Fri, 1 Dec 2017 17:59:23 +0000 (+0000) Subject: Add test vectors for X448 and Ed448 X-Git-Tag: OpenSSL_1_1_1-pre3~201 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=92521a3ae789fcfed35790784c20f30b41651985;p=oweals%2Fopenssl.git Add test vectors for X448 and Ed448 This adds the Ed448 test vectors from RFC8032 and the X448 test vectors from RFC7748. Reviewed-by: Rich Salz Reviewed-by: Kurt Roeckx (Merged from https://github.com/openssl/openssl/pull/5481) --- diff --git a/test/recipes/30-test_evp_data/evppkey.txt b/test/recipes/30-test_evp_data/evppkey.txt index 2e88c119d8..017ab41f16 100644 --- a/test/recipes/30-test_evp_data/evppkey.txt +++ b/test/recipes/30-test_evp_data/evppkey.txt @@ -748,6 +748,56 @@ Result = KEYOP_INIT_ERROR Function = EVP_PKEY_verify_init Reason = operation not supported for this keytype +Title = X448 test vectors (from RFC7748 6.2) + +PrivateKey=Alice-448 +-----BEGIN PRIVATE KEY----- +MEYCAQAwBQYDK2VvBDoEOJqPSSXRUZ9Xdc9GsEtYANTunui66LxVZdSYwo3Zybr1 +dKlBl0SJc5EAY4Km8SerHZrC2MClmHJr +-----END PRIVATE KEY----- + +PublicKey=Alice-448-PUBLIC +-----BEGIN PUBLIC KEY----- +MEIwBQYDK2VvAzkAmwj3zDG34+Z9ItWuoSEHSic70rg94Jxj+qc9LCLF2bvINmRy +QdlT1AxbEtqIEg1TF3+A5TLEH6A= +-----END PUBLIC KEY----- + +PrivPubKeyPair = Alice-448:Alice-448-PUBLIC + +PrivateKey=Bob-448 +-----BEGIN PRIVATE KEY----- +MEYCAQAwBQYDK2VvBDoEOBwwanrCoOLgmQspRHDLoznmRTdysHWBHY+tDR1pJ8Eg +u17olysNPiE3TJySGwnRsDZvELZRc5kt +-----END PRIVATE KEY----- + +PublicKey=Bob-448-PUBLIC +-----BEGIN PUBLIC KEY----- +MEIwBQYDK2VvAzkAPreoKbDNIPW8/AtZm2/sz22kYnEHvbDU80W0MCfYuXL8PjT7 +QjKhPKcG3LV67D2uB73BxnvzNgk= +-----END PUBLIC KEY----- + +PrivPubKeyPair = Bob-448:Bob-448-PUBLIC + +Derive=Alice-448 +PeerKey=Bob-448-PUBLIC +SharedSecret=07fff4181ac6cc95ec1c16a94a0f74d12da232ce40a77552281d282bb60c0b56fd2464c335543936521c24403085d59a449a5037514a879d + +Derive=Bob-448 +PeerKey=Alice-448-PUBLIC +SharedSecret=07fff4181ac6cc95ec1c16a94a0f74d12da232ce40a77552281d282bb60c0b56fd2464c335543936521c24403085d59a449a5037514a879d + +# Illegal sign/verify operations with X448 key + +Sign=Alice-448 +Result = KEYOP_INIT_ERROR +Function = EVP_PKEY_sign_init +Reason = operation not supported for this keytype + +Verify=Alice-448 +Result = KEYOP_INIT_ERROR +Function = EVP_PKEY_verify_init +Reason = operation not supported for this keytype + # Additional RSA-PSS and RSA-OAEP tests converted from # ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1-vec.zip @@ -17172,9 +17222,18 @@ Result = KEYPAIR_MISMATCH PrivPubKeyPair = Bob-25519:Alice-25519-PUBLIC Result = KEYPAIR_MISMATCH +PrivPubKeyPair = Alice-448:Bob-448-PUBLIC +Result = KEYPAIR_MISMATCH + +PrivPubKeyPair = Bob-448:Alice-448-PUBLIC +Result = KEYPAIR_MISMATCH + PrivPubKeyPair = Alice-25519:P-256-PUBLIC Result = KEYPAIR_TYPE_MISMATCH +PrivPubKeyPair = Alice-448:P-256-PUBLIC +Result = KEYPAIR_TYPE_MISMATCH + PrivPubKeyPair = RSA-2048:P-256-PUBLIC Result = KEYPAIR_TYPE_MISMATCH @@ -17448,6 +17507,198 @@ DigestSign = SHA256 Key = ED25519-1 Result = DIGESTSIGNINIT_ERROR + +Title = ED448 tests from RFC8032 + +PrivateKey=ED448-1 +-----BEGIN PRIVATE KEY----- +MEcCAQAwBQYDK2VxBDsEOWyCpWLLgI0Q1jK+ichRPr9skp803fqMn2PJlg7240ij +UoyKP8wvBE45o/xblEkvjwMudUmiAJj5Ww== +-----END PRIVATE KEY----- + +PrivateKey=ED448-2 +-----BEGIN PRIVATE KEY----- +MEcCAQAwBQYDK2VxBDsEOcTqsF01cAfGMvPbtISJkk1VKwj+DDU6DUofAKzaLEY6 +++pnxejSh3xeO8OXplmUnvgCHpVOChInTg== +-----END PRIVATE KEY----- + +PrivateKey=ED448-3 +-----BEGIN PRIVATE KEY----- +MEcCAQAwBQYDK2VxBDsEOc0j0k9xQnTnRDQyN7kykPUR9kJfmOZEWf8gPomFCD/9 +9gUAVTq8DgXNAhhL24nEzNZ+GHlRJn6zKA== +-----END PRIVATE KEY----- + +PrivateKey=ED448-4 +-----BEGIN PRIVATE KEY----- +MEcCAQAwBQYDK2VxBDsEOSWM3UraMu2cn/VOY3Vq5YL7j6sqxyHyyOZ2pydoUT2T +n2Pd21VgkTPymt+G7Jkp3MtSwcX9L/fiGw== +-----END PRIVATE KEY----- + +PrivateKey=ED448-5 +-----BEGIN PRIVATE KEY----- +MEcCAQAwBQYDK2VxBDsEOX706EVEI2dS+7VrjzGiOhDkKBT19VygN83MEcZMmjsp +ScG7YHADFGEXMqbC/qmO68AmahGpOXAQDg== +-----END PRIVATE KEY----- + +PrivateKey=ED448-6 +-----BEGIN PRIVATE KEY----- +MEcCAQAwBQYDK2VxBDsEOdZd80GtE+AIVnaIuu3ajp3NwX3AJJdOpbQie2Uw4zm/ +8h+Z5oymlo88ym3+D7n0+rT6E11VQuo/AQ== +-----END PRIVATE KEY----- + +PrivateKey=ED448-7 +-----BEGIN PRIVATE KEY----- +MEcCAQAwBQYDK2VxBDsEOS7F/jwXBFq9sTal5qkT4yq3WuaLU9L8FJt35QQTLTdW +m352a6dKGb1hYjQ6IchZCqnOvKkBTGNt9Q== +-----END PRIVATE KEY----- + +PrivateKey=ED448-8 +-----BEGIN PRIVATE KEY----- +MEcCAQAwBQYDK2VxBDsEOYctCTeA9dNzDffCEmZLN7ig8k9WgQ2qg4LNT6P3djTs +RNxU8cLtm+qG+vt2Mti+GZ6hZfWtVd2c6A== +-----END PRIVATE KEY----- + +PublicKey=ED448-1-PUBLIC +-----BEGIN PUBLIC KEY----- +MEMwBQYDK2VxAzoAX9dEm1m0Yf0s54fsYWrUah2hNCSFpw4fig6nXYDpZ3jt8SR2 +m0bHBhvWeD3x5Q9s0foavq/oJWGA +-----END PUBLIC KEY----- + +PublicKey=ED448-2-PUBLIC +-----BEGIN PUBLIC KEY----- +MEMwBQYDK2VxAzoAQ7oo9DDN/0Vq5TFUX37NCsg0pV2TWMA3K/oMbGeYwIZq6gHr +AHQoArhDjqTLghacI1FgYntMOpSA +-----END PUBLIC KEY----- + +PublicKey=ED448-3-PUBLIC +-----BEGIN PUBLIC KEY----- +MEMwBQYDK2VxAzoA3OqeePNaG/NJmoMbELhskKrAHNhLZ6AQm1WjbpMoseNl/OFh +1xznExpUPqTLX36fHYsAaWRHABQA +-----END PUBLIC KEY----- + +PublicKey=ED448-4-PUBLIC +-----BEGIN PUBLIC KEY----- +MEMwBQYDK2VxAzoAO6FtoMbyzB8wGHdAdW9eeY1rxfwBXXxjzJUQ7j/UStwk2Olo +tuRub5TRm5RTYXJr114UnvCYF/WA +-----END PUBLIC KEY----- + +PublicKey=ED448-5-PUBLIC +-----BEGIN PUBLIC KEY----- +MEMwBQYDK2VxAzoAs9oHmwqkk6V3ICnwRnuuvuWoES2dOiJTI2HaKU97s4FcXcWe +F2tNnzgcoJOOE8bAexdL5l36V46A +-----END PUBLIC KEY----- + +PublicKey=ED448-6-PUBLIC +-----BEGIN PUBLIC KEY----- +MEMwBQYDK2VxAzoA35cF9Y7bq4Asf4Njz+VWCrHGEywgqfHdFjSDom+KxTo51oCL +9KHfvSYbCZuwOz+1CQbLKL2KCB8A +-----END PUBLIC KEY----- + +PublicKey=ED448-7-PUBLIC +-----BEGIN PUBLIC KEY----- +MEMwBQYDK2VxAzoAeXVvAU3P4gefXdnnGL5BceLvJIagjyUYb2v/Q6mTa5v+EkAr +CK5leYo9geIunsgOdpCGLvPU7ToA +-----END PUBLIC KEY----- + +PublicKey=ED448-8-PUBLIC +-----BEGIN PUBLIC KEY----- +MEMwBQYDK2VxAzoAqBsuinClrJT/28ybrfw/6wgB8lhXi7EUrUTs4ewOeZ2gjv+4 +HF1oXAxW9k7srvjN8RzDhzeDjPQA +-----END PUBLIC KEY----- + +PrivPubKeyPair = ED448-1:ED448-1-PUBLIC + +PrivPubKeyPair = ED448-2:ED448-2-PUBLIC + +PrivPubKeyPair = ED448-3:ED448-3-PUBLIC + +PrivPubKeyPair = ED448-4:ED448-4-PUBLIC + +PrivPubKeyPair = ED448-5:ED448-5-PUBLIC + +PrivPubKeyPair = ED448-6:ED448-6-PUBLIC + +PrivPubKeyPair = ED448-7:ED448-7-PUBLIC + +PrivPubKeyPair = ED448-8:ED448-8-PUBLIC + +OneShotDigestSign = NULL +Key = ED448-1 +Input = "" +Output = 533a37f6bbe457251f023c0d88f976ae2dfb504a843e34d2074fd823d41a591f2b233f034f628281f2fd7a22ddd47d7828c59bd0a21bfd3980ff0d2028d4b18a9df63e006c5d1c2d345b925d8dc00b4104852db99ac5c7cdda8530a113a0f4dbb61149f05a7363268c71d95808ff2e652600 + +OneShotDigestSign = NULL +Key = ED448-2 +Input = 03 +Output = 26b8f91727bd62897af15e41eb43c377efb9c610d48f2335cb0bd0087810f4352541b143c4b981b7e18f62de8ccdf633fc1bf037ab7cd779805e0dbcc0aae1cbcee1afb2e027df36bc04dcecbf154336c19f0af7e0a6472905e799f1953d2a0ff3348ab21aa4adafd1d234441cf807c03a00 + +OneShotDigestSign = NULL +Key = ED448-3 +Input = 0c3e544074ec63b0265e0c +Output = 1f0a8888ce25e8d458a21130879b840a9089d999aaba039eaf3e3afa090a09d389dba82c4ff2ae8ac5cdfb7c55e94d5d961a29fe0109941e00b8dbdeea6d3b051068df7254c0cdc129cbe62db2dc957dbb47b51fd3f213fb8698f064774250a5028961c9bf8ffd973fe5d5c206492b140e00 + +OneShotDigestSign = NULL +Key = ED448-4 +Input = 64a65f3cdedcdd66811e2915 +Output = 7eeeab7c4e50fb799b418ee5e3197ff6bf15d43a14c34389b59dd1a7b1b85b4ae90438aca634bea45e3a2695f1270f07fdcdf7c62b8efeaf00b45c2c96ba457eb1a8bf075a3db28e5c24f6b923ed4ad747c3c9e03c7079efb87cb110d3a99861e72003cbae6d6b8b827e4e6c143064ff3c00 + +OneShotDigestSign = NULL +Key = ED448-5 +Input = 64a65f3cdedcdd66811e2915e7 +Output = 6a12066f55331b6c22acd5d5bfc5d71228fbda80ae8dec26bdd306743c5027cb4890810c162c027468675ecf645a83176c0d7323a2ccde2d80efe5a1268e8aca1d6fbc194d3f77c44986eb4ab4177919ad8bec33eb47bbb5fc6e28196fd1caf56b4e7e0ba5519234d047155ac727a1053100 + +OneShotDigestSign = NULL +Key = ED448-6 +Input = bd0f6a3747cd561bdddf4640a332461a4a30a12a434cd0bf40d766d9c6d458e5512204a30c17d1f50b5079631f64eb3112182da3005835461113718d1a5ef944 +Output = 554bc2480860b49eab8532d2a533b7d578ef473eeb58c98bb2d0e1ce488a98b18dfde9b9b90775e67f47d4a1c3482058efc9f40d2ca033a0801b63d45b3b722ef552bad3b4ccb667da350192b61c508cf7b6b5adadc2c8d9a446ef003fb05cba5f30e88e36ec2703b349ca229c2670833900 + +OneShotDigestSign = NULL +Key = ED448-7 +Input = 15777532b0bdd0d1389f636c5f6b9ba734c90af572877e2d272dd078aa1e567cfa80e12928bb542330e8409f3174504107ecd5efac61ae7504dabe2a602ede89e5cca6257a7c77e27a702b3ae39fc769fc54f2395ae6a1178cab4738e543072fc1c177fe71e92e25bf03e4ecb72f47b64d0465aaea4c7fad372536c8ba516a6039c3c2a39f0e4d832be432dfa9a706a6e5c7e19f397964ca4258002f7c0541b590316dbc5622b6b2a6fe7a4abffd96105eca76ea7b98816af0748c10df048ce012d901015a51f189f3888145c03650aa23ce894c3bd889e030d565071c59f409a9981b51878fd6fc110624dcbcde0bf7a69ccce38fabdf86f3bef6044819de11 +Output = c650ddbb0601c19ca11439e1640dd931f43c518ea5bea70d3dcde5f4191fe53f00cf966546b72bcc7d58be2b9badef28743954e3a44a23f880e8d4f1cfce2d7a61452d26da05896f0a50da66a239a8a188b6d825b3305ad77b73fbac0836ecc60987fd08527c1a8e80d5823e65cafe2a3d00 + +OneShotDigestSign = NULL +Key = ED448-8 +Input = 6ddf802e1aae4986935f7f981ba3f0351d6273c0a0c22c9c0e8339168e675412a3debfaf435ed651558007db4384b650fcc07e3b586a27a4f7a00ac8a6fec2cd86ae4bf1570c41e6a40c931db27b2faa15a8cedd52cff7362c4e6e23daec0fbc3a79b6806e316efcc7b68119bf46bc76a26067a53f296dafdbdc11c77f7777e972660cf4b6a9b369a6665f02e0cc9b6edfad136b4fabe723d2813db3136cfde9b6d044322fee2947952e031b73ab5c603349b307bdc27bc6cb8b8bbd7bd323219b8033a581b59eadebb09b3c4f3d2277d4f0343624acc817804728b25ab797172b4c5c21a22f9c7839d64300232eb66e53f31c723fa37fe387c7d3e50bdf9813a30e5bb12cf4cd930c40cfb4e1fc622592a49588794494d56d24ea4b40c89fc0596cc9ebb961c8cb10adde976a5d602b1c3f85b9b9a001ed3c6a4d3b1437f52096cd1956d042a597d561a596ecd3d1735a8d570ea0ec27225a2c4aaff26306d1526c1af3ca6d9cf5a2c98f47e1c46db9a33234cfd4d81f2c98538a09ebe76998d0d8fd25997c7d255c6d66ece6fa56f11144950f027795e653008f4bd7ca2dee85d8e90f3dc315130ce2a00375a318c7c3d97be2c8ce5b6db41a6254ff264fa6155baee3b0773c0f497c573f19bb4f4240281f0b1f4f7be857a4e59d416c06b4c50fa09e1810ddc6b1467baeac5a3668d11b6ecaa901440016f389f80acc4db977025e7f5924388c7e340a732e554440e76570f8dd71b7d640b3450d1fd5f0410a18f9a3494f707c717b79b4bf75c98400b096b21653b5d217cf3565c9597456f70703497a078763829bc01bb1cbc8fa04eadc9a6e3f6699587a9e75c94e5bab0036e0b2e711392cff0047d0d6b05bd2a588bc109718954259f1d86678a579a3120f19cfb2963f177aeb70f2d4844826262e51b80271272068ef5b3856fa8535aa2a88b2d41f2a0e2fda7624c2850272ac4a2f561f8f2f7a318bfd5caf9696149e4ac824ad3460538fdc25421beec2cc6818162d06bbed0c40a387192349db67a118bada6cd5ab0140ee273204f628aad1c135f770279a651e24d8c14d75a6059d76b96a6fd857def5e0b354b27ab937a5815d16b5fae407ff18222c6d1ed263be68c95f32d908bd895cd76207ae726487567f9a67dad79abec316f683b17f2d02bf07e0ac8b5bc6162cf94697b3c27cd1fea49b27f23ba2901871962506520c392da8b6ad0d99f7013fbc06c2c17a569500c8a7696481c1cd33e9b14e40b82e79a5f5db82571ba97bae3ad3e0479515bb0e2b0f3bfcd1fd33034efc6245eddd7ee2086ddae2600d8ca73e214e8c2b0bdb2b047c6a464a562ed77b73d2d841c4b34973551257713b753632efba348169abc90a68f42611a40126d7cb21b58695568186f7e569d2ff0f9e745d0487dd2eb997cafc5abf9dd102e62ff66cba87 +Output = e301345a41a39a4d72fff8df69c98075a0cc082b802fc9b2b6bc503f926b65bddf7f4c8f1cb49f6396afc8a70abe6d8aef0db478d4c6b2970076c6a0484fe76d76b3a97625d79f1ce240e7c576750d295528286f719b413de9ada3e8eb78ed573603ce30d8bb761785dc30dbc320869e1a00 + +# Verify test +OneShotDigestVerify = NULL +Key = ED448-1-PUBLIC +Input = "" +Output = 533a37f6bbe457251f023c0d88f976ae2dfb504a843e34d2074fd823d41a591f2b233f034f628281f2fd7a22ddd47d7828c59bd0a21bfd3980ff0d2028d4b18a9df63e006c5d1c2d345b925d8dc00b4104852db99ac5c7cdda8530a113a0f4dbb61149f05a7363268c71d95808ff2e652600 + +# Corrupted input +OneShotDigestVerify = NULL +Key = ED448-1-PUBLIC +Input = "bad" +Output = 533a37f6bbe457251f023c0d88f976ae2dfb504a843e34d2074fd823d41a591f2b233f034f628281f2fd7a22ddd47d7828c59bd0a21bfd3980ff0d2028d4b18a9df63e006c5d1c2d345b925d8dc00b4104852db99ac5c7cdda8530a113a0f4dbb61149f05a7363268c71d95808ff2e652600 +Result = VERIFY_ERROR + +# Corrupted signature +OneShotDigestVerify = NULL +Key = ED448-1-PUBLIC +Input = "" +Output = 533a37f6bbe457251f023c0d88f976ae2dfb504a843e34d2074fd823d41a591f2b233f034f628281f2fd7a22ddd47d7828c59bd0a21bfd3980ff0d2028d4b18a9df63e006c5d1c2d345b925d8dc00b4104852db99ac5c7cdda8530a113a0f4dbb61149f05a7363268c71d95808ff2e652601 +Result = VERIFY_ERROR + +# Make sure update calls return an error +DigestSign = NULL +Key = ED448-1 +Input = "Test" +Result = DIGESTUPDATE_ERROR + +DigestVerify = NULL +Key = ED448-1-PUBLIC +Input = "Test" +Result = DIGESTUPDATE_ERROR + +# Attempt to set invalid digest +DigestSign = SHA256 +Key = ED448-1 +Result = DIGESTSIGNINIT_ERROR + + # Key generation tests KeyGen = rsaEncryption Ctrl = rsa_keygen_bits:128