mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-20 07:17:32 +09:00
Issue #1338 - Part 2: Update NSS to 3.48-RTM
This commit is contained in:
parent
1a92143e68
commit
c57cac24e8
885 changed files with 1650639 additions and 59530 deletions
0
security/nss/gtests/common/__init__.py
Normal file
0
security/nss/gtests/common/__init__.py
Normal file
|
|
@ -21,6 +21,13 @@
|
|||
'libraries': [
|
||||
'-lws2_32',
|
||||
],
|
||||
'conditions': [
|
||||
['static_libs==1', {
|
||||
'libraries': [
|
||||
'-ladvapi32',
|
||||
],
|
||||
}],
|
||||
],
|
||||
}],
|
||||
['OS=="android"', {
|
||||
'libraries': [
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
#include "nspr.h"
|
||||
#include "nss.h"
|
||||
#include "ssl.h"
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
|
|
@ -10,10 +9,23 @@
|
|||
int main(int argc, char **argv) {
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
|
||||
if (NSS_NoDB_Init(nullptr) != SECSuccess) {
|
||||
return 1;
|
||||
const char *workdir = "";
|
||||
uint32_t flags = NSS_INIT_READONLY;
|
||||
|
||||
for (int i = 0; i < argc; i++) {
|
||||
if (!strcmp(argv[i], "-d")) {
|
||||
if (i + 1 >= argc) {
|
||||
PR_fprintf(PR_STDERR, "Usage: %s [-d <dir> [-w]]\n", argv[0]);
|
||||
exit(2);
|
||||
}
|
||||
workdir = argv[i + 1];
|
||||
i++;
|
||||
} else if (!strcmp(argv[i], "-w")) {
|
||||
flags &= ~NSS_INIT_READONLY;
|
||||
}
|
||||
}
|
||||
if (NSS_SetDomesticPolicy() != SECSuccess) {
|
||||
|
||||
if (NSS_Initialize(workdir, "", "", SECMOD_DB, flags) != SECSuccess) {
|
||||
return 1;
|
||||
}
|
||||
int rv = RUN_ALL_TESTS();
|
||||
|
|
|
|||
3299
security/nss/gtests/common/testvectors/chachapoly-vectors.h
Normal file
3299
security/nss/gtests/common/testvectors/chachapoly-vectors.h
Normal file
File diff suppressed because it is too large
Load diff
1879
security/nss/gtests/common/testvectors/curve25519-vectors.h
Normal file
1879
security/nss/gtests/common/testvectors/curve25519-vectors.h
Normal file
File diff suppressed because it is too large
Load diff
1535
security/nss/gtests/common/testvectors/gcm-vectors.h
Normal file
1535
security/nss/gtests/common/testvectors/gcm-vectors.h
Normal file
File diff suppressed because it is too large
Load diff
1940
security/nss/gtests/common/testvectors/kw-vectors.h
Normal file
1940
security/nss/gtests/common/testvectors/kw-vectors.h
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,117 @@
|
|||
/* vim: set ts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/* This file is generated from sources in nss/gtests/common/wycheproof
|
||||
* automatically and should not be touched manually.
|
||||
* Generation is trigged by calling ./mach wycheproof */
|
||||
|
||||
#ifndef chachapoly_vectors_h__
|
||||
#define chachapoly_vectors_h__
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
typedef struct chaChaTestVectorStr {
|
||||
uint32_t id;
|
||||
std::vector<uint8_t> Data;
|
||||
std::vector<uint8_t> AAD;
|
||||
std::vector<uint8_t> Key;
|
||||
std::vector<uint8_t> IV;
|
||||
std::vector<uint8_t> CT;
|
||||
bool invalidTag;
|
||||
bool invalidIV;
|
||||
} chaChaTestVector;
|
||||
|
||||
// ChaCha20/Poly1305 Test Vector 1, RFC 7539
|
||||
// <http://tools.ietf.org/html/rfc7539#section-2.8.2>
|
||||
// ChaCha20/Poly1305 Test Vector 2, RFC 7539
|
||||
// <http://tools.ietf.org/html/rfc7539#appendix-A.5>
|
||||
const chaChaTestVector kChaCha20Vectors[] = {
|
||||
{0,
|
||||
{0x4c, 0x61, 0x64, 0x69, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x47,
|
||||
0x65, 0x6e, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x20, 0x6f, 0x66, 0x20,
|
||||
0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x6f, 0x66,
|
||||
0x20, 0x27, 0x39, 0x39, 0x3a, 0x20, 0x49, 0x66, 0x20, 0x49, 0x20, 0x63,
|
||||
0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x20, 0x79,
|
||||
0x6f, 0x75, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x6f, 0x6e, 0x65, 0x20,
|
||||
0x74, 0x69, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20,
|
||||
0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x2c, 0x20, 0x73, 0x75, 0x6e, 0x73,
|
||||
0x63, 0x72, 0x65, 0x65, 0x6e, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20,
|
||||
0x62, 0x65, 0x20, 0x69, 0x74, 0x2e},
|
||||
{0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7},
|
||||
{0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a,
|
||||
0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95,
|
||||
0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f},
|
||||
{0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47},
|
||||
{0xd3, 0x1a, 0x8d, 0x34, 0x64, 0x8e, 0x60, 0xdb, 0x7b, 0x86, 0xaf, 0xbc,
|
||||
0x53, 0xef, 0x7e, 0xc2, 0xa4, 0xad, 0xed, 0x51, 0x29, 0x6e, 0x08, 0xfe,
|
||||
0xa9, 0xe2, 0xb5, 0xa7, 0x36, 0xee, 0x62, 0xd6, 0x3d, 0xbe, 0xa4, 0x5e,
|
||||
0x8c, 0xa9, 0x67, 0x12, 0x82, 0xfa, 0xfb, 0x69, 0xda, 0x92, 0x72, 0x8b,
|
||||
0x1a, 0x71, 0xde, 0x0a, 0x9e, 0x06, 0x0b, 0x29, 0x05, 0xd6, 0xa5, 0xb6,
|
||||
0x7e, 0xcd, 0x3b, 0x36, 0x92, 0xdd, 0xbd, 0x7f, 0x2d, 0x77, 0x8b, 0x8c,
|
||||
0x98, 0x03, 0xae, 0xe3, 0x28, 0x09, 0x1b, 0x58, 0xfa, 0xb3, 0x24, 0xe4,
|
||||
0xfa, 0xd6, 0x75, 0x94, 0x55, 0x85, 0x80, 0x8b, 0x48, 0x31, 0xd7, 0xbc,
|
||||
0x3f, 0xf4, 0xde, 0xf0, 0x8e, 0x4b, 0x7a, 0x9d, 0xe5, 0x76, 0xd2, 0x65,
|
||||
0x86, 0xce, 0xc6, 0x4b, 0x61, 0x16, 0x1a, 0xe1, 0x0b, 0x59, 0x4f, 0x09,
|
||||
0xe2, 0x6a, 0x7e, 0x90, 0x2e, 0xcb, 0xd0, 0x60, 0x06, 0x91},
|
||||
false,
|
||||
false},
|
||||
{1,
|
||||
{0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2d, 0x44, 0x72, 0x61,
|
||||
0x66, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x64, 0x72, 0x61, 0x66,
|
||||
0x74, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20,
|
||||
0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20,
|
||||
0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x6f, 0x66, 0x20, 0x73,
|
||||
0x69, 0x78, 0x20, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x20, 0x61, 0x6e,
|
||||
0x64, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x75, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x64, 0x2c, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63,
|
||||
0x65, 0x64, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x6f, 0x62, 0x73, 0x6f, 0x6c,
|
||||
0x65, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x6f, 0x74, 0x68, 0x65,
|
||||
0x72, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20,
|
||||
0x61, 0x74, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e,
|
||||
0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x61, 0x70, 0x70,
|
||||
0x72, 0x6f, 0x70, 0x72, 0x69, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6f, 0x20,
|
||||
0x75, 0x73, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74,
|
||||
0x2d, 0x44, 0x72, 0x61, 0x66, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, 0x72,
|
||||
0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x6d, 0x61, 0x74,
|
||||
0x65, 0x72, 0x69, 0x61, 0x6c, 0x20, 0x6f, 0x72, 0x20, 0x74, 0x6f, 0x20,
|
||||
0x63, 0x69, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x20, 0x6f, 0x74,
|
||||
0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x61, 0x73, 0x20,
|
||||
0x2f, 0xe2, 0x80, 0x9c, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x69, 0x6e, 0x20,
|
||||
0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x2f, 0xe2, 0x80,
|
||||
0x9d},
|
||||
{0xf3, 0x33, 0x88, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x91},
|
||||
{0x1c, 0x92, 0x40, 0xa5, 0xeb, 0x55, 0xd3, 0x8a, 0xf3, 0x33, 0x88,
|
||||
0x86, 0x04, 0xf6, 0xb5, 0xf0, 0x47, 0x39, 0x17, 0xc1, 0x40, 0x2b,
|
||||
0x80, 0x09, 0x9d, 0xca, 0x5c, 0xbc, 0x20, 0x70, 0x75, 0xc0},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
|
||||
{0x64, 0xa0, 0x86, 0x15, 0x75, 0x86, 0x1a, 0xf4, 0x60, 0xf0, 0x62, 0xc7,
|
||||
0x9b, 0xe6, 0x43, 0xbd, 0x5e, 0x80, 0x5c, 0xfd, 0x34, 0x5c, 0xf3, 0x89,
|
||||
0xf1, 0x08, 0x67, 0x0a, 0xc7, 0x6c, 0x8c, 0xb2, 0x4c, 0x6c, 0xfc, 0x18,
|
||||
0x75, 0x5d, 0x43, 0xee, 0xa0, 0x9e, 0xe9, 0x4e, 0x38, 0x2d, 0x26, 0xb0,
|
||||
0xbd, 0xb7, 0xb7, 0x3c, 0x32, 0x1b, 0x01, 0x00, 0xd4, 0xf0, 0x3b, 0x7f,
|
||||
0x35, 0x58, 0x94, 0xcf, 0x33, 0x2f, 0x83, 0x0e, 0x71, 0x0b, 0x97, 0xce,
|
||||
0x98, 0xc8, 0xa8, 0x4a, 0xbd, 0x0b, 0x94, 0x81, 0x14, 0xad, 0x17, 0x6e,
|
||||
0x00, 0x8d, 0x33, 0xbd, 0x60, 0xf9, 0x82, 0xb1, 0xff, 0x37, 0xc8, 0x55,
|
||||
0x97, 0x97, 0xa0, 0x6e, 0xf4, 0xf0, 0xef, 0x61, 0xc1, 0x86, 0x32, 0x4e,
|
||||
0x2b, 0x35, 0x06, 0x38, 0x36, 0x06, 0x90, 0x7b, 0x6a, 0x7c, 0x02, 0xb0,
|
||||
0xf9, 0xf6, 0x15, 0x7b, 0x53, 0xc8, 0x67, 0xe4, 0xb9, 0x16, 0x6c, 0x76,
|
||||
0x7b, 0x80, 0x4d, 0x46, 0xa5, 0x9b, 0x52, 0x16, 0xcd, 0xe7, 0xa4, 0xe9,
|
||||
0x90, 0x40, 0xc5, 0xa4, 0x04, 0x33, 0x22, 0x5e, 0xe2, 0x82, 0xa1, 0xb0,
|
||||
0xa0, 0x6c, 0x52, 0x3e, 0xaf, 0x45, 0x34, 0xd7, 0xf8, 0x3f, 0xa1, 0x15,
|
||||
0x5b, 0x00, 0x47, 0x71, 0x8c, 0xbc, 0x54, 0x6a, 0x0d, 0x07, 0x2b, 0x04,
|
||||
0xb3, 0x56, 0x4e, 0xea, 0x1b, 0x42, 0x22, 0x73, 0xf5, 0x48, 0x27, 0x1a,
|
||||
0x0b, 0xb2, 0x31, 0x60, 0x53, 0xfa, 0x76, 0x99, 0x19, 0x55, 0xeb, 0xd6,
|
||||
0x31, 0x59, 0x43, 0x4e, 0xce, 0xbb, 0x4e, 0x46, 0x6d, 0xae, 0x5a, 0x10,
|
||||
0x73, 0xa6, 0x72, 0x76, 0x27, 0x09, 0x7a, 0x10, 0x49, 0xe6, 0x17, 0xd9,
|
||||
0x1d, 0x36, 0x10, 0x94, 0xfa, 0x68, 0xf0, 0xff, 0x77, 0x98, 0x71, 0x30,
|
||||
0x30, 0x5b, 0xea, 0xba, 0x2e, 0xda, 0x04, 0xdf, 0x99, 0x7b, 0x71, 0x4d,
|
||||
0x6c, 0x6f, 0x2c, 0x29, 0xa6, 0xad, 0x5c, 0xb4, 0x02, 0x2b, 0x02, 0x70,
|
||||
0x9b, 0xee, 0xad, 0x9d, 0x67, 0x89, 0x0c, 0xbb, 0x22, 0x39, 0x23, 0x36,
|
||||
0xfe, 0xa1, 0x85, 0x1f, 0x38},
|
||||
false,
|
||||
false}};
|
||||
|
||||
#endif // chachapoly_vectors_h__
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
/* vim: set ts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef curve25519_vectors_h__
|
||||
#define curve25519_vectors_h__
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
typedef struct curve25519_testvector_str {
|
||||
std::vector<uint8_t> private_key;
|
||||
std::vector<uint8_t> public_key;
|
||||
std::vector<uint8_t> secret;
|
||||
bool valid;
|
||||
} curve25519_testvector;
|
||||
|
||||
const curve25519_testvector kCurve25519Vectors[] = {
|
||||
{{0x30, 0x67, 0x02, 0x01, 0x00, 0x30, 0x14, 0x06, 0x07, 0x2a, 0x86, 0x48,
|
||||
0xce, 0x3d, 0x02, 0x01, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xda,
|
||||
0x47, 0x0f, 0x01, 0x04, 0x4c, 0x30, 0x4a, 0x02, 0x01, 0x01, 0x04, 0x20,
|
||||
0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72,
|
||||
0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a,
|
||||
0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x2a, 0xa1, 0x23, 0x03, 0x21,
|
||||
0x00, 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d,
|
||||
0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a,
|
||||
0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a},
|
||||
{0x30, 0x39, 0x30, 0x14, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02,
|
||||
0x01, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xda, 0x47, 0x0f, 0x01,
|
||||
0x03, 0x21, 0x00, 0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 0xd3,
|
||||
0x5b, 0x61, 0xc2, 0xec, 0xe4, 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b,
|
||||
0x78, 0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, 0x6f, 0x88, 0x2b, 0x4f},
|
||||
{0x4a, 0x5d, 0x9d, 0x5b, 0xa4, 0xce, 0x2d, 0xe1, 0x72, 0x8e, 0x3b,
|
||||
0xf4, 0x80, 0x35, 0x0f, 0x25, 0xe0, 0x7e, 0x21, 0xc9, 0x47, 0xd1,
|
||||
0x9e, 0x33, 0x76, 0xf0, 0x9b, 0x3c, 0x1e, 0x16, 0x17, 0x42},
|
||||
true},
|
||||
|
||||
// A public key that's too short (31 bytes).
|
||||
{{0x30, 0x67, 0x02, 0x01, 0x00, 0x30, 0x14, 0x06, 0x07, 0x2a, 0x86, 0x48,
|
||||
0xce, 0x3d, 0x02, 0x01, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xda,
|
||||
0x47, 0x0f, 0x01, 0x04, 0x4c, 0x30, 0x4a, 0x02, 0x01, 0x01, 0x04, 0x20,
|
||||
0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72,
|
||||
0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a,
|
||||
0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x2a, 0xa1, 0x23, 0x03, 0x21,
|
||||
0x00, 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d,
|
||||
0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a,
|
||||
0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a},
|
||||
{0x30, 0x38, 0x30, 0x14, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02,
|
||||
0x01, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xda, 0x47, 0x0f, 0x01,
|
||||
0x03, 0x20, 0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 0xd3, 0x5b,
|
||||
0x61, 0xc2, 0xec, 0xe4, 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b, 0x78,
|
||||
0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, 0x6f, 0x88, 0x2b, 0x4f},
|
||||
{},
|
||||
false},
|
||||
|
||||
// A public key that's too long (33 bytes).
|
||||
{{0x30, 0x67, 0x02, 0x01, 0x00, 0x30, 0x14, 0x06, 0x07, 0x2a, 0x86, 0x48,
|
||||
0xce, 0x3d, 0x02, 0x01, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xda,
|
||||
0x47, 0x0f, 0x01, 0x04, 0x4c, 0x30, 0x4a, 0x02, 0x01, 0x01, 0x04, 0x20,
|
||||
0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72,
|
||||
0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a,
|
||||
0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x2a, 0xa1, 0x23, 0x03, 0x21,
|
||||
0x00, 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d,
|
||||
0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a,
|
||||
0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a},
|
||||
{0x30, 0x3a, 0x30, 0x14, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02,
|
||||
0x01, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xda, 0x47, 0x0f, 0x01,
|
||||
0x03, 0x22, 0x00, 0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 0xd3,
|
||||
0x5b, 0x61, 0xc2, 0xec, 0xe4, 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b,
|
||||
0x78, 0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, 0x6f, 0x88, 0x2b, 0x4f, 0x34},
|
||||
{},
|
||||
false}};
|
||||
|
||||
#endif // curve25519_vectors_h__
|
||||
|
|
@ -3,12 +3,17 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/* This file is generated from sources in nss/gtests/common/wycheproof
|
||||
* automatically and should not be touched manually.
|
||||
* Generation is trigged by calling ./mach wycheproof */
|
||||
|
||||
#ifndef gcm_vectors_h__
|
||||
#define gcm_vectors_h__
|
||||
|
||||
#include <string>
|
||||
|
||||
typedef struct gcm_kat_str {
|
||||
uint32_t test_id;
|
||||
std::string key;
|
||||
std::string plaintext;
|
||||
std::string additional_data;
|
||||
|
|
@ -16,49 +21,55 @@ typedef struct gcm_kat_str {
|
|||
std::string hash_key;
|
||||
std::string ghash;
|
||||
std::string result;
|
||||
bool invalid_ct;
|
||||
bool invalid_iv;
|
||||
} gcm_kat_value;
|
||||
|
||||
/*
|
||||
* http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf
|
||||
*/
|
||||
const gcm_kat_value kGcmKatValues[] = {
|
||||
{"00000000000000000000000000000000", "", "", "000000000000000000000000",
|
||||
{1, "00000000000000000000000000000000", "", "", "000000000000000000000000",
|
||||
"66e94bd4ef8a2c3b884cfa59ca342b2e", "00000000000000000000000000000000",
|
||||
"58e2fccefa7e3061367f1d57a4e7455a"},
|
||||
"58e2fccefa7e3061367f1d57a4e7455a", false, false},
|
||||
|
||||
{"00000000000000000000000000000000", "00000000000000000000000000000000", "",
|
||||
"000000000000000000000000", "66e94bd4ef8a2c3b884cfa59ca342b2e",
|
||||
{2, "00000000000000000000000000000000", "00000000000000000000000000000000",
|
||||
"", "000000000000000000000000", "66e94bd4ef8a2c3b884cfa59ca342b2e",
|
||||
"f38cbb1ad69223dcc3457ae5b6b0f885",
|
||||
"0388dace60b6a392f328c2b971b2fe78ab6e47d42cec13bdf53a67b21257bddf"},
|
||||
"0388dace60b6a392f328c2b971b2fe78ab6e47d42cec13bdf53a67b21257bddf", false,
|
||||
false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308",
|
||||
{3, "feffe9928665731c6d6a8f9467308308",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255",
|
||||
"", "cafebabefacedbaddecaf888", "b83b533708bf535d0aa6e52980d53b78",
|
||||
"7f1b32b81b820d02614f8895ac1d4eac",
|
||||
"42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25"
|
||||
"466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091473f59854d5c2af327cd64a62c"
|
||||
"f35abd2ba6fab4"},
|
||||
"f35abd2ba6fab4",
|
||||
false, false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308",
|
||||
{4, "feffe9928665731c6d6a8f9467308308",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b39",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2", "cafebabefacedbaddecaf888",
|
||||
"b83b533708bf535d0aa6e52980d53b78", "698e57f70e6ecc7fd9463b7260a9ae5f",
|
||||
"42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25"
|
||||
"466931c7d8f6a5aac84aa051ba30b396a0aac973d58e0915bc94fbc3221a5db94fae95ae7"
|
||||
"121a47"},
|
||||
"121a47",
|
||||
false, false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308",
|
||||
{5, "feffe9928665731c6d6a8f9467308308",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b39",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2", "cafebabefacedbad",
|
||||
"b83b533708bf535d0aa6e52980d53b78", "df586bb4c249b92cb6922877e444d37b",
|
||||
"61353b4c2806934a777ff51fa22a4755699b2a714fcdc6f83766e5f97b6c742373806900e"
|
||||
"49f24b22b097544d4896b424989b5e1ebac0f07c23f45983612d2e79e3b0785561be14aac"
|
||||
"a2fccb"},
|
||||
"a2fccb",
|
||||
false, false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308",
|
||||
{6, "feffe9928665731c6d6a8f9467308308",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b39",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2",
|
||||
|
|
@ -67,45 +78,51 @@ const gcm_kat_value kGcmKatValues[] = {
|
|||
"b83b533708bf535d0aa6e52980d53b78", "1c5afe9760d3932f3c9a878aac3dc3de",
|
||||
"8ce24998625615b603a033aca13fb894be9112a5c3a211a8ba262a3cca7e2ca701e4a9a4f"
|
||||
"ba43c90ccdcb281d48c7c6fd62875d2aca417034c34aee5619cc5aefffe0bfa462af43c16"
|
||||
"99d050"},
|
||||
"99d050",
|
||||
false, false},
|
||||
|
||||
{"000000000000000000000000000000000000000000000000", "", "",
|
||||
{7, "000000000000000000000000000000000000000000000000", "", "",
|
||||
"000000000000000000000000", "aae06992acbf52a3e8f4a96ec9300bd7",
|
||||
"00000000000000000000000000000000", "cd33b28ac773f74ba00ed1f312572435"},
|
||||
"00000000000000000000000000000000", "cd33b28ac773f74ba00ed1f312572435",
|
||||
false, false},
|
||||
|
||||
{"000000000000000000000000000000000000000000000000",
|
||||
{8, "000000000000000000000000000000000000000000000000",
|
||||
"00000000000000000000000000000000", "", "000000000000000000000000",
|
||||
"aae06992acbf52a3e8f4a96ec9300bd7", "e2c63f0ac44ad0e02efa05ab6743d4ce",
|
||||
"98e7247c07f0fe411c267e4384b0f6002ff58d80033927ab8ef4d4587514f0fb"},
|
||||
"98e7247c07f0fe411c267e4384b0f6002ff58d80033927ab8ef4d4587514f0fb", false,
|
||||
false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308feffe9928665731c",
|
||||
{9, "feffe9928665731c6d6a8f9467308308feffe9928665731c",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255",
|
||||
"", "cafebabefacedbaddecaf888", "466923ec9ae682214f2c082badb39249",
|
||||
"51110d40f6c8fff0eb1ae33445a889f0",
|
||||
"3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c"
|
||||
"144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710acade2569924a7c8587336bfb1"
|
||||
"18024db8674a14"},
|
||||
"18024db8674a14",
|
||||
false, false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308feffe9928665731c",
|
||||
{10, "feffe9928665731c6d6a8f9467308308feffe9928665731c",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b39",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2", "cafebabefacedbaddecaf888",
|
||||
"466923ec9ae682214f2c082badb39249", "ed2ce3062e4a8ec06db8b4c490e8a268",
|
||||
"3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c"
|
||||
"144c525ac619d18c84a3f4718e2448b2fe324d9ccda27102519498e80f1478f37ba55bd6d"
|
||||
"27618c"},
|
||||
"27618c",
|
||||
false, false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308feffe9928665731c",
|
||||
{11, "feffe9928665731c6d6a8f9467308308feffe9928665731c",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b39",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2", "cafebabefacedbad",
|
||||
"466923ec9ae682214f2c082badb39249", "1e6a133806607858ee80eaf237064089",
|
||||
"0f10f599ae14a154ed24b36e25324db8c566632ef2bbb34f8347280fc4507057fddc29df9"
|
||||
"a471f75c66541d4d4dad1c9e93a19a58e8b473fa0f062f765dcc57fcf623a24094fcca40d"
|
||||
"3533f8"},
|
||||
"3533f8",
|
||||
false, false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308feffe9928665731c",
|
||||
{12, "feffe9928665731c6d6a8f9467308308feffe9928665731c",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b39",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2",
|
||||
|
|
@ -114,45 +131,51 @@ const gcm_kat_value kGcmKatValues[] = {
|
|||
"466923ec9ae682214f2c082badb39249", "82567fb0b4cc371801eadec005968e94",
|
||||
"d27e88681ce3243c4830165a8fdcf9ff1de9a1d8e6b447ef6ef7b79828666e4581e79012a"
|
||||
"f34ddd9e2f037589b292db3e67c036745fa22e7e9b7373bdcf566ff291c25bbb8568fc3d3"
|
||||
"76a6d9"},
|
||||
"76a6d9",
|
||||
false, false},
|
||||
|
||||
{"0000000000000000000000000000000000000000000000000000000000000000", "", "",
|
||||
"000000000000000000000000", "dc95c078a2408989ad48a21492842087",
|
||||
"00000000000000000000000000000000", "530f8afbc74536b9a963b4f1c4cb738b"},
|
||||
{13, "0000000000000000000000000000000000000000000000000000000000000000", "",
|
||||
"", "000000000000000000000000", "dc95c078a2408989ad48a21492842087",
|
||||
"00000000000000000000000000000000", "530f8afbc74536b9a963b4f1c4cb738b",
|
||||
false, false},
|
||||
|
||||
{"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
{14, "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"00000000000000000000000000000000", "", "000000000000000000000000",
|
||||
"dc95c078a2408989ad48a21492842087", "83de425c5edc5d498f382c441041ca92",
|
||||
"cea7403d4d606b6e074ec5d3baf39d18d0d1c8a799996bf0265b98b5d48ab919"},
|
||||
"cea7403d4d606b6e074ec5d3baf39d18d0d1c8a799996bf0265b98b5d48ab919", false,
|
||||
false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308",
|
||||
{15, "feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255",
|
||||
"", "cafebabefacedbaddecaf888", "acbef20579b4b8ebce889bac8732dad7",
|
||||
"4db870d37cb75fcb46097c36230d1612",
|
||||
"522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e485"
|
||||
"90dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015adb094dac5d93471bdec"
|
||||
"1a502270e3cc6c"},
|
||||
"1a502270e3cc6c",
|
||||
false, false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308",
|
||||
{16, "feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b39",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2", "cafebabefacedbaddecaf888",
|
||||
"acbef20579b4b8ebce889bac8732dad7", "8bd0c4d8aacd391e67cca447e8c38f65",
|
||||
"522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e485"
|
||||
"90dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f66276fc6ece0f4e1768cddf8853bb"
|
||||
"2d551b"},
|
||||
"2d551b",
|
||||
false, false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308",
|
||||
{17, "feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b39",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2", "cafebabefacedbad",
|
||||
"acbef20579b4b8ebce889bac8732dad7", "75a34288b8c68f811c52b2e9a2f97f63",
|
||||
"c3762df1ca787d32ae47c13bf19844cbaf1ae14d0b976afac52ff7d79bba9de0feb582d33"
|
||||
"934a4f0954cc2363bc73f7862ac430e64abe499f47c9b1f3a337dbf46a792c45e454913fe"
|
||||
"2ea8f2"},
|
||||
"2ea8f2",
|
||||
false, false},
|
||||
|
||||
{"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308",
|
||||
{18, "feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308",
|
||||
"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c959"
|
||||
"56809532fcf0e2449a6b525b16aedf5aa0de657ba637b39",
|
||||
"feedfacedeadbeeffeedfacedeadbeefabaddad2",
|
||||
|
|
@ -161,12 +184,14 @@ const gcm_kat_value kGcmKatValues[] = {
|
|||
"acbef20579b4b8ebce889bac8732dad7", "d5ffcf6fc5ac4d69722187421a7f170b",
|
||||
"5a8def2f0c9e53f1f75d7853659e2a20eeb2b22aafde6419a058ab4f6f746bf40fc0c3b78"
|
||||
"0f244452da3ebf1c5d82cdea2418997200ef82e44ae7e3fa44a8266ee1c8eb0c8b5d4cf5a"
|
||||
"e9f19a"},
|
||||
"e9f19a",
|
||||
false, false},
|
||||
|
||||
/* Extra, non-NIST, test case to test 64-bit binary multiplication carry
|
||||
* correctness. This is a GHASH-only test. */
|
||||
{"", "", "", "", "0000000000000000fcefef64ffc4766c",
|
||||
{19, "", "", "", "", "0000000000000000fcefef64ffc4766c",
|
||||
"3561e34e52d8b598f9937982512fff27",
|
||||
"0000000000000000ffcef9ebbffdbd8b00000000000000000000000000000000"}};
|
||||
"0000000000000000ffcef9ebbffdbd8b00000000000000000000000000000000", false,
|
||||
false}};
|
||||
|
||||
#endif // gcm_vectors_h__
|
||||
|
|
@ -8,7 +8,21 @@
|
|||
#define util_h__
|
||||
|
||||
#include <cassert>
|
||||
#include <cstdlib>
|
||||
#include <iomanip>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <sys/stat.h>
|
||||
#include <vector>
|
||||
#if defined(_WIN32)
|
||||
#include <windows.h>
|
||||
#include <codecvt>
|
||||
#include <direct.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "nspr.h"
|
||||
|
||||
static inline std::vector<uint8_t> hex_string_to_bytes(std::string s) {
|
||||
std::vector<uint8_t> bytes;
|
||||
|
|
@ -18,4 +32,81 @@ static inline std::vector<uint8_t> hex_string_to_bytes(std::string s) {
|
|||
return bytes;
|
||||
}
|
||||
|
||||
// Given a prefix, attempts to create a unique directory that the user can do
|
||||
// work in without impacting other tests. For example, if given the prefix
|
||||
// "scratch", a directory like "scratch05c17b25" will be created in the current
|
||||
// working directory (or the location specified by NSS_GTEST_WORKDIR, if
|
||||
// defined).
|
||||
// Upon destruction, the implementation will attempt to delete the directory.
|
||||
// However, no attempt is made to first remove files in the directory - the
|
||||
// user is responsible for this. If the directory is not empty, deleting it will
|
||||
// fail.
|
||||
// Statistically, it is technically possible to fail to create a unique
|
||||
// directory name, but this is extremely unlikely given the expected workload of
|
||||
// this implementation.
|
||||
class ScopedUniqueDirectory {
|
||||
public:
|
||||
explicit ScopedUniqueDirectory(const std::string &prefix) {
|
||||
std::string path;
|
||||
const char *workingDirectory = PR_GetEnvSecure("NSS_GTEST_WORKDIR");
|
||||
if (workingDirectory) {
|
||||
path.assign(workingDirectory);
|
||||
}
|
||||
path.append(prefix);
|
||||
for (int i = 0; i < RETRY_LIMIT; i++) {
|
||||
std::string pathCopy(path);
|
||||
// TryMakingDirectory will modify its input. If it fails, we want to throw
|
||||
// away the modified result.
|
||||
if (TryMakingDirectory(pathCopy)) {
|
||||
mPath.assign(pathCopy);
|
||||
break;
|
||||
}
|
||||
}
|
||||
assert(mPath.length() > 0);
|
||||
#if defined(_WIN32)
|
||||
// sqldb always uses UTF-8 regardless of the current system locale.
|
||||
DWORD len =
|
||||
MultiByteToWideChar(CP_ACP, 0, mPath.data(), mPath.size(), nullptr, 0);
|
||||
std::vector<wchar_t> buf(len, L'\0');
|
||||
MultiByteToWideChar(CP_ACP, 0, mPath.data(), mPath.size(), buf.data(),
|
||||
buf.size());
|
||||
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
|
||||
mUTF8Path = converter.to_bytes(std::wstring(buf.begin(), buf.end()));
|
||||
#else
|
||||
mUTF8Path = mPath;
|
||||
#endif
|
||||
}
|
||||
|
||||
// NB: the directory must be empty upon destruction
|
||||
~ScopedUniqueDirectory() { assert(rmdir(mPath.c_str()) == 0); }
|
||||
|
||||
const std::string &GetPath() { return mPath; }
|
||||
const std::string &GetUTF8Path() { return mUTF8Path; }
|
||||
|
||||
private:
|
||||
static const int RETRY_LIMIT = 5;
|
||||
|
||||
static void GenerateRandomName(/*in/out*/ std::string &prefix) {
|
||||
std::stringstream ss;
|
||||
ss << prefix;
|
||||
// RAND_MAX is at least 32767.
|
||||
ss << std::setfill('0') << std::setw(4) << std::hex << rand() << rand();
|
||||
// This will overwrite the value of prefix. This is a little inefficient,
|
||||
// but at least it makes the code simple.
|
||||
ss >> prefix;
|
||||
}
|
||||
|
||||
static bool TryMakingDirectory(/*in/out*/ std::string &prefix) {
|
||||
GenerateRandomName(prefix);
|
||||
#if defined(_WIN32)
|
||||
return _mkdir(prefix.c_str()) == 0;
|
||||
#else
|
||||
return mkdir(prefix.c_str(), 0777) == 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string mPath;
|
||||
std::string mUTF8Path;
|
||||
};
|
||||
|
||||
#endif // util_h__
|
||||
|
|
|
|||
0
security/nss/gtests/common/wycheproof/__init__.py
Normal file
0
security/nss/gtests/common/wycheproof/__init__.py
Normal file
191
security/nss/gtests/common/wycheproof/genTestVectors.py
Normal file
191
security/nss/gtests/common/wycheproof/genTestVectors.py
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
# Imports a JSON testvector file.
|
||||
def import_testvector(file):
|
||||
"""Import a JSON testvector file and return an array of the contained objects."""
|
||||
with open(file) as f:
|
||||
vectors = json.loads(f.read())
|
||||
return vectors
|
||||
|
||||
# Convert a test data string to a hex array.
|
||||
def string_to_hex_array(string):
|
||||
"""Convert a string of hex chars to a string representing a C-format array of hex bytes."""
|
||||
b = bytearray.fromhex(string)
|
||||
result = '{' + ', '.join("{:#04x}".format(x) for x in b) + '}'
|
||||
return result
|
||||
|
||||
# Writes one AES-GCM testvector into C-header format. (Not clang-format conform)
|
||||
class AESGCM():
|
||||
"""Class that provides the generator function for a single AES-GCM test case."""
|
||||
|
||||
def format_testcase(self, vector):
|
||||
"""Format an AES-GCM testcase object. Return a string in C-header format."""
|
||||
result = '{{ {},\n'.format(vector['tcId'])
|
||||
for key in ['key', 'msg', 'aad', 'iv']:
|
||||
result += ' \"{}\",\n'.format(vector[key])
|
||||
result += ' \"\",\n'
|
||||
result += ' \"{}\",\n'.format(vector['tag'])
|
||||
result += ' \"{}\",\n'.format(vector['ct'] + vector['tag'])
|
||||
result += ' {},\n'.format(str(vector['result'] == 'invalid').lower())
|
||||
result += ' {}}},\n\n'.format(str('ZeroLengthIv' in vector['flags']).lower())
|
||||
|
||||
return result
|
||||
|
||||
# Writes one ChaChaPoly testvector into C-header format. (Not clang-format conform)
|
||||
class ChaChaPoly():
|
||||
"""Class that provides the generator function for a single ChaCha test case."""
|
||||
|
||||
def format_testcase(self, testcase):
|
||||
"""Format an ChaCha testcase object. Return a string in C-header format."""
|
||||
result = '\n// Comment: {}'.format(testcase['comment'])
|
||||
result += '\n{{{},\n'.format(testcase['tcId']-1)
|
||||
for key in ['msg', 'aad', 'key', 'iv']:
|
||||
result += '{},\n'.format(string_to_hex_array(testcase[key]))
|
||||
ct = testcase['ct'] + testcase['tag']
|
||||
result += '{},\n'.format(string_to_hex_array(ct))
|
||||
result += '{},\n'.format(str(testcase['result'] == 'invalid').lower())
|
||||
result += '{}}},\n'.format(str(testcase['comment'] == 'invalid nonce size').lower())
|
||||
|
||||
return result
|
||||
|
||||
# Writes one Curve25519 testvector into C-header format. (Not clang-format conform)
|
||||
class Curve25519():
|
||||
"""Class that provides the generator function for a single curve25519 test case."""
|
||||
|
||||
# Static pkcs8 and skpi wrappers for the raw keys from Wycheproof.
|
||||
# The public key section of the pkcs8 wrapper is filled up with 0's, which is
|
||||
# not correct, but acceptable for the tests at this moment because
|
||||
# validity of the public key is not checked.
|
||||
# It's still necessary because of
|
||||
# https://searchfox.org/nss/rev/7bc70a3317b800aac07bad83e74b6c79a9ec5bff/lib/pk11wrap/pk11pk12.c#171
|
||||
pkcs8WrapperStart = "3067020100301406072a8648ce3d020106092b06010401da470f01044c304a0201010420"
|
||||
pkcs8WrapperEnd = "a1230321000000000000000000000000000000000000000000000000000000000000000000"
|
||||
spkiWrapper = "3039301406072a8648ce3d020106092b06010401da470f01032100"
|
||||
|
||||
def format_testcase(self, testcase):
|
||||
result = '\n// Comment: {}'.format(testcase['comment'])
|
||||
result += '\n{{{},\n'.format(string_to_hex_array(self.pkcs8WrapperStart + testcase['private'] + self.pkcs8WrapperEnd))
|
||||
result += '{},\n'.format(string_to_hex_array(self.spkiWrapper + testcase['public']))
|
||||
result += '{},\n'.format(string_to_hex_array(testcase['shared']))
|
||||
|
||||
# Flag 'acceptable' cases with secret == 0 as invalid for NSS.
|
||||
# Flag 'acceptable' cases with forbidden public key values as invalid for NSS.
|
||||
# Flag 'acceptable' cases with small public key (0 or 1) as invalid for NSS.
|
||||
valid = testcase['result'] in ['valid', 'acceptable'] \
|
||||
and not testcase['shared'] == "0000000000000000000000000000000000000000000000000000000000000000" \
|
||||
and not testcase["public"] == "daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" \
|
||||
and not testcase["public"] == "dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" \
|
||||
and not 'Small public key' in testcase['flags']
|
||||
result += '{}}},\n'.format(str(valid).lower())
|
||||
|
||||
return result
|
||||
|
||||
def generate_vectors_file(params):
|
||||
"""
|
||||
Generate and store a .h-file with test vectors for one test.
|
||||
|
||||
params -- Dictionary with parameters for test vector generation for the desired test.
|
||||
"""
|
||||
|
||||
cases = import_testvector(os.path.join(script_dir, params['source_dir'] + params['source_file']))
|
||||
|
||||
with open(os.path.join(script_dir, params['base'])) as base:
|
||||
header = base.read()
|
||||
|
||||
header = header[:params['crop_size_start']]
|
||||
header += '\n\n// Testvectors from project wycheproof\n'
|
||||
header += '// <https://github.com/google/wycheproof>\n'
|
||||
vectors_file = header + params['array_init']
|
||||
|
||||
for group in cases['testGroups']:
|
||||
for test in group['tests']:
|
||||
vectors_file += params['formatter'].format_testcase(test)
|
||||
|
||||
vectors_file = vectors_file[:params['crop_size_end']] + '};\n\n'
|
||||
vectors_file += params['finish']
|
||||
|
||||
with open(os.path.join(script_dir, params['target']), 'w') as target:
|
||||
target.write(vectors_file)
|
||||
|
||||
# Parameters that describe the generation of a testvector file for each supoorted testself.
|
||||
# source -- relaive path the wycheproof JSON source file with testvectorsself.
|
||||
# base -- relative path to the pre-fabricated .h-file with general defintions and non-wycheproof vectors.
|
||||
# target -- relative path to where the finished .h-file is written.
|
||||
# crop_size_start -- number of characters removed from the end of the base file at start.
|
||||
# array_init -- string to initialize the c-header style array of testvectors.
|
||||
# formatter -- the test case formatter class to be used for this test.
|
||||
# crop_size_end -- number of characters removed from the end of the last generated test vector to close the array definiton.
|
||||
# finish -- string to re-insert at the end and finish the file. (identical to chars cropped at the start)
|
||||
# comment -- additional comments to add to the file just before defintion of the test vector array.
|
||||
aes_gcm_params = {
|
||||
'source_dir': 'source_vectors/',
|
||||
'source_file': 'aes_gcm_test.json',
|
||||
'base': '../testvectors_base/gcm-vectors_base.h',
|
||||
'target': '../testvectors/gcm-vectors.h',
|
||||
'crop_size_start': -27,
|
||||
'array_init': 'const gcm_kat_value kGcmWycheproofVectors[] = {\n',
|
||||
'formatter' : AESGCM(),
|
||||
'crop_size_end': -3,
|
||||
'finish': '#endif // gcm_vectors_h__\n',
|
||||
'comment' : ''
|
||||
}
|
||||
|
||||
chacha_poly_params = {
|
||||
'source_dir': 'source_vectors/',
|
||||
'source_file': 'chacha20_poly1305_test.json',
|
||||
'base': '../testvectors_base/chachapoly-vectors_base.h',
|
||||
'target': '../testvectors/chachapoly-vectors.h',
|
||||
'crop_size_start': -35,
|
||||
'array_init': 'const chacha_testvector kChaCha20WycheproofVectors[] = {\n',
|
||||
'formatter' : ChaChaPoly(),
|
||||
'crop_size_end': -2,
|
||||
'finish': '#endif // chachapoly_vectors_h__\n',
|
||||
'comment' : ''
|
||||
}
|
||||
|
||||
curve25519_params = {
|
||||
'source_dir': 'source_vectors/',
|
||||
'source_file': 'x25519_test.json',
|
||||
'base': '../testvectors_base/curve25519-vectors_base.h',
|
||||
'target': '../testvectors/curve25519-vectors.h',
|
||||
'crop_size_start': -34,
|
||||
'array_init': 'const curve25519_testvector kCurve25519WycheproofVectors[] = {\n',
|
||||
'formatter' : Curve25519(),
|
||||
'crop_size_end': -2,
|
||||
'finish': '#endif // curve25519_vectors_h__\n',
|
||||
'comment' : '// The public key section of the pkcs8 wrapped private key is\n\
|
||||
// filled up with 0\'s, which is not correct, but acceptable for the\n\
|
||||
// tests at this moment because validity of the public key is not checked.\n'
|
||||
}
|
||||
|
||||
def update_tests(tests):
|
||||
|
||||
remote = "https://raw.githubusercontent.com/google/wycheproof/master/testvectors/"
|
||||
for test in tests:
|
||||
subprocess.check_call(['wget', remote+test['source_file'], '-O',
|
||||
'gtests/common/wycheproof/source_vectors/' +test['source_file'],
|
||||
'--no-check-certificate'])
|
||||
|
||||
def generate_test_vectors():
|
||||
"""Generate C-header files for all supported tests."""
|
||||
all_tests = [aes_gcm_params, chacha_poly_params, curve25519_params]
|
||||
update_tests(all_tests)
|
||||
for test in all_tests:
|
||||
generate_vectors_file(test)
|
||||
|
||||
def main():
|
||||
generate_test_vectors()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,956 @@
|
|||
{
|
||||
"algorithm" : "X25519",
|
||||
"generatorVersion" : "0.4.12",
|
||||
"notes" : {
|
||||
"LowOrderPublic" : "Curve25519 or its twist contains some points of low order. This test vector contains a public key with such a point. While many libraries reject such public keys, doing so is not a strict requirement according to RFC 7748.",
|
||||
"Small public key" : "The public key is insecure and does not belong to a valid private key. Some libraries reject such keys.",
|
||||
"Twist" : "Public keys are either points on curve25519 or points on its twist. Implementations may either reject such keys or compute X25519 using the twist. If a point multiplication is performed then it is important that the result is correct, since otherwise attacks with invalid keys are possible."
|
||||
},
|
||||
"numberOfTests" : 87,
|
||||
"header" : [],
|
||||
"testGroups" : [
|
||||
{
|
||||
"curve" : "curve25519",
|
||||
"tests" : [
|
||||
{
|
||||
"tcId" : 1,
|
||||
"comment" : "normal case",
|
||||
"curve" : "curve25519",
|
||||
"public" : "9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a",
|
||||
"private" : "4852834d9d6b77dadeabaaf2e11dca66d19fe74993a7bec36c6e16a0983feaba",
|
||||
"shared" : "87b7f212b627f7a54ca5e0bcdaddd5389d9de6156cdbcf8ebe14ffbcfb436551",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 2,
|
||||
"comment" : "normal case",
|
||||
"curve" : "curve25519",
|
||||
"public" : "9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "4b82bd8650ea9b81a42181840926a4ffa16434d1bf298de1db87efb5b0a9e34e",
|
||||
"result" : "valid",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 3,
|
||||
"comment" : "public key on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "63aa40c6e38346c5caf23a6df0a5e6c80889a08647e551b3563449befcfc9733",
|
||||
"private" : "588c061a50804ac488ad774ac716c3f5ba714b2712e048491379a500211998a8",
|
||||
"shared" : "b1a707519495ffffb298ff941716b06dfab87cf8d91123fe2be9a233dda22212",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 4,
|
||||
"comment" : "public key on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0f83c36fded9d32fadf4efa3ae93a90bb5cfa66893bc412c43fa7287dbb99779",
|
||||
"private" : "b05bfd32e55325d9fd648cb302848039000b390e44d521e58aab3b29a6960ba8",
|
||||
"shared" : "67dd4a6e165533534c0e3f172e4ab8576bca923a5f07b2c069b4c310ff2e935b",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 5,
|
||||
"comment" : "public key on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0b8211a2b6049097f6871c6c052d3c5fc1ba17da9e32ae458403b05bb283092a",
|
||||
"private" : "70e34bcbe1f47fbc0fddfd7c1e1aa53d57bfe0f66d243067b424bb6210bed19c",
|
||||
"shared" : "4a0638cfaa9ef1933b47f8939296a6b25be541ef7f70e844c0bcc00b134de64a",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 6,
|
||||
"comment" : "public key on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "343ac20a3b9c6a27b1008176509ad30735856ec1c8d8fcae13912d08d152f46c",
|
||||
"private" : "68c1f3a653a4cdb1d37bba94738f8b957a57beb24d646e994dc29a276aad458d",
|
||||
"shared" : "399491fce8dfab73b4f9f611de8ea0b27b28f85994250b0f475d585d042ac207",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 7,
|
||||
"comment" : "public key on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "fa695fc7be8d1be5bf704898f388c452bafdd3b8eae805f8681a8d15c2d4e142",
|
||||
"private" : "d877b26d06dff9d9f7fd4c5b3769f8cdd5b30516a5ab806be324ff3eb69ea0b2",
|
||||
"shared" : "2c4fe11d490a53861776b13b4354abd4cf5a97699db6e6c68c1626d07662f758",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 8,
|
||||
"comment" : "public key = 0",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"private" : "207494038f2bb811d47805bcdf04a2ac585ada7f2f23389bfd4658f9ddd4debc",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Small public key"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 9,
|
||||
"comment" : "public key = 1",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0100000000000000000000000000000000000000000000000000000000000000",
|
||||
"private" : "202e8972b61c7e61930eb9450b5070eae1c670475685541f0476217e4818cfab",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Small public key"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 10,
|
||||
"comment" : "edge case on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0200000000000000000000000000000000000000000000000000000000000000",
|
||||
"private" : "38dde9f3e7b799045f9ac3793d4a9277dadeadc41bec0290f81f744f73775f84",
|
||||
"shared" : "9a2cfe84ff9c4a9739625cae4a3b82a906877a441946f8d7b3d795fe8f5d1639",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 11,
|
||||
"comment" : "edge case on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0300000000000000000000000000000000000000000000000000000000000000",
|
||||
"private" : "9857a914e3c29036fd9a442ba526b5cdcdf28216153e636c10677acab6bd6aa5",
|
||||
"shared" : "4da4e0aa072c232ee2f0fa4e519ae50b52c1edd08a534d4ef346c2e106d21d60",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 12,
|
||||
"comment" : "edge case on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ffffff030000f8ffff1f0000c0ffffff000000feffff070000f0ffff3f000000",
|
||||
"private" : "48e2130d723305ed05e6e5894d398a5e33367a8c6aac8fcdf0a88e4b42820db7",
|
||||
"shared" : "9ed10c53747f647f82f45125d3de15a1e6b824496ab40410ffcc3cfe95760f3b",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 13,
|
||||
"comment" : "edge case on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "000000fcffff070000e0ffff3f000000ffffff010000f8ffff0f0000c0ffff7f",
|
||||
"private" : "28f41011691851b3a62b641553b30d0dfddcb8fffcf53700a7be2f6a872e9fb0",
|
||||
"shared" : "cf72b4aa6aa1c9f894f4165b86109aa468517648e1f0cc70e1ab08460176506b",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 14,
|
||||
"comment" : "edge case on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffff7f",
|
||||
"private" : "18a93b6499b9f6b3225ca02fef410e0adec23532321d2d8ef1a6d602a8c65b83",
|
||||
"shared" : "5d50b62836bb69579410386cf7bb811c14bf85b1c7b17e5924c7ffea91ef9e12",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 15,
|
||||
"comment" : "edge case on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "c01d1305a1338a1fcac2ba7e2e032b427e0b04903165aca957d8d0553d8717b0",
|
||||
"shared" : "19230eb148d5d67c3c22ab1daeff80a57eae4265ce2872657b2c8099fc698e50",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 16,
|
||||
"comment" : "edge case for public key",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0400000000000000000000000000000000000000000000000000000000000000",
|
||||
"private" : "386f7f16c50731d64f82e6a170b142a4e34f31fd7768fcb8902925e7d1e21abe",
|
||||
"shared" : "0fcab5d842a078d7a71fc59b57bfb4ca0be6873b49dcdb9f44e14ae8fbdfa542",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 17,
|
||||
"comment" : "edge case for public key",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000",
|
||||
"private" : "e023a289bd5e90fa2804ddc019a05ef3e79d434bb6ea2f522ecb643a75296e95",
|
||||
"shared" : "54ce8f2275c077e3b1306a3939c5e03eef6bbb88060544758d9fef59b0bc3e4f",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 18,
|
||||
"comment" : "edge case for public key",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03",
|
||||
"private" : "68f010d62ee8d926053a361c3a75c6ea4ebdc8606ab285003a6f8f4076b01e83",
|
||||
"shared" : "f136775c5beb0af8110af10b20372332043cab752419678775a223df57c9d30d",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 19,
|
||||
"comment" : "edge case for public key",
|
||||
"curve" : "curve25519",
|
||||
"public" : "fffffffbfffffbffffdfffffdffffffffefffffefffff7fffff7ffffbfffff3f",
|
||||
"private" : "58ebcb35b0f8845caf1ec630f96576b62c4b7b6c36b29deb2cb0084651755c96",
|
||||
"shared" : "bf9affd06b844085586460962ef2146ff3d4533d9444aab006eb88cc3054407d",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 20,
|
||||
"comment" : "edge case for public key",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
|
||||
"private" : "188c4bc5b9c44b38bb658b9b2ae82d5b01015e093184b17cb7863503a783e1bb",
|
||||
"shared" : "d480de04f699cb3be0684a9cc2e31281ea0bc5a9dcc157d3d20158d46ca5246d",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 21,
|
||||
"comment" : "edge case for public key",
|
||||
"curve" : "curve25519",
|
||||
"public" : "fffffffffeffff7ffffffffffeffff7ffffffffffeffff7ffffffffffeffff7f",
|
||||
"private" : "e06c11bb2e13ce3dc7673f67f5482242909423a9ae95ee986a988d98faee23a2",
|
||||
"shared" : "4c4401cce6b51e4cb18f2790246c9bf914db667750a1cb89069092af07292276",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 22,
|
||||
"comment" : "edge case for public key",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "c0658c46dde18129293877535b1162b6f9f5414a23cf4d2cbc140a4d99da2b8f",
|
||||
"shared" : "578ba8cc2dbdc575afcf9df2b3ee6189f5337d6854c79b4ce165ea12293b3a0f",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 23,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800",
|
||||
"private" : "10255c9230a97a30a458ca284a629669293a31890cda9d147febc7d1e22d6bb1",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 24,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157",
|
||||
"private" : "78f1e8edf14481b389448dac8f59c70b038e7cf92ef2c7eff57a72466e115296",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 25,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "a0a05a3e8f9f44204d5f8059a94ac7dfc39a49ac016dd743dbfa43c5d671fd88",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 26,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "d0dbb3ed1906663f15420af31f4eaf6509d9a9949723500605ad7c1c6e7450a9",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 27,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "c0b1d0eb22b244fe3291140072cdd9d989b5f0ecd96c100feb5bca241c1d9f8f",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 28,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0000000000000000000000000000000000000000000000000000000000000080",
|
||||
"private" : "480bf45f594942a8bc0f3353c6e8b8853d77f351f1c2ca6c2d1abf8a00b4229c",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 29,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0100000000000000000000000000000000000000000000000000000000000080",
|
||||
"private" : "30f993fcf8514fc89bd8db14cd43ba0d4b2530e73c4276a05e1b145d420cedb4",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 30,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880",
|
||||
"private" : "c04974b758380e2a5b5df6eb09bb2f6b3434f982722a8e676d3da251d1b3de83",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 31,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7",
|
||||
"private" : "502a31373db32446842fe5add3e024022ea54f274182afc3d9f1bb3d39534eb5",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 32,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "90fa6417b0e37030fd6e43eff2abaef14c6793117a039cf621318ba90f4e98be",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 33,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "78ad3f26027f1c9fdd975a1613b947779bad2cf2b741ade01840885a30bb979c",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 34,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "98e23de7b1e0926ed9c87e7b14baf55f497a1d7096f93977680e44dc1c7b7b8b",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"LowOrderPublic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 35,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 36,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0100000000000000000000000000000000000000000000000000000000000000",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 37,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 38,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 39,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 40,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 41,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 42,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0000000000000000000000000000000000000000000000000000000000000080",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 43,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0100000000000000000000000000000000000000000000000000000000000080",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 44,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 45,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 46,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 47,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 48,
|
||||
"comment" : "public key with low order",
|
||||
"curve" : "curve25519",
|
||||
"public" : "eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 49,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "f01e48dafac9d7bcf589cbc382c878d18bda3550589ffb5d50b523bebe329dae",
|
||||
"shared" : "bd36a0790eb883098c988b21786773de0b3a4df162282cf110de18dd484ce74b",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 50,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "288796bc5aff4b81a37501757bc0753a3c21964790d38699308debc17a6eaf8d",
|
||||
"shared" : "b4e0dd76da7b071728b61f856771aa356e57eda78a5b1655cc3820fb5f854c5c",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 51,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "98df845f6651bf1138221f119041f72b6dbc3c4ace7143d99fd55ad867480da8",
|
||||
"shared" : "6fdf6c37611dbd5304dc0f2eb7c9517eb3c50e12fd050ac6dec27071d4bfc034",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 52,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"private" : "f09498e46f02f878829e78b803d316a2ed695d0498a08abdf8276930e24edcb0",
|
||||
"shared" : "4c8fc4b1c6ab88fb21f18f6d4c810240d4e94651ba44f7a2c863cec7dc56602d",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 53,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0200000000000000000000000000000000000000000000000000000000000080",
|
||||
"private" : "1813c10a5c7f21f96e17f288c0cc37607c04c5f5aea2db134f9e2ffc66bd9db8",
|
||||
"shared" : "1cd0b28267dc541c642d6d7dca44a8b38a63736eef5c4e6501ffbbb1780c033c",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 54,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0300000000000000000000000000000000000000000000000000000000000080",
|
||||
"private" : "7857fb808653645a0beb138a64f5f4d733a45ea84c3cda11a9c06f7e7139149e",
|
||||
"shared" : "8755be01c60a7e825cff3e0e78cb3aa4333861516aa59b1c51a8b2a543dfa822",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 55,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0400000000000000000000000000000000000000000000000000000000000080",
|
||||
"private" : "e03aa842e2abc56e81e87b8b9f417b2a1e5913c723eed28d752f8d47a59f498f",
|
||||
"shared" : "54c9a1ed95e546d27822a360931dda60a1df049da6f904253c0612bbdc087476",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 56,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "f8f707b7999b18cb0d6b96124f2045972ca274bfc154ad0c87038c24c6d0d4b2",
|
||||
"shared" : "cc1f40d743cdc2230e1043daba8b75e810f1fbab7f255269bd9ebb29e6bf494f",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 57,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "a034f684fa631e1a348118c1ce4c98231f2d9eec9ba5365b4a05d69a785b0796",
|
||||
"shared" : "54998ee43a5b007bf499f078e736524400a8b5c7e9b9b43771748c7cdf880412",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 58,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "dcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "30b6c6a0f2ffa680768f992ba89e152d5bc9893d38c9119be4f767bfab6e0ca5",
|
||||
"shared" : "ead9b38efdd723637934e55ab717a7ae09eb86a21dc36a3feeb88b759e391e09",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 59,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "901b9dcf881e01e027575035d40b43bdc1c5242e030847495b0c7286469b6591",
|
||||
"shared" : "602ff40789b54b41805915fe2a6221f07a50ffc2c3fc94cf61f13d7904e88e0e",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 60,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "8046677c28fd82c9a1bdb71a1a1a34faba1225e2507fe3f54d10bd5b0d865f8e",
|
||||
"shared" : "e00ae8b143471247ba24f12c885536c3cb981b58e1e56b2baf35c12ae1f79c26",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 61,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "602f7e2f68a846b82cc269b1d48e939886ae54fd636c1fe074d710127d472491",
|
||||
"shared" : "98cb9b50dd3fc2b0d4f2d2bf7c5cfdd10c8fcd31fc40af1ad44f47c131376362",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 62,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "60887b3dc72443026ebedbbbb70665f42b87add1440e7768fbd7e8e2ce5f639d",
|
||||
"shared" : "38d6304c4a7e6d9f7959334fb5245bd2c754525d4c91db950206926234c1f633",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 63,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "78d31dfa854497d72d8def8a1b7fb006cec2d8c4924647c93814ae56faeda495",
|
||||
"shared" : "786cd54996f014a5a031ec14db812ed08355061fdb5de680a800ac521f318e23",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 64,
|
||||
"comment" : "public key >= p",
|
||||
"curve" : "curve25519",
|
||||
"public" : "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"private" : "c04c5baefa8302ddded6a4bb957761b4eb97aefa4fc3b8043085f96a5659b3a5",
|
||||
"shared" : "29ae8bc73e9b10a08b4f681c43c3e0ac1a171d31b38f1a48efba29ae639ea134",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 65,
|
||||
"comment" : "RFC 7748",
|
||||
"curve" : "curve25519",
|
||||
"public" : "e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c",
|
||||
"private" : "a046e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449a44",
|
||||
"shared" : "c3da55379de9c6908e94ea4df28d084f32eccf03491c71f754b4075577a28552",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 66,
|
||||
"comment" : "RFC 7748",
|
||||
"curve" : "curve25519",
|
||||
"public" : "e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a413",
|
||||
"private" : "4866e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba4d",
|
||||
"shared" : "95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 67,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "0ab4e76380d84dde4f6833c58f2a9fb8f83bb0169b172be4b6e0592887741a36",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "0200000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 68,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "89e10d5701b4337d2d032181538b1064bd4084401ceca1fd12663a1959388000",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "0900000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 69,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "2b55d3aa4a8f80c8c0b2ae5f933e85af49beac36c2fa7394bab76c8933f8f81d",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "1000000000000000000000000000000000000000000000000000000000000000",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 70,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "63e5b1fe9601fe84385d8866b0421262f78fbfa5aff9585e626679b18547d959",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 71,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "e428f3dac17809f827a522ce32355058d07369364aa78902ee10139b9f9dd653",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "fcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 72,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "b3b50e3ed3a407b95de942ef74575b5ab8a10c09ee103544d60bdfed8138ab2b",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "f9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 73,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "213fffe93d5ea8cd242e462844029922c43c77c9e3e42f562f485d24c501a20b",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 74,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "91b232a178b3cd530932441e6139418f72172292f1da4c1834fc5ebfefb51e3f",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 75,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "045c6e11c5d332556c7822fe94ebf89b56a3878dc27ca079103058849fabcb4f",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "e5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 76,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "1ca2190b71163539063c35773bda0c9c928e9136f0620aeb093f099197b7f74e",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "e3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 77,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "f76e9010ac33c5043b2d3b76a842171000c4916222e9e85897a0aec7f6350b3c",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 78,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "bb72688d8f8aa7a39cd6060cd5c8093cdec6fe341937c3886a99346cd07faa55",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 79,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "88fddea193391c6a5933ef9b71901549447205aae9da928a6b91a352ba10f41f",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000000002",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 80,
|
||||
"comment" : "edge case for shared secret",
|
||||
"curve" : "curve25519",
|
||||
"public" : "303b392f153116cad9cc682a00ccc44c95ff0d3bbe568beb6c4e739bafdc2c68",
|
||||
"private" : "a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"shared" : "0000000000000000000000000000000000000000000000000000000000008000",
|
||||
"result" : "acceptable",
|
||||
"flags" : [
|
||||
"Twist"
|
||||
]
|
||||
},
|
||||
{
|
||||
"tcId" : 81,
|
||||
"comment" : "checking for overflow",
|
||||
"curve" : "curve25519",
|
||||
"public" : "fd300aeb40e1fa582518412b49b208a7842b1e1f056a040178ea4141534f652d",
|
||||
"private" : "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
|
||||
"shared" : "b734105dc257585d73b566ccb76f062795ccbec89128e52b02f3e59639f13c46",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 82,
|
||||
"comment" : "checking for overflow",
|
||||
"curve" : "curve25519",
|
||||
"public" : "c8ef79b514d7682677bc7931e06ee5c27c9b392b4ae9484473f554e6678ecc2e",
|
||||
"private" : "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
|
||||
"shared" : "647a46b6fc3f40d62141ee3cee706b4d7a9271593a7b143e8e2e2279883e4550",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 83,
|
||||
"comment" : "checking for overflow",
|
||||
"curve" : "curve25519",
|
||||
"public" : "64aeac2504144861532b7bbcb6c87d67dd4c1f07ebc2e06effb95aecc6170b2c",
|
||||
"private" : "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
|
||||
"shared" : "4ff03d5fb43cd8657a3cf37c138cadcecce509e4eba089d0ef40b4e4fb946155",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 84,
|
||||
"comment" : "checking for overflow",
|
||||
"curve" : "curve25519",
|
||||
"public" : "bf68e35e9bdb7eee1b50570221860f5dcdad8acbab031b14974cc49013c49831",
|
||||
"private" : "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
|
||||
"shared" : "21cee52efdbc812e1d021a4af1e1d8bc4db3c400e4d2a2c56a3926db4d99c65b",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 85,
|
||||
"comment" : "checking for overflow",
|
||||
"curve" : "curve25519",
|
||||
"public" : "5347c491331a64b43ddc683034e677f53dc32b52a52a577c15a83bf298e99f19",
|
||||
"private" : "c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
|
||||
"shared" : "18cb89e4e20c0c2bd324305245266c9327690bbe79acb88f5b8fb3f74eca3e52",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 86,
|
||||
"comment" : "private key == -1 (mod order)",
|
||||
"curve" : "curve25519",
|
||||
"public" : "258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75",
|
||||
"private" : "a023cdd083ef5bb82f10d62e59e15a6800000000000000000000000000000050",
|
||||
"shared" : "258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75",
|
||||
"result" : "valid",
|
||||
"flags" : []
|
||||
},
|
||||
{
|
||||
"tcId" : 87,
|
||||
"comment" : "private key == 1 (mod order) on twist",
|
||||
"curve" : "curve25519",
|
||||
"public" : "2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035",
|
||||
"private" : "58083dd261ad91eff952322ec824c682ffffffffffffffffffffffffffffff5f",
|
||||
"shared" : "2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035",
|
||||
"result" : "acceptable",
|
||||
"flags" : []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue