summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2024-10-26 10:15:19 +0000
committertb <>2024-10-26 10:15:19 +0000
commite2a62e818bf165355adbef5a3d01db7e7c51499e (patch)
tree5d36dfbaefdb2c00198e717b443c590b79828e87 /src
parentc4eb8d5a79a0ea768ecf9ab0dc14b49504631d35 (diff)
downloadopenbsd-e2a62e818bf165355adbef5a3d01db7e7c51499e.tar.gz
openbsd-e2a62e818bf165355adbef5a3d01db7e7c51499e.tar.bz2
openbsd-e2a62e818bf165355adbef5a3d01db7e7c51499e.zip
Add regress coverage for ec_print.c
Of course the four stunning beauties in there aren't printing anything. the hex family converts an elliptic curve point's X9.62 encoding into a hex string (which kind of makes sense, you can print that if you want). Much more astounding is EC_POINT_point2bn() where the X9.62 octet string is interpreted as a BIGNUM. Yes, the bignum's hex digits are the point conversion form followed by the affine coordinate(s) of the elliptic curve point, and yes you can choose between compressed, uncompressed, and hybrid encoding, why do you ask? This doesn't really make any sense whatsoever but of course you can also print that if you really want to. Of course the beloved platinum members of the "gotta try every terrible OpenSSL interface" club had to use and expose this.
Diffstat (limited to 'src')
-rw-r--r--src/regress/lib/libcrypto/ec/ec_asn1_test.c891
1 files changed, 889 insertions, 2 deletions
diff --git a/src/regress/lib/libcrypto/ec/ec_asn1_test.c b/src/regress/lib/libcrypto/ec/ec_asn1_test.c
index c899c418fd..76dc415a93 100644
--- a/src/regress/lib/libcrypto/ec/ec_asn1_test.c
+++ b/src/regress/lib/libcrypto/ec/ec_asn1_test.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_asn1_test.c,v 1.15 2024/10/25 07:31:02 tb Exp $ */ 1/* $OpenBSD: ec_asn1_test.c,v 1.16 2024/10/26 10:15:19 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2017, 2021 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2017, 2021 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2024 Theo Buehler <tb@openbsd.org> 4 * Copyright (c) 2024 Theo Buehler <tb@openbsd.org>
@@ -930,6 +930,9 @@ static const struct ec_private_key {
930 const char *name; 930 const char *name;
931 size_t der_len; 931 size_t der_len;
932 uint8_t der[256]; 932 uint8_t der[256];
933 const char *hex;
934 int oct_len;
935 uint8_t oct[256];
933} ec_private_keys[] = { 936} ec_private_keys[] = {
934 { 937 {
935 .name = "secp112r1", 938 .name = "secp112r1",
@@ -944,6 +947,17 @@ static const struct ec_private_key {
944 0x7a, 0x3d, 0x49, 0x3a, 0xaa, 0xeb, 0x97, 0xec, 947 0x7a, 0x3d, 0x49, 0x3a, 0xaa, 0xeb, 0x97, 0xec,
945 0x19, 0xa3, 0x92, 0x3d, 0xe7, 0xe6, 0x6e, 0x47, 948 0x19, 0xa3, 0x92, 0x3d, 0xe7, 0xe6, 0x6e, 0x47,
946 }, 949 },
950 .hex = "040FA96ACD146587"
951 "E42C58861B7A3D49"
952 "3AAAEB97EC19A392"
953 "3DE7E66E47",
954 .oct_len = 29,
955 .oct = {
956 0x04, 0x0f, 0xa9, 0x6a, 0xcd, 0x14, 0x65, 0x87,
957 0xe4, 0x2c, 0x58, 0x86, 0x1b, 0x7a, 0x3d, 0x49,
958 0x3a, 0xaa, 0xeb, 0x97, 0xec, 0x19, 0xa3, 0x92,
959 0x3d, 0xe7, 0xe6, 0x6e, 0x47,
960 },
947 }, 961 },
948 { 962 {
949 .name = "secp112r2", 963 .name = "secp112r2",
@@ -958,6 +972,17 @@ static const struct ec_private_key {
958 0xfd, 0x57, 0x7a, 0x8f, 0x38, 0x8b, 0x04, 0xd9, 972 0xfd, 0x57, 0x7a, 0x8f, 0x38, 0x8b, 0x04, 0xd9,
959 0xae, 0x3b, 0xcf, 0x10, 0x30, 0x29, 0xdb, 0x59, 973 0xae, 0x3b, 0xcf, 0x10, 0x30, 0x29, 0xdb, 0x59,
960 }, 974 },
975 .hex = "04642D25533F43F2"
976 "69B2558D7CFD577A"
977 "8F388B04D9AE3BCF"
978 "103029DB59",
979 .oct_len = 29,
980 .oct = {
981 0x04, 0x64, 0x2d, 0x25, 0x53, 0x3f, 0x43, 0xf2,
982 0x69, 0xb2, 0x55, 0x8d, 0x7c, 0xfd, 0x57, 0x7a,
983 0x8f, 0x38, 0x8b, 0x04, 0xd9, 0xae, 0x3b, 0xcf,
984 0x10, 0x30, 0x29, 0xdb, 0x59,
985 },
961 }, 986 },
962 { 987 {
963 .name = "secp128r1", 988 .name = "secp128r1",
@@ -973,6 +998,19 @@ static const struct ec_private_key {
973 0x31, 0xaf, 0xd3, 0x85, 0x5e, 0x4d, 0xc0, 0xee, 998 0x31, 0xaf, 0xd3, 0x85, 0x5e, 0x4d, 0xc0, 0xee,
974 0x06, 0x4c, 0x26, 0x6d, 0x5e, 0x6d, 999 0x06, 0x4c, 0x26, 0x6d, 0x5e, 0x6d,
975 }, 1000 },
1001 .hex = "043F88451052C2F6"
1002 "56881B6EEE302164"
1003 "9874DE31AFD3855E"
1004 "4DC0EE064C266D5E"
1005 "6D",
1006 .oct_len = 33,
1007 .oct = {
1008 0x04, 0x3f, 0x88, 0x45, 0x10, 0x52, 0xc2, 0xf6,
1009 0x56, 0x88, 0x1b, 0x6e, 0xee, 0x30, 0x21, 0x64,
1010 0x98, 0x74, 0xde, 0x31, 0xaf, 0xd3, 0x85, 0x5e,
1011 0x4d, 0xc0, 0xee, 0x06, 0x4c, 0x26, 0x6d, 0x5e,
1012 0x6d,
1013 },
976 }, 1014 },
977 { 1015 {
978 .name = "secp128r2", 1016 .name = "secp128r2",
@@ -988,6 +1026,19 @@ static const struct ec_private_key {
988 0x0d, 0x54, 0x61, 0xa0, 0xf3, 0x32, 0xdc, 0xe1, 1026 0x0d, 0x54, 0x61, 0xa0, 0xf3, 0x32, 0xdc, 0xe1,
989 0x19, 0xbb, 0x6e, 0xcf, 0x3c, 0xe2, 1027 0x19, 0xbb, 0x6e, 0xcf, 0x3c, 0xe2,
990 }, 1028 },
1029 .hex = "04D5F51C2F02C039"
1030 "EB6C7B202BCF67E0"
1031 "8A2B830D5461A0F3"
1032 "32DCE119BB6ECF3C"
1033 "E2",
1034 .oct_len = 33,
1035 .oct = {
1036 0x04, 0xd5, 0xf5, 0x1c, 0x2f, 0x02, 0xc0, 0x39,
1037 0xeb, 0x6c, 0x7b, 0x20, 0x2b, 0xcf, 0x67, 0xe0,
1038 0x8a, 0x2b, 0x83, 0x0d, 0x54, 0x61, 0xa0, 0xf3,
1039 0x32, 0xdc, 0xe1, 0x19, 0xbb, 0x6e, 0xcf, 0x3c,
1040 0xe2,
1041 },
991 }, 1042 },
992#if CORRECT_PRIV_KEY_PADDING 1043#if CORRECT_PRIV_KEY_PADDING
993 { 1044 {
@@ -1006,6 +1057,21 @@ static const struct ec_private_key {
1006 0x63, 0x8d, 0x7f, 0x17, 0x3e, 0x28, 0x49, 0xcc, 1057 0x63, 0x8d, 0x7f, 0x17, 0x3e, 0x28, 0x49, 0xcc,
1007 0xcd, 0x6e, 0xb0, 1058 0xcd, 0x6e, 0xb0,
1008 }, 1059 },
1060 .hex = "04FE46EFA6DE9520"
1061 "342E7C65E931EF5B"
1062 "D6B2800A03BAE8C6"
1063 "9C89FF3D6BA5638D"
1064 "7F173E2849CCCD6E"
1065 "B0",
1066 .oct_len = 41,
1067 .oct = {
1068 0x04, 0xfe, 0x46, 0xef, 0xa6, 0xde, 0x95, 0x20,
1069 0x34, 0x2e, 0x7c, 0x65, 0xe9, 0x31, 0xef, 0x5b,
1070 0xd6, 0xb2, 0x80, 0x0a, 0x03, 0xba, 0xe8, 0xc6,
1071 0x9c, 0x89, 0xff, 0x3d, 0x6b, 0xa5, 0x63, 0x8d,
1072 0x7f, 0x17, 0x3e, 0x28, 0x49, 0xcc, 0xcd, 0x6e,
1073 0xb0,
1074 },
1009 }, 1075 },
1010 { 1076 {
1011 .name = "secp160r1", 1077 .name = "secp160r1",
@@ -1023,6 +1089,21 @@ static const struct ec_private_key {
1023 0xcb, 0xae, 0x9e, 0xe0, 0xa2, 0x7e, 0x26, 0x6b, 1089 0xcb, 0xae, 0x9e, 0xe0, 0xa2, 0x7e, 0x26, 0x6b,
1024 0xfe, 0xc4, 0xa7, 1090 0xfe, 0xc4, 0xa7,
1025 }, 1091 },
1092 .hex = "04DAF0DA8CAD13E1"
1093 "123B53EF9498A357"
1094 "85BB20C0D8B661AD"
1095 "4479D4BE3E6CCBAE"
1096 "9EE0A27E266BFEC4"
1097 "A7",
1098 .oct_len = 41,
1099 .oct = {
1100 0x04, 0xda, 0xf0, 0xda, 0x8c, 0xad, 0x13, 0xe1,
1101 0x12, 0x3b, 0x53, 0xef, 0x94, 0x98, 0xa3, 0x57,
1102 0x85, 0xbb, 0x20, 0xc0, 0xd8, 0xb6, 0x61, 0xad,
1103 0x44, 0x79, 0xd4, 0xbe, 0x3e, 0x6c, 0xcb, 0xae,
1104 0x9e, 0xe0, 0xa2, 0x7e, 0x26, 0x6b, 0xfe, 0xc4,
1105 0xa7,
1106 },
1026 }, 1107 },
1027 { 1108 {
1028 .name = "secp160r2", 1109 .name = "secp160r2",
@@ -1040,6 +1121,21 @@ static const struct ec_private_key {
1040 0x79, 0x19, 0xdc, 0xb1, 0x03, 0xdc, 0xcb, 0x73, 1121 0x79, 0x19, 0xdc, 0xb1, 0x03, 0xdc, 0xcb, 0x73,
1041 0x2b, 0x02, 0x63, 1122 0x2b, 0x02, 0x63,
1042 }, 1123 },
1124 .hex = "0436CE2ABBEC29DF"
1125 "DA52218B8B4937E3"
1126 "D67FAB662081C730"
1127 "EB00F0AD667C7919"
1128 "DCB103DCCB732B02"
1129 "63",
1130 .oct_len = 41,
1131 .oct = {
1132 0x04, 0x36, 0xce, 0x2a, 0xbb, 0xec, 0x29, 0xdf,
1133 0xda, 0x52, 0x21, 0x8b, 0x8b, 0x49, 0x37, 0xe3,
1134 0xd6, 0x7f, 0xab, 0x66, 0x20, 0x81, 0xc7, 0x30,
1135 0xeb, 0x00, 0xf0, 0xad, 0x66, 0x7c, 0x79, 0x19,
1136 0xdc, 0xb1, 0x03, 0xdc, 0xcb, 0x73, 0x2b, 0x02,
1137 0x63,
1138 },
1043 }, 1139 },
1044#endif 1140#endif
1045 { 1141 {
@@ -1059,6 +1155,23 @@ static const struct ec_private_key {
1059 0x95, 0xed, 0x6f, 0x61, 0x83, 0xc3, 0x06, 0x27, 1155 0x95, 0xed, 0x6f, 0x61, 0x83, 0xc3, 0x06, 0x27,
1060 0x0c, 0x73, 0x6e, 0x73, 0x7c, 0xdc, 1156 0x0c, 0x73, 0x6e, 0x73, 0x7c, 0xdc,
1061 }, 1157 },
1158 .hex = "04A87C1E15F01C8A"
1159 "8D7E14DB07D1ACAF"
1160 "2577E539BD595AED"
1161 "6414EFD3F233AB7B"
1162 "D59E2A95ED6F6183"
1163 "C306270C736E737C"
1164 "DC",
1165 .oct_len = 49,
1166 .oct = {
1167 0x04, 0xa8, 0x7c, 0x1e, 0x15, 0xf0, 0x1c, 0x8a,
1168 0x8d, 0x7e, 0x14, 0xdb, 0x07, 0xd1, 0xac, 0xaf,
1169 0x25, 0x77, 0xe5, 0x39, 0xbd, 0x59, 0x5a, 0xed,
1170 0x64, 0x14, 0xef, 0xd3, 0xf2, 0x33, 0xab, 0x7b,
1171 0xd5, 0x9e, 0x2a, 0x95, 0xed, 0x6f, 0x61, 0x83,
1172 0xc3, 0x06, 0x27, 0x0c, 0x73, 0x6e, 0x73, 0x7c,
1173 0xdc,
1174 },
1062 }, 1175 },
1063#if CORRECT_PRIV_KEY_PADDING 1176#if CORRECT_PRIV_KEY_PADDING
1064 { 1177 {
@@ -1080,6 +1193,25 @@ static const struct ec_private_key {
1080 0x34, 0xef, 0xfb, 0x04, 0xa1, 0x28, 0x7d, 0x51, 1193 0x34, 0xef, 0xfb, 0x04, 0xa1, 0x28, 0x7d, 0x51,
1081 0xbe, 0xe7, 0x0b, 1194 0xbe, 0xe7, 0x0b,
1082 }, 1195 },
1196 .hex = "0451C469DF2D497B"
1197 "056C125F9A83517D"
1198 "F34A6CE13AEA4435"
1199 "3E7AA440DFC49018"
1200 "FC2F5D4B1237874D"
1201 "2AF8BD29FB1334EF"
1202 "FB04A1287D51BEE7"
1203 "0B",
1204 .oct_len = 57,
1205 .oct = {
1206 0x04, 0x51, 0xc4, 0x69, 0xdf, 0x2d, 0x49, 0x7b,
1207 0x05, 0x6c, 0x12, 0x5f, 0x9a, 0x83, 0x51, 0x7d,
1208 0xf3, 0x4a, 0x6c, 0xe1, 0x3a, 0xea, 0x44, 0x35,
1209 0x3e, 0x7a, 0xa4, 0x40, 0xdf, 0xc4, 0x90, 0x18,
1210 0xfc, 0x2f, 0x5d, 0x4b, 0x12, 0x37, 0x87, 0x4d,
1211 0x2a, 0xf8, 0xbd, 0x29, 0xfb, 0x13, 0x34, 0xef,
1212 0xfb, 0x04, 0xa1, 0x28, 0x7d, 0x51, 0xbe, 0xe7,
1213 0x0b,
1214 },
1083 }, 1215 },
1084#endif 1216#endif
1085 { 1217 {
@@ -1101,6 +1233,25 @@ static const struct ec_private_key {
1101 0xf4, 0x2d, 0x34, 0x25, 0xee, 0x4c, 0xec, 0xfb, 1233 0xf4, 0x2d, 0x34, 0x25, 0xee, 0x4c, 0xec, 0xfb,
1102 0x4d, 0x0b, 1234 0x4d, 0x0b,
1103 }, 1235 },
1236 .hex = "049484B0CD65EFC5"
1237 "5DC9E49171CBC7F1"
1238 "8E4439C2D307F06C"
1239 "B6EF77C084302CD2"
1240 "F2F0B5B66F0AF443"
1241 "AB5E5DD897BFABF4"
1242 "2D3425EE4CECFB4D"
1243 "0B",
1244 .oct_len = 57,
1245 .oct = {
1246 0x04, 0x94, 0x84, 0xb0, 0xcd, 0x65, 0xef, 0xc5,
1247 0x5d, 0xc9, 0xe4, 0x91, 0x71, 0xcb, 0xc7, 0xf1,
1248 0x8e, 0x44, 0x39, 0xc2, 0xd3, 0x07, 0xf0, 0x6c,
1249 0xb6, 0xef, 0x77, 0xc0, 0x84, 0x30, 0x2c, 0xd2,
1250 0xf2, 0xf0, 0xb5, 0xb6, 0x6f, 0x0a, 0xf4, 0x43,
1251 0xab, 0x5e, 0x5d, 0xd8, 0x97, 0xbf, 0xab, 0xf4,
1252 0x2d, 0x34, 0x25, 0xee, 0x4c, 0xec, 0xfb, 0x4d,
1253 0x0b,
1254 },
1104 }, 1255 },
1105 { 1256 {
1106 .name = "secp256k1", 1257 .name = "secp256k1",
@@ -1122,6 +1273,27 @@ static const struct ec_private_key {
1122 0x5e, 0xb5, 0x37, 0x44, 0x40, 0x1c, 0x34, 0x6c, 1273 0x5e, 0xb5, 0x37, 0x44, 0x40, 0x1c, 0x34, 0x6c,
1123 0xf2, 0xdb, 0x44, 0x71, 0x26, 0xeb, 1274 0xf2, 0xdb, 0x44, 0x71, 0x26, 0xeb,
1124 }, 1275 },
1276 .hex = "049FD2BECCF800E8"
1277 "D0407311B9347668"
1278 "B26B88EAA66437E7"
1279 "06DF9F20B8C37F9F"
1280 "8FBC8065E973CB1D"
1281 "A1FA342366B94789"
1282 "E908925EB5374440"
1283 "1C346CF2DB447126"
1284 "EB",
1285 .oct_len = 65,
1286 .oct = {
1287 0x04, 0x9f, 0xd2, 0xbe, 0xcc, 0xf8, 0x00, 0xe8,
1288 0xd0, 0x40, 0x73, 0x11, 0xb9, 0x34, 0x76, 0x68,
1289 0xb2, 0x6b, 0x88, 0xea, 0xa6, 0x64, 0x37, 0xe7,
1290 0x06, 0xdf, 0x9f, 0x20, 0xb8, 0xc3, 0x7f, 0x9f,
1291 0x8f, 0xbc, 0x80, 0x65, 0xe9, 0x73, 0xcb, 0x1d,
1292 0xa1, 0xfa, 0x34, 0x23, 0x66, 0xb9, 0x47, 0x89,
1293 0xe9, 0x08, 0x92, 0x5e, 0xb5, 0x37, 0x44, 0x40,
1294 0x1c, 0x34, 0x6c, 0xf2, 0xdb, 0x44, 0x71, 0x26,
1295 0xeb,
1296 },
1125 }, 1297 },
1126 { 1298 {
1127 .name = "secp384r1", 1299 .name = "secp384r1",
@@ -1149,6 +1321,35 @@ static const struct ec_private_key {
1149 0xe5, 0xd2, 0xa2, 0x79, 0x47, 0xb0, 0x6e, 0x5f, 1321 0xe5, 0xd2, 0xa2, 0x79, 0x47, 0xb0, 0x6e, 0x5f,
1150 0x85, 0x39, 0x94, 0x57, 0xbf, 0x54, 0x76, 1322 0x85, 0x39, 0x94, 0x57, 0xbf, 0x54, 0x76,
1151 }, 1323 },
1324 .hex = "04CE9A3B4B01E6C4"
1325 "5AFA9703C1CE18D5"
1326 "6C47274D6C9ABD47"
1327 "AB200F9983198BCB"
1328 "18D7A3B2E73BD0F1"
1329 "F329B26D38D6CC8E"
1330 "5EF0B2B9BD852CAB"
1331 "4BB69D98A1CEF18A"
1332 "DB92757DF7824C0A"
1333 "C73B526E97C623C9"
1334 "6F3FE5D2A27947B0"
1335 "6E5F85399457BF54"
1336 "76",
1337 .oct_len = 97,
1338 .oct = {
1339 0x04, 0xce, 0x9a, 0x3b, 0x4b, 0x01, 0xe6, 0xc4,
1340 0x5a, 0xfa, 0x97, 0x03, 0xc1, 0xce, 0x18, 0xd5,
1341 0x6c, 0x47, 0x27, 0x4d, 0x6c, 0x9a, 0xbd, 0x47,
1342 0xab, 0x20, 0x0f, 0x99, 0x83, 0x19, 0x8b, 0xcb,
1343 0x18, 0xd7, 0xa3, 0xb2, 0xe7, 0x3b, 0xd0, 0xf1,
1344 0xf3, 0x29, 0xb2, 0x6d, 0x38, 0xd6, 0xcc, 0x8e,
1345 0x5e, 0xf0, 0xb2, 0xb9, 0xbd, 0x85, 0x2c, 0xab,
1346 0x4b, 0xb6, 0x9d, 0x98, 0xa1, 0xce, 0xf1, 0x8a,
1347 0xdb, 0x92, 0x75, 0x7d, 0xf7, 0x82, 0x4c, 0x0a,
1348 0xc7, 0x3b, 0x52, 0x6e, 0x97, 0xc6, 0x23, 0xc9,
1349 0x6f, 0x3f, 0xe5, 0xd2, 0xa2, 0x79, 0x47, 0xb0,
1350 0x6e, 0x5f, 0x85, 0x39, 0x94, 0x57, 0xbf, 0x54,
1351 0x76,
1352 },
1152 }, 1353 },
1153 { 1354 {
1154 .name = "secp521r1", 1355 .name = "secp521r1",
@@ -1183,6 +1384,43 @@ static const struct ec_private_key {
1183 0x8f, 0x89, 0xb6, 0x39, 0x2c, 0x2c, 0x23, 0x0a, 1384 0x8f, 0x89, 0xb6, 0x39, 0x2c, 0x2c, 0x23, 0x0a,
1184 0xb6, 0x95, 0x9c, 0x6b, 0xce, 0xc4, 0x8e, 1385 0xb6, 0x95, 0x9c, 0x6b, 0xce, 0xc4, 0x8e,
1185 }, 1386 },
1387 .hex = "0401D2C37841B186"
1388 "24CA6D805C97CF96"
1389 "F087B425BE379AF3"
1390 "E54A70D1E6369E69"
1391 "CCFB83D6A1626DA8"
1392 "E6CAE70E24E626CD"
1393 "C00D2A01816AD694"
1394 "F290CD2668282C57"
1395 "D3F03700BC5EFAF9"
1396 "36CD0FEB4F82176A"
1397 "A073D248FCFBF054"
1398 "C3232976C7219809"
1399 "298BCE6E6BE39794"
1400 "B230AAF6435C15D7"
1401 "B8DB0692A8368F89"
1402 "B6392C2C230AB695"
1403 "9C6BCEC48E",
1404 .oct_len = 133,
1405 .oct = {
1406 0x04, 0x01, 0xd2, 0xc3, 0x78, 0x41, 0xb1, 0x86,
1407 0x24, 0xca, 0x6d, 0x80, 0x5c, 0x97, 0xcf, 0x96,
1408 0xf0, 0x87, 0xb4, 0x25, 0xbe, 0x37, 0x9a, 0xf3,
1409 0xe5, 0x4a, 0x70, 0xd1, 0xe6, 0x36, 0x9e, 0x69,
1410 0xcc, 0xfb, 0x83, 0xd6, 0xa1, 0x62, 0x6d, 0xa8,
1411 0xe6, 0xca, 0xe7, 0x0e, 0x24, 0xe6, 0x26, 0xcd,
1412 0xc0, 0x0d, 0x2a, 0x01, 0x81, 0x6a, 0xd6, 0x94,
1413 0xf2, 0x90, 0xcd, 0x26, 0x68, 0x28, 0x2c, 0x57,
1414 0xd3, 0xf0, 0x37, 0x00, 0xbc, 0x5e, 0xfa, 0xf9,
1415 0x36, 0xcd, 0x0f, 0xeb, 0x4f, 0x82, 0x17, 0x6a,
1416 0xa0, 0x73, 0xd2, 0x48, 0xfc, 0xfb, 0xf0, 0x54,
1417 0xc3, 0x23, 0x29, 0x76, 0xc7, 0x21, 0x98, 0x09,
1418 0x29, 0x8b, 0xce, 0x6e, 0x6b, 0xe3, 0x97, 0x94,
1419 0xb2, 0x30, 0xaa, 0xf6, 0x43, 0x5c, 0x15, 0xd7,
1420 0xb8, 0xdb, 0x06, 0x92, 0xa8, 0x36, 0x8f, 0x89,
1421 0xb6, 0x39, 0x2c, 0x2c, 0x23, 0x0a, 0xb6, 0x95,
1422 0x9c, 0x6b, 0xce, 0xc4, 0x8e,
1423 },
1186 }, 1424 },
1187 { 1425 {
1188 .name = "prime192v1", 1426 .name = "prime192v1",
@@ -1202,6 +1440,23 @@ static const struct ec_private_key {
1202 0x6a, 0xba, 0x4e, 0x52, 0xeb, 0x29, 0x81, 0x87, 1440 0x6a, 0xba, 0x4e, 0x52, 0xeb, 0x29, 0x81, 0x87,
1203 0x92, 1441 0x92,
1204 }, 1442 },
1443 .hex = "046E8A842C8A39EE"
1444 "946BB28A178E965E"
1445 "A20F2EB073435646"
1446 "F102E8A681419374"
1447 "FEE64CF6B95A3918"
1448 "6ABA4E52EB298187"
1449 "92",
1450 .oct_len = 49,
1451 .oct = {
1452 0x04, 0x6e, 0x8a, 0x84, 0x2c, 0x8a, 0x39, 0xee,
1453 0x94, 0x6b, 0xb2, 0x8a, 0x17, 0x8e, 0x96, 0x5e,
1454 0xa2, 0x0f, 0x2e, 0xb0, 0x73, 0x43, 0x56, 0x46,
1455 0xf1, 0x02, 0xe8, 0xa6, 0x81, 0x41, 0x93, 0x74,
1456 0xfe, 0xe6, 0x4c, 0xf6, 0xb9, 0x5a, 0x39, 0x18,
1457 0x6a, 0xba, 0x4e, 0x52, 0xeb, 0x29, 0x81, 0x87,
1458 0x92,
1459 },
1205 }, 1460 },
1206 { 1461 {
1207 .name = "prime192v2", 1462 .name = "prime192v2",
@@ -1221,6 +1476,23 @@ static const struct ec_private_key {
1221 0x4b, 0xab, 0x5b, 0x66, 0xa7, 0x98, 0xa6, 0x9a, 1476 0x4b, 0xab, 0x5b, 0x66, 0xa7, 0x98, 0xa6, 0x9a,
1222 0xe6, 1477 0xe6,
1223 }, 1478 },
1479 .hex = "04625DFB0E5895D1"
1480 "E713669A0C5CEF2F"
1481 "2F33BB2BA0096E04"
1482 "3E013C605EC3BAFC"
1483 "1CB94D0DB5A99E56"
1484 "4BAB5B66A798A69A"
1485 "E6",
1486 .oct_len = 49,
1487 .oct = {
1488 0x04, 0x62, 0x5d, 0xfb, 0x0e, 0x58, 0x95, 0xd1,
1489 0xe7, 0x13, 0x66, 0x9a, 0x0c, 0x5c, 0xef, 0x2f,
1490 0x2f, 0x33, 0xbb, 0x2b, 0xa0, 0x09, 0x6e, 0x04,
1491 0x3e, 0x01, 0x3c, 0x60, 0x5e, 0xc3, 0xba, 0xfc,
1492 0x1c, 0xb9, 0x4d, 0x0d, 0xb5, 0xa9, 0x9e, 0x56,
1493 0x4b, 0xab, 0x5b, 0x66, 0xa7, 0x98, 0xa6, 0x9a,
1494 0xe6,
1495 },
1224 }, 1496 },
1225 { 1497 {
1226 .name = "prime192v3", 1498 .name = "prime192v3",
@@ -1240,6 +1512,23 @@ static const struct ec_private_key {
1240 0xc8, 0xd8, 0x3a, 0xc5, 0x7d, 0xfb, 0x9c, 0x78, 1512 0xc8, 0xd8, 0x3a, 0xc5, 0x7d, 0xfb, 0x9c, 0x78,
1241 0xd3, 1513 0xd3,
1242 }, 1514 },
1515 .hex = "0451389F964E130C"
1516 "E293EEC64410FDFF"
1517 "AED4080F3A7871DC"
1518 "FE6D460EE4E699D1"
1519 "258CB8C0E97C7AD3"
1520 "C8D83AC57DFB9C78"
1521 "D3",
1522 .oct_len = 49,
1523 .oct = {
1524 0x04, 0x51, 0x38, 0x9f, 0x96, 0x4e, 0x13, 0x0c,
1525 0xe2, 0x93, 0xee, 0xc6, 0x44, 0x10, 0xfd, 0xff,
1526 0xae, 0xd4, 0x08, 0x0f, 0x3a, 0x78, 0x71, 0xdc,
1527 0xfe, 0x6d, 0x46, 0x0e, 0xe4, 0xe6, 0x99, 0xd1,
1528 0x25, 0x8c, 0xb8, 0xc0, 0xe9, 0x7c, 0x7a, 0xd3,
1529 0xc8, 0xd8, 0x3a, 0xc5, 0x7d, 0xfb, 0x9c, 0x78,
1530 0xd3,
1531 },
1243 }, 1532 },
1244 { 1533 {
1245 .name = "prime239v1", 1534 .name = "prime239v1",
@@ -1261,6 +1550,25 @@ static const struct ec_private_key {
1261 0xe3, 0x04, 0xef, 0x5d, 0x65, 0x75, 0x98, 0x7f, 1550 0xe3, 0x04, 0xef, 0x5d, 0x65, 0x75, 0x98, 0x7f,
1262 0x2d, 0xd0, 0x68, 1551 0x2d, 0xd0, 0x68,
1263 }, 1552 },
1553 .hex = "0433C6E58AC18B7C"
1554 "9619C9E1547F819E"
1555 "5962ECC01EE553D5"
1556 "AE6BD3E00907C527"
1557 "81A68D398EFE01C2"
1558 "1DDADE7BDC762717"
1559 "F96FE304EF5D6575"
1560 "987F2DD068",
1561 .oct_len = 61,
1562 .oct = {
1563 0x04, 0x33, 0xc6, 0xe5, 0x8a, 0xc1, 0x8b, 0x7c,
1564 0x96, 0x19, 0xc9, 0xe1, 0x54, 0x7f, 0x81, 0x9e,
1565 0x59, 0x62, 0xec, 0xc0, 0x1e, 0xe5, 0x53, 0xd5,
1566 0xae, 0x6b, 0xd3, 0xe0, 0x09, 0x07, 0xc5, 0x27,
1567 0x81, 0xa6, 0x8d, 0x39, 0x8e, 0xfe, 0x01, 0xc2,
1568 0x1d, 0xda, 0xde, 0x7b, 0xdc, 0x76, 0x27, 0x17,
1569 0xf9, 0x6f, 0xe3, 0x04, 0xef, 0x5d, 0x65, 0x75,
1570 0x98, 0x7f, 0x2d, 0xd0, 0x68,
1571 },
1264 }, 1572 },
1265 { 1573 {
1266 .name = "prime239v2", 1574 .name = "prime239v2",
@@ -1282,6 +1590,25 @@ static const struct ec_private_key {
1282 0xe0, 0xcc, 0xdd, 0x45, 0xd8, 0xa6, 0x29, 0x2f, 1590 0xe0, 0xcc, 0xdd, 0x45, 0xd8, 0xa6, 0x29, 0x2f,
1283 0xad, 0x6b, 0xf9, 1591 0xad, 0x6b, 0xf9,
1284 }, 1592 },
1593 .hex = "043C10277BACDF86"
1594 "C94FF839870239AF"
1595 "41BC4B67D85E0496"
1596 "84B56050486A201D"
1597 "2B7E9FAFF88E7EA4"
1598 "CD00ADB1AD226932"
1599 "106CE0CCDD45D8A6"
1600 "292FAD6BF9",
1601 .oct_len = 61,
1602 .oct = {
1603 0x04, 0x3c, 0x10, 0x27, 0x7b, 0xac, 0xdf, 0x86,
1604 0xc9, 0x4f, 0xf8, 0x39, 0x87, 0x02, 0x39, 0xaf,
1605 0x41, 0xbc, 0x4b, 0x67, 0xd8, 0x5e, 0x04, 0x96,
1606 0x84, 0xb5, 0x60, 0x50, 0x48, 0x6a, 0x20, 0x1d,
1607 0x2b, 0x7e, 0x9f, 0xaf, 0xf8, 0x8e, 0x7e, 0xa4,
1608 0xcd, 0x00, 0xad, 0xb1, 0xad, 0x22, 0x69, 0x32,
1609 0x10, 0x6c, 0xe0, 0xcc, 0xdd, 0x45, 0xd8, 0xa6,
1610 0x29, 0x2f, 0xad, 0x6b, 0xf9,
1611 },
1285 }, 1612 },
1286 { 1613 {
1287 .name = "prime239v3", 1614 .name = "prime239v3",
@@ -1303,6 +1630,25 @@ static const struct ec_private_key {
1303 0x26, 0x81, 0x2a, 0x91, 0x14, 0x0f, 0xc7, 0x31, 1630 0x26, 0x81, 0x2a, 0x91, 0x14, 0x0f, 0xc7, 0x31,
1304 0x13, 0x78, 0x16, 1631 0x13, 0x78, 0x16,
1305 }, 1632 },
1633 .hex = "0437BA077FD9465A"
1634 "3303317738EFEECC"
1635 "3DE1AA57E38DB7CD"
1636 "E301F4D675497261"
1637 "4CBFC01F8B5F989B"
1638 "A7E56AB7FE63DBB0"
1639 "40CB26812A91140F"
1640 "C731137816",
1641 .oct_len = 61,
1642 .oct = {
1643 0x04, 0x37, 0xba, 0x07, 0x7f, 0xd9, 0x46, 0x5a,
1644 0x33, 0x03, 0x31, 0x77, 0x38, 0xef, 0xee, 0xcc,
1645 0x3d, 0xe1, 0xaa, 0x57, 0xe3, 0x8d, 0xb7, 0xcd,
1646 0xe3, 0x01, 0xf4, 0xd6, 0x75, 0x49, 0x72, 0x61,
1647 0x4c, 0xbf, 0xc0, 0x1f, 0x8b, 0x5f, 0x98, 0x9b,
1648 0xa7, 0xe5, 0x6a, 0xb7, 0xfe, 0x63, 0xdb, 0xb0,
1649 0x40, 0xcb, 0x26, 0x81, 0x2a, 0x91, 0x14, 0x0f,
1650 0xc7, 0x31, 0x13, 0x78, 0x16,
1651 },
1306 }, 1652 },
1307 { 1653 {
1308 .name = "prime256v1", 1654 .name = "prime256v1",
@@ -1325,6 +1671,27 @@ static const struct ec_private_key {
1325 0x0b, 0xa6, 0xdd, 0x16, 0xc5, 0x8d, 0x5a, 0xcf, 1671 0x0b, 0xa6, 0xdd, 0x16, 0xc5, 0x8d, 0x5a, 0xcf,
1326 0xe3, 1672 0xe3,
1327 }, 1673 },
1674 .hex = "04968AC3661EF7CF"
1675 "F6CC4E73AEE264C4"
1676 "565F2DFEDEAC92BE"
1677 "104037CE24123019"
1678 "0866CF90C93703D1"
1679 "D58DAA182ABCED82"
1680 "32C9434B987FDCB1"
1681 "0BA6DD16C58D5ACF"
1682 "E3",
1683 .oct_len = 65,
1684 .oct = {
1685 0x04, 0x96, 0x8a, 0xc3, 0x66, 0x1e, 0xf7, 0xcf,
1686 0xf6, 0xcc, 0x4e, 0x73, 0xae, 0xe2, 0x64, 0xc4,
1687 0x56, 0x5f, 0x2d, 0xfe, 0xde, 0xac, 0x92, 0xbe,
1688 0x10, 0x40, 0x37, 0xce, 0x24, 0x12, 0x30, 0x19,
1689 0x08, 0x66, 0xcf, 0x90, 0xc9, 0x37, 0x03, 0xd1,
1690 0xd5, 0x8d, 0xaa, 0x18, 0x2a, 0xbc, 0xed, 0x82,
1691 0x32, 0xc9, 0x43, 0x4b, 0x98, 0x7f, 0xdc, 0xb1,
1692 0x0b, 0xa6, 0xdd, 0x16, 0xc5, 0x8d, 0x5a, 0xcf,
1693 0xe3,
1694 },
1328 }, 1695 },
1329 { 1696 {
1330 .name = "wap-wsg-idm-ecid-wtls6", 1697 .name = "wap-wsg-idm-ecid-wtls6",
@@ -1339,6 +1706,17 @@ static const struct ec_private_key {
1339 0x43, 0x15, 0x6e, 0x27, 0x8a, 0x4f, 0x28, 0x11, 1706 0x43, 0x15, 0x6e, 0x27, 0x8a, 0x4f, 0x28, 0x11,
1340 0xb8, 0xf6, 0x80, 0xfe, 0x7a, 0xb1, 0xa2, 0x74, 1707 0xb8, 0xf6, 0x80, 0xfe, 0x7a, 0xb1, 0xa2, 0x74,
1341 }, 1708 },
1709 .hex = "04563F72F1B5EE7A"
1710 "4C5976D49743156E"
1711 "278A4F2811B8F680"
1712 "FE7AB1A274",
1713 .oct_len = 29,
1714 .oct = {
1715 0x04, 0x56, 0x3f, 0x72, 0xf1, 0xb5, 0xee, 0x7a,
1716 0x4c, 0x59, 0x76, 0xd4, 0x97, 0x43, 0x15, 0x6e,
1717 0x27, 0x8a, 0x4f, 0x28, 0x11, 0xb8, 0xf6, 0x80,
1718 0xfe, 0x7a, 0xb1, 0xa2, 0x74,
1719 },
1342 }, 1720 },
1343#if CORRECT_PRIV_KEY_PADDING 1721#if CORRECT_PRIV_KEY_PADDING
1344 { 1722 {
@@ -1357,6 +1735,21 @@ static const struct ec_private_key {
1357 0x92, 0x2e, 0x9a, 0xa9, 0x73, 0x2b, 0xc3, 0x06, 1735 0x92, 0x2e, 0x9a, 0xa9, 0x73, 0x2b, 0xc3, 0x06,
1358 0x0e, 0x4e, 0x69, 1736 0x0e, 0x4e, 0x69,
1359 }, 1737 },
1738 .hex = "04AF842D08CBE2F2"
1739 "A3AC20B0995C38D7"
1740 "5ECEB90B2E38DDCF"
1741 "137F5AFAAC1D922E"
1742 "9AA9732BC3060E4E"
1743 "69",
1744 .oct_len = 41,
1745 .oct = {
1746 0x04, 0xaf, 0x84, 0x2d, 0x08, 0xcb, 0xe2, 0xf2,
1747 0xa3, 0xac, 0x20, 0xb0, 0x99, 0x5c, 0x38, 0xd7,
1748 0x5e, 0xce, 0xb9, 0x0b, 0x2e, 0x38, 0xdd, 0xcf,
1749 0x13, 0x7f, 0x5a, 0xfa, 0xac, 0x1d, 0x92, 0x2e,
1750 0x9a, 0xa9, 0x73, 0x2b, 0xc3, 0x06, 0x0e, 0x4e,
1751 0x69,
1752 },
1360 }, 1753 },
1361 { 1754 {
1362 .name = "wap-wsg-idm-ecid-wtls8", 1755 .name = "wap-wsg-idm-ecid-wtls8",
@@ -1372,6 +1765,17 @@ static const struct ec_private_key {
1372 0x52, 0x3c, 0x6a, 0x6a, 0x2f, 0x69, 0x1a, 0x06, 1765 0x52, 0x3c, 0x6a, 0x6a, 0x2f, 0x69, 0x1a, 0x06,
1373 0x56, 1766 0x56,
1374 }, 1767 },
1768 .hex = "0448814BAE65F8DA"
1769 "022C66C60B1DA698"
1770 "4225F231523C6A6A"
1771 "2F691A0656",
1772 .oct_len = 29,
1773 .oct = {
1774 0x04, 0x48, 0x81, 0x4b, 0xae, 0x65, 0xf8, 0xda,
1775 0x02, 0x2c, 0x66, 0xc6, 0x0b, 0x1d, 0xa6, 0x98,
1776 0x42, 0x25, 0xf2, 0x31, 0x52, 0x3c, 0x6a, 0x6a,
1777 0x2f, 0x69, 0x1a, 0x06, 0x56,
1778 },
1375 }, 1779 },
1376 { 1780 {
1377 .name = "wap-wsg-idm-ecid-wtls9", 1781 .name = "wap-wsg-idm-ecid-wtls9",
@@ -1389,6 +1793,21 @@ static const struct ec_private_key {
1389 0xfa, 0x7e, 0xdc, 0x50, 0xc4, 0xac, 0xea, 0x84, 1793 0xfa, 0x7e, 0xdc, 0x50, 0xc4, 0xac, 0xea, 0x84,
1390 0x2f, 0xba, 0x3c, 1794 0x2f, 0xba, 0x3c,
1391 }, 1795 },
1796 .hex = "04AAFCE4FEF89148"
1797 "F1CC4944353D4971"
1798 "44DC74735B5F014B"
1799 "AB8B5C84EC2BFA7E"
1800 "DC50C4ACEA842FBA"
1801 "3C",
1802 .oct_len = 41,
1803 .oct = {
1804 0x04, 0xaa, 0xfc, 0xe4, 0xfe, 0xf8, 0x91, 0x48,
1805 0xf1, 0xcc, 0x49, 0x44, 0x35, 0x3d, 0x49, 0x71,
1806 0x44, 0xdc, 0x74, 0x73, 0x5b, 0x5f, 0x01, 0x4b,
1807 0xab, 0x8b, 0x5c, 0x84, 0xec, 0x2b, 0xfa, 0x7e,
1808 0xdc, 0x50, 0xc4, 0xac, 0xea, 0x84, 0x2f, 0xba,
1809 0x3c,
1810 },
1392 }, 1811 },
1393#endif 1812#endif
1394 { 1813 {
@@ -1410,6 +1829,25 @@ static const struct ec_private_key {
1410 0x00, 0xaf, 0xdc, 0x4a, 0xe7, 0xc6, 0x61, 0x44, 1829 0x00, 0xaf, 0xdc, 0x4a, 0xe7, 0xc6, 0x61, 0x44,
1411 0x50, 0xc6, 1830 0x50, 0xc6,
1412 }, 1831 },
1832 .hex = "0447D66327E1AD30"
1833 "ACBAAB86D663B5D9"
1834 "C59C243AD96A7A5D"
1835 "2B45718D7ED23275"
1836 "65C43725C71FEB33"
1837 "F76829168296D900"
1838 "AFDC4AE7C6614450"
1839 "C6",
1840 .oct_len = 57,
1841 .oct = {
1842 0x04, 0x47, 0xd6, 0x63, 0x27, 0xe1, 0xad, 0x30,
1843 0xac, 0xba, 0xab, 0x86, 0xd6, 0x63, 0xb5, 0xd9,
1844 0xc5, 0x9c, 0x24, 0x3a, 0xd9, 0x6a, 0x7a, 0x5d,
1845 0x2b, 0x45, 0x71, 0x8d, 0x7e, 0xd2, 0x32, 0x75,
1846 0x65, 0xc4, 0x37, 0x25, 0xc7, 0x1f, 0xeb, 0x33,
1847 0xf7, 0x68, 0x29, 0x16, 0x82, 0x96, 0xd9, 0x00,
1848 0xaf, 0xdc, 0x4a, 0xe7, 0xc6, 0x61, 0x44, 0x50,
1849 0xc6,
1850 },
1413 }, 1851 },
1414 { 1852 {
1415 .name = "brainpoolP160r1", 1853 .name = "brainpoolP160r1",
@@ -1427,6 +1865,21 @@ static const struct ec_private_key {
1427 0xa2, 0xcc, 0xc4, 0xd0, 0x1d, 0xd6, 0xe6, 0xcf, 1865 0xa2, 0xcc, 0xc4, 0xd0, 0x1d, 0xd6, 0xe6, 0xcf,
1428 0x11, 0x6e, 0x59, 0x12, 0xbb, 0x14, 1866 0x11, 0x6e, 0x59, 0x12, 0xbb, 0x14,
1429 }, 1867 },
1868 .hex = "044C15498194F56E"
1869 "808EC865EA48FA29"
1870 "C259F136D68DA4C5"
1871 "E07DE5A2CCC4D01D"
1872 "D6E6CF116E5912BB"
1873 "14",
1874 .oct_len = 41,
1875 .oct = {
1876 0x04, 0x4c, 0x15, 0x49, 0x81, 0x94, 0xf5, 0x6e,
1877 0x80, 0x8e, 0xc8, 0x65, 0xea, 0x48, 0xfa, 0x29,
1878 0xc2, 0x59, 0xf1, 0x36, 0xd6, 0x8d, 0xa4, 0xc5,
1879 0xe0, 0x7d, 0xe5, 0xa2, 0xcc, 0xc4, 0xd0, 0x1d,
1880 0xd6, 0xe6, 0xcf, 0x11, 0x6e, 0x59, 0x12, 0xbb,
1881 0x14,
1882 },
1430 }, 1883 },
1431 { 1884 {
1432 .name = "brainpoolP160t1", 1885 .name = "brainpoolP160t1",
@@ -1444,6 +1897,21 @@ static const struct ec_private_key {
1444 0xcf, 0x8f, 0x31, 0xb1, 0x69, 0x99, 0xc6, 0x11, 1897 0xcf, 0x8f, 0x31, 0xb1, 0x69, 0x99, 0xc6, 0x11,
1445 0x80, 0x0d, 0x40, 0x25, 0xf0, 0x90, 1898 0x80, 0x0d, 0x40, 0x25, 0xf0, 0x90,
1446 }, 1899 },
1900 .hex = "04964B2C8AED9B18"
1901 "30C11CBC16567BC0"
1902 "3A6C52F871DF5420"
1903 "96E3E9CF8F31B169"
1904 "99C611800D4025F0"
1905 "90",
1906 .oct_len = 41,
1907 .oct = {
1908 0x04, 0x96, 0x4b, 0x2c, 0x8a, 0xed, 0x9b, 0x18,
1909 0x30, 0xc1, 0x1c, 0xbc, 0x16, 0x56, 0x7b, 0xc0,
1910 0x3a, 0x6c, 0x52, 0xf8, 0x71, 0xdf, 0x54, 0x20,
1911 0x96, 0xe3, 0xe9, 0xcf, 0x8f, 0x31, 0xb1, 0x69,
1912 0x99, 0xc6, 0x11, 0x80, 0x0d, 0x40, 0x25, 0xf0,
1913 0x90,
1914 },
1447 }, 1915 },
1448 { 1916 {
1449 .name = "brainpoolP192r1", 1917 .name = "brainpoolP192r1",
@@ -1463,6 +1931,23 @@ static const struct ec_private_key {
1463 0x3c, 0xf1, 0x96, 0x94, 0x1f, 0x9c, 0x04, 0x2a, 1931 0x3c, 0xf1, 0x96, 0x94, 0x1f, 0x9c, 0x04, 0x2a,
1464 0x43, 0x27, 1932 0x43, 0x27,
1465 }, 1933 },
1934 .hex = "0471609C629876C9"
1935 "149175C6C81632C2"
1936 "294764A359A745DB"
1937 "D75195BAA433466E"
1938 "4F86ED1EEAF6F13C"
1939 "F196941F9C042A43"
1940 "27",
1941 .oct_len = 49,
1942 .oct = {
1943 0x04, 0x71, 0x60, 0x9c, 0x62, 0x98, 0x76, 0xc9,
1944 0x14, 0x91, 0x75, 0xc6, 0xc8, 0x16, 0x32, 0xc2,
1945 0x29, 0x47, 0x64, 0xa3, 0x59, 0xa7, 0x45, 0xdb,
1946 0xd7, 0x51, 0x95, 0xba, 0xa4, 0x33, 0x46, 0x6e,
1947 0x4f, 0x86, 0xed, 0x1e, 0xea, 0xf6, 0xf1, 0x3c,
1948 0xf1, 0x96, 0x94, 0x1f, 0x9c, 0x04, 0x2a, 0x43,
1949 0x27,
1950 },
1466 }, 1951 },
1467 { 1952 {
1468 .name = "brainpoolP192t1", 1953 .name = "brainpoolP192t1",
@@ -1482,6 +1967,23 @@ static const struct ec_private_key {
1482 0x6d, 0x1b, 0x15, 0xd7, 0x4b, 0x79, 0xc1, 0xb5, 1967 0x6d, 0x1b, 0x15, 0xd7, 0x4b, 0x79, 0xc1, 0xb5,
1483 0x28, 0xc7, 1968 0x28, 0xc7,
1484 }, 1969 },
1970 .hex = "048D2B0CEEEA4B63"
1971 "AF6336B23A554085"
1972 "3395C11D37D3FC5C"
1973 "258A0AC5EC7FE07F"
1974 "085EDF89E6EE216D"
1975 "1B15D74B79C1B528"
1976 "C7",
1977 .oct_len = 49,
1978 .oct = {
1979 0x04, 0x8d, 0x2b, 0x0c, 0xee, 0xea, 0x4b, 0x63,
1980 0xaf, 0x63, 0x36, 0xb2, 0x3a, 0x55, 0x40, 0x85,
1981 0x33, 0x95, 0xc1, 0x1d, 0x37, 0xd3, 0xfc, 0x5c,
1982 0x25, 0x8a, 0x0a, 0xc5, 0xec, 0x7f, 0xe0, 0x7f,
1983 0x08, 0x5e, 0xdf, 0x89, 0xe6, 0xee, 0x21, 0x6d,
1984 0x1b, 0x15, 0xd7, 0x4b, 0x79, 0xc1, 0xb5, 0x28,
1985 0xc7,
1986 },
1485 }, 1987 },
1486 { 1988 {
1487 .name = "brainpoolP224r1", 1989 .name = "brainpoolP224r1",
@@ -1502,6 +2004,25 @@ static const struct ec_private_key {
1502 0x71, 0x50, 0x6b, 0xed, 0xe3, 0xc5, 0xd4, 0xe9, 2004 0x71, 0x50, 0x6b, 0xed, 0xe3, 0xc5, 0xd4, 0xe9,
1503 0x1b, 0x59, 0x92, 0xa4, 0xa8, 0x81, 2005 0x1b, 0x59, 0x92, 0xa4, 0xa8, 0x81,
1504 }, 2006 },
2007 .hex = "04308820B3472E40"
2008 "1E68AEE10058A24B"
2009 "B9ACF75DC1EEF5FB"
2010 "DD34AEBE3C93DDC2"
2011 "D83A9A726541ACCC"
2012 "256ACF71506BEDE3"
2013 "C5D4E91B5992A4A8"
2014 "81",
2015 .oct_len = 57,
2016 .oct = {
2017 0x04, 0x30, 0x88, 0x20, 0xb3, 0x47, 0x2e, 0x40,
2018 0x1e, 0x68, 0xae, 0xe1, 0x00, 0x58, 0xa2, 0x4b,
2019 0xb9, 0xac, 0xf7, 0x5d, 0xc1, 0xee, 0xf5, 0xfb,
2020 0xdd, 0x34, 0xae, 0xbe, 0x3c, 0x93, 0xdd, 0xc2,
2021 0xd8, 0x3a, 0x9a, 0x72, 0x65, 0x41, 0xac, 0xcc,
2022 0x25, 0x6a, 0xcf, 0x71, 0x50, 0x6b, 0xed, 0xe3,
2023 0xc5, 0xd4, 0xe9, 0x1b, 0x59, 0x92, 0xa4, 0xa8,
2024 0x81,
2025 },
1505 }, 2026 },
1506 { 2027 {
1507 .name = "brainpoolP224t1", 2028 .name = "brainpoolP224t1",
@@ -1522,6 +2043,25 @@ static const struct ec_private_key {
1522 0x59, 0xb2, 0xfd, 0xe7, 0xdf, 0x41, 0xff, 0x4f, 2043 0x59, 0xb2, 0xfd, 0xe7, 0xdf, 0x41, 0xff, 0x4f,
1523 0x36, 0xe9, 0x56, 0xe9, 0x07, 0xc2, 2044 0x36, 0xe9, 0x56, 0xe9, 0x07, 0xc2,
1524 }, 2045 },
2046 .hex = "040BBF95EA8BA824"
2047 "94685469D955A536"
2048 "34F14A45F99F667B"
2049 "5DC98B0A7A5DEF25"
2050 "9AA386E1981B5BE3"
2051 "E355A059B2FDE7DF"
2052 "41FF4F36E956E907"
2053 "C2",
2054 .oct_len = 57,
2055 .oct = {
2056 0x04, 0x0b, 0xbf, 0x95, 0xea, 0x8b, 0xa8, 0x24,
2057 0x94, 0x68, 0x54, 0x69, 0xd9, 0x55, 0xa5, 0x36,
2058 0x34, 0xf1, 0x4a, 0x45, 0xf9, 0x9f, 0x66, 0x7b,
2059 0x5d, 0xc9, 0x8b, 0x0a, 0x7a, 0x5d, 0xef, 0x25,
2060 0x9a, 0xa3, 0x86, 0xe1, 0x98, 0x1b, 0x5b, 0xe3,
2061 0xe3, 0x55, 0xa0, 0x59, 0xb2, 0xfd, 0xe7, 0xdf,
2062 0x41, 0xff, 0x4f, 0x36, 0xe9, 0x56, 0xe9, 0x07,
2063 0xc2,
2064 },
1525 }, 2065 },
1526 { 2066 {
1527 .name = "brainpoolP256r1", 2067 .name = "brainpoolP256r1",
@@ -1544,6 +2084,27 @@ static const struct ec_private_key {
1544 0xcf, 0xe3, 0x38, 0xa0, 0xb7, 0x95, 0x85, 0x26, 2084 0xcf, 0xe3, 0x38, 0xa0, 0xb7, 0x95, 0x85, 0x26,
1545 0xf5, 0xb2, 2085 0xf5, 0xb2,
1546 }, 2086 },
2087 .hex = "0408D777F510A983"
2088 "D9DFFD40E442CED8"
2089 "3B9BEFE64D4ECA2D"
2090 "EAE669FED3A93F30"
2091 "FA7EA7149D3777C5"
2092 "CC1E32F6CE17911B"
2093 "EBA38FCE7055C1CF"
2094 "E338A0B7958526F5"
2095 "B2",
2096 .oct_len = 65,
2097 .oct = {
2098 0x04, 0x08, 0xd7, 0x77, 0xf5, 0x10, 0xa9, 0x83,
2099 0xd9, 0xdf, 0xfd, 0x40, 0xe4, 0x42, 0xce, 0xd8,
2100 0x3b, 0x9b, 0xef, 0xe6, 0x4d, 0x4e, 0xca, 0x2d,
2101 0xea, 0xe6, 0x69, 0xfe, 0xd3, 0xa9, 0x3f, 0x30,
2102 0xfa, 0x7e, 0xa7, 0x14, 0x9d, 0x37, 0x77, 0xc5,
2103 0xcc, 0x1e, 0x32, 0xf6, 0xce, 0x17, 0x91, 0x1b,
2104 0xeb, 0xa3, 0x8f, 0xce, 0x70, 0x55, 0xc1, 0xcf,
2105 0xe3, 0x38, 0xa0, 0xb7, 0x95, 0x85, 0x26, 0xf5,
2106 0xb2,
2107 },
1547 }, 2108 },
1548 { 2109 {
1549 .name = "brainpoolP256t1", 2110 .name = "brainpoolP256t1",
@@ -1566,6 +2127,27 @@ static const struct ec_private_key {
1566 0xbd, 0x1e, 0x53, 0x8d, 0x26, 0x96, 0xab, 0x44, 2127 0xbd, 0x1e, 0x53, 0x8d, 0x26, 0x96, 0xab, 0x44,
1567 0x6b, 0x84, 2128 0x6b, 0x84,
1568 }, 2129 },
2130 .hex = "047B1D55290B0A0D"
2131 "027A1D7253C184B9"
2132 "9000B945E5A5D4EE"
2133 "D69A1DB03A91A895"
2134 "565832CBF32895A6"
2135 "8246E60A3300D10C"
2136 "61AC1EA0B0AD3ABD"
2137 "1E538D2696AB446B"
2138 "84",
2139 .oct_len = 65,
2140 .oct = {
2141 0x04, 0x7b, 0x1d, 0x55, 0x29, 0x0b, 0x0a, 0x0d,
2142 0x02, 0x7a, 0x1d, 0x72, 0x53, 0xc1, 0x84, 0xb9,
2143 0x90, 0x00, 0xb9, 0x45, 0xe5, 0xa5, 0xd4, 0xee,
2144 0xd6, 0x9a, 0x1d, 0xb0, 0x3a, 0x91, 0xa8, 0x95,
2145 0x56, 0x58, 0x32, 0xcb, 0xf3, 0x28, 0x95, 0xa6,
2146 0x82, 0x46, 0xe6, 0x0a, 0x33, 0x00, 0xd1, 0x0c,
2147 0x61, 0xac, 0x1e, 0xa0, 0xb0, 0xad, 0x3a, 0xbd,
2148 0x1e, 0x53, 0x8d, 0x26, 0x96, 0xab, 0x44, 0x6b,
2149 0x84,
2150 },
1569 }, 2151 },
1570 { 2152 {
1571 .name = "brainpoolP320r1", 2153 .name = "brainpoolP320r1",
@@ -1591,6 +2173,31 @@ static const struct ec_private_key {
1591 0x54, 0xcc, 0x11, 0x2a, 0x84, 0xc6, 0x79, 0x10, 2173 0x54, 0xcc, 0x11, 0x2a, 0x84, 0xc6, 0x79, 0x10,
1592 0x7b, 0x20, 0x26, 2174 0x7b, 0x20, 0x26,
1593 }, 2175 },
2176 .hex = "04A33785E2F25FA1"
2177 "71A675FEA1EA6635"
2178 "7A53712483CDC95D"
2179 "3F43C4976DCC0CED"
2180 "9A51517D1ED0EAD2"
2181 "8C36B09362EB26DA"
2182 "E1EFC71AFA0CEA84"
2183 "7AF1502CEEF1B3CC"
2184 "B7A0985DDEC254CC"
2185 "112A84C679107B20"
2186 "26",
2187 .oct_len = 81,
2188 .oct = {
2189 0x04, 0xa3, 0x37, 0x85, 0xe2, 0xf2, 0x5f, 0xa1,
2190 0x71, 0xa6, 0x75, 0xfe, 0xa1, 0xea, 0x66, 0x35,
2191 0x7a, 0x53, 0x71, 0x24, 0x83, 0xcd, 0xc9, 0x5d,
2192 0x3f, 0x43, 0xc4, 0x97, 0x6d, 0xcc, 0x0c, 0xed,
2193 0x9a, 0x51, 0x51, 0x7d, 0x1e, 0xd0, 0xea, 0xd2,
2194 0x8c, 0x36, 0xb0, 0x93, 0x62, 0xeb, 0x26, 0xda,
2195 0xe1, 0xef, 0xc7, 0x1a, 0xfa, 0x0c, 0xea, 0x84,
2196 0x7a, 0xf1, 0x50, 0x2c, 0xee, 0xf1, 0xb3, 0xcc,
2197 0xb7, 0xa0, 0x98, 0x5d, 0xde, 0xc2, 0x54, 0xcc,
2198 0x11, 0x2a, 0x84, 0xc6, 0x79, 0x10, 0x7b, 0x20,
2199 0x26,
2200 },
1594 }, 2201 },
1595 { 2202 {
1596 .name = "brainpoolP320t1", 2203 .name = "brainpoolP320t1",
@@ -1616,6 +2223,31 @@ static const struct ec_private_key {
1616 0x03, 0xbe, 0xa5, 0x05, 0x88, 0x16, 0x47, 0x9f, 2223 0x03, 0xbe, 0xa5, 0x05, 0x88, 0x16, 0x47, 0x9f,
1617 0xe5, 0x3b, 0xb8, 2224 0xe5, 0x3b, 0xb8,
1618 }, 2225 },
2226 .hex = "043D8C4CBB303FA0"
2227 "846143502370E370"
2228 "B64D89C895A009AE"
2229 "FC559C2FEF16C072"
2230 "3C3E07A1BBD88AFA"
2231 "AF9FAF077C154D75"
2232 "6BF525655BC47859"
2233 "22E5925CC28FDC97"
2234 "5982C50D247003BE"
2235 "A5058816479FE53B"
2236 "B8",
2237 .oct_len = 81,
2238 .oct = {
2239 0x04, 0x3d, 0x8c, 0x4c, 0xbb, 0x30, 0x3f, 0xa0,
2240 0x84, 0x61, 0x43, 0x50, 0x23, 0x70, 0xe3, 0x70,
2241 0xb6, 0x4d, 0x89, 0xc8, 0x95, 0xa0, 0x09, 0xae,
2242 0xfc, 0x55, 0x9c, 0x2f, 0xef, 0x16, 0xc0, 0x72,
2243 0x3c, 0x3e, 0x07, 0xa1, 0xbb, 0xd8, 0x8a, 0xfa,
2244 0xaf, 0x9f, 0xaf, 0x07, 0x7c, 0x15, 0x4d, 0x75,
2245 0x6b, 0xf5, 0x25, 0x65, 0x5b, 0xc4, 0x78, 0x59,
2246 0x22, 0xe5, 0x92, 0x5c, 0xc2, 0x8f, 0xdc, 0x97,
2247 0x59, 0x82, 0xc5, 0x0d, 0x24, 0x70, 0x03, 0xbe,
2248 0xa5, 0x05, 0x88, 0x16, 0x47, 0x9f, 0xe5, 0x3b,
2249 0xb8,
2250 },
1619 }, 2251 },
1620 { 2252 {
1621 .name = "brainpoolP384r1", 2253 .name = "brainpoolP384r1",
@@ -1644,6 +2276,35 @@ static const struct ec_private_key {
1644 0x92, 0x00, 0xaf, 0x3d, 0xe8, 0x5a, 0x7d, 0x7b, 2276 0x92, 0x00, 0xaf, 0x3d, 0xe8, 0x5a, 0x7d, 0x7b,
1645 0x63, 0xc2, 0xde, 2277 0x63, 0xc2, 0xde,
1646 }, 2278 },
2279 .hex = "044F79E0E7F95733"
2280 "F99D6A5C006EB8BC"
2281 "E64F701D73025C87"
2282 "A188EAE3575C1A27"
2283 "40CFCC6F7E6DFD96"
2284 "0BAAC50292106D7E"
2285 "D517DAAB529BCD87"
2286 "08642A6103C9FE97"
2287 "79F05C8472505395"
2288 "567A97CE36132378"
2289 "3182360745AD9200"
2290 "AF3DE85A7D7B63C2"
2291 "DE",
2292 .oct_len = 97,
2293 .oct = {
2294 0x04, 0x4f, 0x79, 0xe0, 0xe7, 0xf9, 0x57, 0x33,
2295 0xf9, 0x9d, 0x6a, 0x5c, 0x00, 0x6e, 0xb8, 0xbc,
2296 0xe6, 0x4f, 0x70, 0x1d, 0x73, 0x02, 0x5c, 0x87,
2297 0xa1, 0x88, 0xea, 0xe3, 0x57, 0x5c, 0x1a, 0x27,
2298 0x40, 0xcf, 0xcc, 0x6f, 0x7e, 0x6d, 0xfd, 0x96,
2299 0x0b, 0xaa, 0xc5, 0x02, 0x92, 0x10, 0x6d, 0x7e,
2300 0xd5, 0x17, 0xda, 0xab, 0x52, 0x9b, 0xcd, 0x87,
2301 0x08, 0x64, 0x2a, 0x61, 0x03, 0xc9, 0xfe, 0x97,
2302 0x79, 0xf0, 0x5c, 0x84, 0x72, 0x50, 0x53, 0x95,
2303 0x56, 0x7a, 0x97, 0xce, 0x36, 0x13, 0x23, 0x78,
2304 0x31, 0x82, 0x36, 0x07, 0x45, 0xad, 0x92, 0x00,
2305 0xaf, 0x3d, 0xe8, 0x5a, 0x7d, 0x7b, 0x63, 0xc2,
2306 0xde,
2307 },
1647 }, 2308 },
1648 { 2309 {
1649 .name = "brainpoolP384t1", 2310 .name = "brainpoolP384t1",
@@ -1672,6 +2333,35 @@ static const struct ec_private_key {
1672 0x88, 0x76, 0x72, 0x9a, 0xb4, 0xea, 0xc0, 0x48, 2333 0x88, 0x76, 0x72, 0x9a, 0xb4, 0xea, 0xc0, 0x48,
1673 0x01, 0x5d, 0x8e, 2334 0x01, 0x5d, 0x8e,
1674 }, 2335 },
2336 .hex = "0485DB574B71B165"
2337 "9351837CB324076B"
2338 "7B5733733AA61486"
2339 "83A88881F290DF93"
2340 "4F6741EFCB3514AD"
2341 "4C670BDB86035E6D"
2342 "5E7E4B0F739E7350"
2343 "8629097C38FCBEAF"
2344 "599C69DFB460143E"
2345 "B21A728657CB6B42"
2346 "20677FBCA8578876"
2347 "729AB4EAC048015D"
2348 "8E",
2349 .oct_len = 97,
2350 .oct = {
2351 0x04, 0x85, 0xdb, 0x57, 0x4b, 0x71, 0xb1, 0x65,
2352 0x93, 0x51, 0x83, 0x7c, 0xb3, 0x24, 0x07, 0x6b,
2353 0x7b, 0x57, 0x33, 0x73, 0x3a, 0xa6, 0x14, 0x86,
2354 0x83, 0xa8, 0x88, 0x81, 0xf2, 0x90, 0xdf, 0x93,
2355 0x4f, 0x67, 0x41, 0xef, 0xcb, 0x35, 0x14, 0xad,
2356 0x4c, 0x67, 0x0b, 0xdb, 0x86, 0x03, 0x5e, 0x6d,
2357 0x5e, 0x7e, 0x4b, 0x0f, 0x73, 0x9e, 0x73, 0x50,
2358 0x86, 0x29, 0x09, 0x7c, 0x38, 0xfc, 0xbe, 0xaf,
2359 0x59, 0x9c, 0x69, 0xdf, 0xb4, 0x60, 0x14, 0x3e,
2360 0xb2, 0x1a, 0x72, 0x86, 0x57, 0xcb, 0x6b, 0x42,
2361 0x20, 0x67, 0x7f, 0xbc, 0xa8, 0x57, 0x88, 0x76,
2362 0x72, 0x9a, 0xb4, 0xea, 0xc0, 0x48, 0x01, 0x5d,
2363 0x8e,
2364 },
1675 }, 2365 },
1676 { 2366 {
1677 .name = "brainpoolP512r1", 2367 .name = "brainpoolP512r1",
@@ -1706,6 +2396,43 @@ static const struct ec_private_key {
1706 0x68, 0xe7, 0x19, 0xc1, 0x7d, 0xb6, 0x9d, 0xb9, 2396 0x68, 0xe7, 0x19, 0xc1, 0x7d, 0xb6, 0x9d, 0xb9,
1707 0xc6, 0xc2, 0x1b, 0x48, 0x7f, 2397 0xc6, 0xc2, 0x1b, 0x48, 0x7f,
1708 }, 2398 },
2399 .hex = "041E99EA54B61A4F"
2400 "4425F4F8BE337CD1"
2401 "6235F5D18E9FAEA8"
2402 "8F6D61272D2AB196"
2403 "486DB263059FECA1"
2404 "CD6545C8CDF1A4BA"
2405 "20B7E4C7923C1F16"
2406 "F45B75E42A2E4472"
2407 "6563C3785450CB50"
2408 "E0BEE76F2ADC247B"
2409 "F84BA8E21B27002D"
2410 "E899DC5FA443A8F7"
2411 "B155EAD702090897"
2412 "5F211E16A0D827E4"
2413 "5E3AA55168E719C1"
2414 "7DB69DB9C6C21B48"
2415 "7F",
2416 .oct_len = 129,
2417 .oct = {
2418 0x04, 0x1e, 0x99, 0xea, 0x54, 0xb6, 0x1a, 0x4f,
2419 0x44, 0x25, 0xf4, 0xf8, 0xbe, 0x33, 0x7c, 0xd1,
2420 0x62, 0x35, 0xf5, 0xd1, 0x8e, 0x9f, 0xae, 0xa8,
2421 0x8f, 0x6d, 0x61, 0x27, 0x2d, 0x2a, 0xb1, 0x96,
2422 0x48, 0x6d, 0xb2, 0x63, 0x05, 0x9f, 0xec, 0xa1,
2423 0xcd, 0x65, 0x45, 0xc8, 0xcd, 0xf1, 0xa4, 0xba,
2424 0x20, 0xb7, 0xe4, 0xc7, 0x92, 0x3c, 0x1f, 0x16,
2425 0xf4, 0x5b, 0x75, 0xe4, 0x2a, 0x2e, 0x44, 0x72,
2426 0x65, 0x63, 0xc3, 0x78, 0x54, 0x50, 0xcb, 0x50,
2427 0xe0, 0xbe, 0xe7, 0x6f, 0x2a, 0xdc, 0x24, 0x7b,
2428 0xf8, 0x4b, 0xa8, 0xe2, 0x1b, 0x27, 0x00, 0x2d,
2429 0xe8, 0x99, 0xdc, 0x5f, 0xa4, 0x43, 0xa8, 0xf7,
2430 0xb1, 0x55, 0xea, 0xd7, 0x02, 0x09, 0x08, 0x97,
2431 0x5f, 0x21, 0x1e, 0x16, 0xa0, 0xd8, 0x27, 0xe4,
2432 0x5e, 0x3a, 0xa5, 0x51, 0x68, 0xe7, 0x19, 0xc1,
2433 0x7d, 0xb6, 0x9d, 0xb9, 0xc6, 0xc2, 0x1b, 0x48,
2434 0x7f,
2435 },
1709 }, 2436 },
1710 { 2437 {
1711 .name = "brainpoolP512t1", 2438 .name = "brainpoolP512t1",
@@ -1740,6 +2467,43 @@ static const struct ec_private_key {
1740 0x68, 0x0f, 0x3f, 0x34, 0xee, 0x90, 0x4e, 0xab, 2467 0x68, 0x0f, 0x3f, 0x34, 0xee, 0x90, 0x4e, 0xab,
1741 0x80, 0x7c, 0x41, 0xd7, 0x8f, 2468 0x80, 0x7c, 0x41, 0xd7, 0x8f,
1742 }, 2469 },
2470 .hex = "045B2B478361EA80"
2471 "148506E703BD2404"
2472 "475D334EDE0C9209"
2473 "5477530E333073C0"
2474 "C06AF2B5B5D4D302"
2475 "2F20E288B2074A9F"
2476 "90BFBAB53DC45B65"
2477 "76B5E5A17D633957"
2478 "AA1D1F9952435D0B"
2479 "58A6511E6F7B9E2F"
2480 "455A2D6FAA2BFCE1"
2481 "9F78117080F8FE51"
2482 "4512BF79D8AF0559"
2483 "1401819C125C8D4D"
2484 "EDC74461680F3F34"
2485 "EE904EAB807C41D7"
2486 "8F",
2487 .oct_len = 129,
2488 .oct = {
2489 0x04, 0x5b, 0x2b, 0x47, 0x83, 0x61, 0xea, 0x80,
2490 0x14, 0x85, 0x06, 0xe7, 0x03, 0xbd, 0x24, 0x04,
2491 0x47, 0x5d, 0x33, 0x4e, 0xde, 0x0c, 0x92, 0x09,
2492 0x54, 0x77, 0x53, 0x0e, 0x33, 0x30, 0x73, 0xc0,
2493 0xc0, 0x6a, 0xf2, 0xb5, 0xb5, 0xd4, 0xd3, 0x02,
2494 0x2f, 0x20, 0xe2, 0x88, 0xb2, 0x07, 0x4a, 0x9f,
2495 0x90, 0xbf, 0xba, 0xb5, 0x3d, 0xc4, 0x5b, 0x65,
2496 0x76, 0xb5, 0xe5, 0xa1, 0x7d, 0x63, 0x39, 0x57,
2497 0xaa, 0x1d, 0x1f, 0x99, 0x52, 0x43, 0x5d, 0x0b,
2498 0x58, 0xa6, 0x51, 0x1e, 0x6f, 0x7b, 0x9e, 0x2f,
2499 0x45, 0x5a, 0x2d, 0x6f, 0xaa, 0x2b, 0xfc, 0xe1,
2500 0x9f, 0x78, 0x11, 0x70, 0x80, 0xf8, 0xfe, 0x51,
2501 0x45, 0x12, 0xbf, 0x79, 0xd8, 0xaf, 0x05, 0x59,
2502 0x14, 0x01, 0x81, 0x9c, 0x12, 0x5c, 0x8d, 0x4d,
2503 0xed, 0xc7, 0x44, 0x61, 0x68, 0x0f, 0x3f, 0x34,
2504 0xee, 0x90, 0x4e, 0xab, 0x80, 0x7c, 0x41, 0xd7,
2505 0x8f,
2506 },
1743 }, 2507 },
1744 { 2508 {
1745 .name = "FRP256v1", 2509 .name = "FRP256v1",
@@ -1762,6 +2526,27 @@ static const struct ec_private_key {
1762 0xa7, 0xe0, 0x31, 0x1c, 0x4d, 0x1c, 0xa8, 0x2a, 2526 0xa7, 0xe0, 0x31, 0x1c, 0x4d, 0x1c, 0xa8, 0x2a,
1763 0x51, 0x11, 0x24, 2527 0x51, 0x11, 0x24,
1764 }, 2528 },
2529 .hex = "0417C7AE1BE4C6D6"
2530 "3ACF6B7E43299FDC"
2531 "C2A3905362426EA3"
2532 "A4CAD3F65353D4A6"
2533 "1FA8031F6DD47577"
2534 "23F792A47C5A4CC7"
2535 "C6965462949BA7E0"
2536 "311C4D1CA82A5111"
2537 "24",
2538 .oct_len = 65,
2539 .oct = {
2540 0x04, 0x17, 0xc7, 0xae, 0x1b, 0xe4, 0xc6, 0xd6,
2541 0x3a, 0xcf, 0x6b, 0x7e, 0x43, 0x29, 0x9f, 0xdc,
2542 0xc2, 0xa3, 0x90, 0x53, 0x62, 0x42, 0x6e, 0xa3,
2543 0xa4, 0xca, 0xd3, 0xf6, 0x53, 0x53, 0xd4, 0xa6,
2544 0x1f, 0xa8, 0x03, 0x1f, 0x6d, 0xd4, 0x75, 0x77,
2545 0x23, 0xf7, 0x92, 0xa4, 0x7c, 0x5a, 0x4c, 0xc7,
2546 0xc6, 0x96, 0x54, 0x62, 0x94, 0x9b, 0xa7, 0xe0,
2547 0x31, 0x1c, 0x4d, 0x1c, 0xa8, 0x2a, 0x51, 0x11,
2548 0x24,
2549 },
1765 }, 2550 },
1766}; 2551};
1767 2552
@@ -1771,10 +2556,15 @@ static int
1771ec_group_check_private_key(const struct ec_private_key *key) 2556ec_group_check_private_key(const struct ec_private_key *key)
1772{ 2557{
1773 EC_KEY *ec_key = NULL, *ec_pub_key = NULL; 2558 EC_KEY *ec_key = NULL, *ec_pub_key = NULL;
2559 const EC_GROUP *group;
2560 const EC_POINT *ec_public_point;
2561 EC_POINT *point = NULL;
2562 BIGNUM *hex_bn = NULL, *point_bn = NULL;
1774 const unsigned char *p; 2563 const unsigned char *p;
1775 unsigned int flags; 2564 unsigned int flags;
1776 unsigned char *der = NULL, *ostr = NULL; 2565 unsigned char *der = NULL, *ostr = NULL;
1777 int der_len = 0, ostr_len = 0; 2566 char *hex = NULL;
2567 int der_len = 0, hex_len = 0, ostr_len = 0;
1778 uint8_t form; 2568 uint8_t form;
1779 int rv; 2569 int rv;
1780 int failed = 1; 2570 int failed = 1;
@@ -1790,6 +2580,11 @@ ec_group_check_private_key(const struct ec_private_key *key)
1790 flags, key->name); 2580 flags, key->name);
1791 goto err; 2581 goto err;
1792 } 2582 }
2583 if ((form = EC_KEY_get_conv_form(ec_key)) != POINT_CONVERSION_UNCOMPRESSED) {
2584 fprintf(stderr, "FAIL: got conversion form %02x, want %02x\n",
2585 form, POINT_CONVERSION_UNCOMPRESSED);
2586 goto err;
2587 }
1793 2588
1794 ERR_clear_error(); 2589 ERR_clear_error();
1795 if (!EC_KEY_check_key(ec_key)) { 2590 if (!EC_KEY_check_key(ec_key)) {
@@ -1811,6 +2606,92 @@ ec_group_check_private_key(const struct ec_private_key *key)
1811 der = NULL; 2606 der = NULL;
1812 2607
1813 /* 2608 /*
2609 * Check the outputs of EC_POINT_point2hex() and i2o_ECPublicKey().
2610 */
2611
2612 if ((group = EC_KEY_get0_group(ec_key)) == NULL) {
2613 fprintf(stderr, "FAIL: EC_KEY_get0_group() for %s\n", key->name);
2614 goto err;
2615 }
2616 if ((ec_public_point = EC_KEY_get0_public_key(ec_key)) == NULL) {
2617 fprintf(stderr, "FAIL: EC_KEY_get0_public_key() for %s\n", key->name);
2618 goto err;
2619 }
2620
2621 if ((hex = EC_POINT_point2hex(group, ec_public_point,
2622 POINT_CONVERSION_UNCOMPRESSED, NULL)) == NULL) {
2623 fprintf(stderr, "FAIL: EC_POINT_point2hex() for %s\n", key->name);
2624 goto err;
2625 }
2626
2627 if ((hex_len = strlen(hex)) != 2 * key->oct_len) {
2628 fprintf(stderr, "FAIL: hex_len: %d, oct_len %d for %s\n",
2629 hex_len, key->oct_len, key->name);
2630 goto err;
2631 }
2632
2633 freezero(ostr, ostr_len);
2634 ostr = NULL;
2635 if ((ostr_len = i2o_ECPublicKey(ec_key, &ostr)) <= 0) {
2636 fprintf(stderr, "FAIL: i2o_ECPublicKey for %s\n", key->name);
2637 goto err;
2638 }
2639
2640 if (compare_data(key->name, ostr, ostr_len, key->oct, key->oct_len) == -1) {
2641 fprintf(stderr, "FAIL: i2o_ECPublicKey comparison for %s\n",
2642 key->name);
2643 goto err;
2644 }
2645
2646 /*
2647 * Now compare the octet string placed into a bignum with what we got
2648 * from point2hex (what a wonderful idea).
2649 */
2650
2651 if ((point_bn = BN_new()) == NULL)
2652 err(1, "BN_new()");
2653 if ((EC_POINT_point2bn(group, ec_public_point,
2654 POINT_CONVERSION_UNCOMPRESSED, point_bn, NULL)) == NULL) {
2655 fprintf(stderr, "FAIL: EC_POINT_point2bn() for %s\n", key->name);
2656 goto err;
2657 }
2658
2659 if ((BN_hex2bn(&hex_bn, hex)) != hex_len) {
2660 fprintf(stderr, "FAIL: BN_hex2bn() for %s\n", key->name);
2661 goto err;
2662 }
2663
2664 if (BN_cmp(hex_bn, point_bn) != 0) {
2665 fprintf(stderr, "FAIL: mismatch between "
2666 "hex point and curve point for %s\n", key->name);
2667 goto err;
2668 }
2669
2670 /*
2671 * And translate back to a point on the curve.
2672 */
2673
2674 EC_POINT_free(point);
2675 point = NULL;
2676 if ((point = EC_POINT_hex2point(group, hex, NULL, NULL)) == NULL) {
2677 fprintf(stderr, "FAIL: EC_POINT_hex2point() failed for %s\n",
2678 key->name);
2679 goto err;
2680 }
2681
2682 if ((rv = EC_POINT_cmp(group, ec_public_point, point, NULL)) != 0) {
2683 fprintf(stderr, "FAIL: EC_POINT_cmp() returned %d for %s\n",
2684 rv, key->name);
2685 goto err;
2686 }
2687
2688 free(hex);
2689 hex = NULL;
2690
2691 freezero(ostr, ostr_len);
2692 ostr = NULL;
2693
2694 /*
1814 * Round trip the public key through i2o and o2i in compressed form. 2695 * Round trip the public key through i2o and o2i in compressed form.
1815 */ 2696 */
1816 2697
@@ -1911,6 +2792,12 @@ ec_group_check_private_key(const struct ec_private_key *key)
1911 2792
1912 freezero(der, der_len); 2793 freezero(der, der_len);
1913 freezero(ostr, ostr_len); 2794 freezero(ostr, ostr_len);
2795 free(hex);
2796
2797 BN_free(hex_bn);
2798 BN_free(point_bn);
2799
2800 EC_POINT_free(point);
1914 2801
1915 return failed; 2802 return failed;
1916} 2803}