1 /* 2 * Copyright (c) 2024, The TrustedFirmware-M Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 9 #include "cc3xx_ec_curve_data.h" 10 11 #include "cc3xx_config.h" 12 13 #ifdef CC3XX_CONFIG_EC_CURVE_SECP_192_R1_ENABLE 14 cc3xx_ec_curve_data_t secp_192_r1 = { 15 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 16 .register_size = 24, 17 .field_modulus = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 18 0xFFFFFFFF, 0xFFFFFFFF}, 19 .modulus_size = 24, 20 21 .barrett_tag = {0x00000000, 0x00000000, 0x00000080, 0x00000000, 22 0x00000000, 0x00000000, 0x00000000, 0x00000080, 23 0x00000000, 0x00000000}, 24 .barrett_tag_size = 40, 25 26 .field_param_a = {0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 27 0xFFFFFFFF, 0xFFFFFFFF}, 28 .field_param_b = {0xC146B9B1, 0xFEB8DEEC, 0x72243049, 0x0FA7E9AB, 29 0xE59C80E7, 0x64210519}, 30 31 .generator_x = {0x82FF1012, 0xF4FF0AFD, 0x43A18800, 0x7CBF20EB, 32 0xB03090F6, 0x188DA80E}, 33 .generator_y = {0x1E794811, 0x73F977A1, 0x6B24CDD5, 0x631011ED, 34 0xFFC8DA78, 0x07192B95}, 35 36 .order = {0xB4D22831, 0x146BC9B1, 0x99DEF836, 0xFFFFFFFF, 37 0xFFFFFFFF, 0xFFFFFFFF}, 38 39 .cofactor = 1, 40 }; 41 #endif 42 43 #ifdef CC3XX_CONFIG_EC_CURVE_SECP_224_R1_ENABLE 44 cc3xx_ec_curve_data_t secp_224_r1 = { 45 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 46 .register_size = 28, 47 .field_modulus = {0x00000001, 0x00000000, 0x00000000, 0xFFFFFFFF, 48 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, 49 .modulus_size = 28, 50 51 .barrett_tag = {0x00000000, 0x00000000, 0x00000080, 0x00000000, 52 0x00000000, 0x00000000, 0x00000000, 0x00000080, 53 0x00000000, 0x00000000}, 54 .barrett_tag_size = 40, 55 56 .field_param_a = {0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 57 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, 58 .field_param_b = {0x2355FFB4, 0x270B3943, 0xD7BFD8BA, 0x5044B0B7, 59 0xF5413256, 0x0C04B3AB, 0xB4050A85}, 60 61 .generator_x = {0x115C1D21, 0x343280D6, 0x56C21122, 0x4A03C1D3, 62 0x321390B9, 0x6BB4BF7F, 0xB70E0CBD}, 63 .generator_y = {0x85007E34, 0x44D58199, 0x5A074764, 0xCD4375A0, 64 0x4C22DFE6, 0xB5F723FB, 0xBD376388}, 65 66 .order = {0x5C5C2A3D, 0x13DD2945, 0xE0B8F03E, 0xFFFF16A2, 67 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, 68 69 .cofactor = 1, 70 }; 71 #endif 72 73 #ifdef CC3XX_CONFIG_EC_CURVE_SECP_256_R1_ENABLE 74 cc3xx_ec_curve_data_t secp_256_r1 = { 75 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 76 .register_size = 32, 77 .field_modulus = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 78 0x00000000, 0x00000000, 0x00000001, 0xFFFFFFFF}, 79 .modulus_size = 32, 80 81 .barrett_tag = {0xFFFFFFFF, 0x0000007F, 0x00000080, 0x00000000, 82 0x00000000, 0xFFFFFFFF, 0x0000007F, 0x00000080, 83 0x00000000, 0x00000000}, 84 .barrett_tag_size = 40, 85 86 .field_param_a = {0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 87 0x00000000, 0x00000000, 0x00000001, 0xFFFFFFFF}, 88 .field_param_b = {0x27D2604B, 0x3BCE3C3E, 0xCC53B0F6, 0x651D06B0, 89 0x769886BC, 0xB3EBBD55, 0xAA3A93E7, 0x5AC635D8}, 90 91 .generator_x = {0xD898C296, 0xF4A13945, 0x2DEB33A0, 0x77037D81, 92 0x63A440F2, 0xF8BCE6E5, 0xE12C4247, 0x6B17D1F2}, 93 .generator_y = {0x37BF51F5, 0xCBB64068, 0x6B315ECE, 0x2BCE3357, 94 0x7C0F9E16, 0x8EE7EB4A, 0xFE1A7F9B, 0x4FE342E2}, 95 96 .order = {0xFC632551, 0xF3B9CAC2, 0xA7179E84, 0xBCE6FAAD, 97 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF}, 98 99 .cofactor = 1, 100 }; 101 #endif 102 103 #ifdef CC3XX_CONFIG_EC_CURVE_SECP_384_R1_ENABLE 104 cc3xx_ec_curve_data_t secp_384_r1 = { 105 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 106 .register_size = 48, 107 .field_modulus = {0xFFFFFFFF, 0x00000000, 0x00000000, 0xFFFFFFFF, 108 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 109 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, 110 .modulus_size = 48, 111 112 .barrett_tag = {0x00000000, 0x00000000, 0x00000080, 0x00000000, 113 0x00000000, 0x00000000, 0x00000000, 0x00000080, 114 0x00000000, 0x00000000}, 115 .barrett_tag_size = 40, 116 117 .field_param_a = {0xFFFFFFFC, 0x00000000, 0x00000000, 0xFFFFFFFF, 118 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 119 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, 120 .field_param_b = {0xD3EC2AEF, 0x2A85C8ED, 0x8A2ED19D, 0xC656398D, 121 0x5013875A, 0x0314088F, 0xFE814112, 0x181D9C6E, 122 0xE3F82D19, 0x988E056B, 0xE23EE7E4, 0xB3312FA7}, 123 124 .generator_x = {0x72760AB7, 0x3A545E38, 0xBF55296C, 0x5502F25D, 125 0x82542A38, 0x59F741E0, 0x8BA79B98, 0x6E1D3B62, 126 0xF320AD74, 0x8EB1C71E, 0xBE8B0537, 0xAA87CA22}, 127 .generator_y = {0x90EA0E5F, 0x7A431D7C, 0x1D7E819D, 0x0A60B1CE, 128 0xB5F0B8C0, 0xE9DA3113, 0x289A147C, 0xF8F41DBD, 129 0x9292DC29, 0x5D9E98BF, 0x96262C6F, 0x3617DE4A}, 130 131 .order = {0xCCC52973, 0xECEC196A, 0x48B0A77A, 0x581A0DB2, 132 0xF4372DDF, 0xC7634D81, 0xFFFFFFFF, 0xFFFFFFFF, 133 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, 134 135 .cofactor = 1, 136 }; 137 #endif 138 139 #ifdef CC3XX_CONFIG_EC_CURVE_SECP_521_R1_ENABLE 140 cc3xx_ec_curve_data_t secp_521_r1 = { 141 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 142 .register_size = 68, 143 .field_modulus = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 144 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 145 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 146 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 147 0x000001FF}, 148 .modulus_size = 68, 149 150 .barrett_tag = {0x00000000, 0x00000000, 0x00000080, 0x00000000, 151 0x00000000, 0x00000000, 0x00000000, 0x00000080, 152 0x00000000, 0x00000000}, 153 .barrett_tag_size = 40, 154 155 .field_param_a = {0xFFFFFFFC, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 156 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 157 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 158 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 159 0x000001FF}, 160 .field_param_b = {0x6B503F00, 0xEF451FD4, 0x3D2C34F1, 0x3573DF88, 161 0x3BB1BF07, 0x1652C0BD, 0xEC7E937B, 0x56193951, 162 0x8EF109E1, 0xB8B48991, 0x99B315F3, 0xA2DA725B, 163 0xB68540EE, 0x929A21A0, 0x8E1C9A1F, 0x953EB961, 164 0x00000051}, 165 166 .generator_x = {0xC2E5BD66, 0xF97E7E31, 0x856A429B, 0x3348B3C1, 167 0xA2FFA8DE, 0xFE1DC127, 0xEFE75928, 0xA14B5E77, 168 0x6B4D3DBA, 0xF828AF60, 0x053FB521, 0x9C648139, 169 0x2395B442, 0x9E3ECB66, 0x0404E9CD, 0x858E06B7, 170 0x000000C6}, 171 .generator_y = {0x9FD16650, 0x88BE9476, 0xA272C240, 0x353C7086, 172 0x3FAD0761, 0xC550B901, 0x5EF42640, 0x97EE7299, 173 0x273E662C, 0x17AFBD17, 0x579B4468, 0x98F54449, 174 0x2C7D1BD9, 0x5C8A5FB4, 0x9A3BC004, 0x39296A78, 175 0x00000118}, 176 177 .order = {0x91386409, 0xBB6FB71E, 0x899C47AE, 0x3BB5C9B8, 178 0xF709A5D0, 0x7FCC0148, 0xBF2F966B, 0x51868783, 179 0xFFFFFFFA, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 180 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 181 0x000001FF}, 182 183 .cofactor = 1, 184 }; 185 #endif 186 187 #ifdef CC3XX_CONFIG_EC_CURVE_SECP_192_K1_ENABLE 188 cc3xx_ec_curve_data_t secp_192_k1 = { 189 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 190 .register_size = 24, 191 .field_modulus = {0xFFFFEE37, 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 192 0xFFFFFFFF, 0xFFFFFFFF}, 193 .modulus_size = 24, 194 195 .barrett_tag = {0x00000000, 0x00000000, 0x00000080, 0x00000000, 196 0x00000000, 0x00000000, 0x00000000, 0x00000080, 197 0x00000000, 0x00000000}, 198 .barrett_tag_size = 40, 199 200 .field_param_a = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 201 0x00000000, 0x00000000}, 202 .field_param_b = {0x00000003, 0x00000000, 0x00000000, 0x00000000, 203 0x00000000, 0x00000000}, 204 205 .generator_x = {0xEAE06C7D, 0x1DA5D1B1, 0x80B7F434, 0x26B07D02, 206 0xC057E9AE, 0xDB4FF10E}, 207 .generator_y = {0xD95E2F9D, 0x4082AA88, 0x15BE8634, 0x844163D0, 208 0x9C5628A7, 0x9B2F2F6D}, 209 210 .order = {0x74DEFD8D, 0x0F69466A, 0x26F2FC17, 0xFFFFFFFE, 211 0xFFFFFFFF, 0xFFFFFFFF}, 212 213 .cofactor = 1, 214 }; 215 #endif 216 217 #ifdef CC3XX_CONFIG_EC_CURVE_SECP_224_K1_ENABLE 218 cc3xx_ec_curve_data_t secp_224_k1 = { 219 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 220 .register_size = 32, 221 .field_modulus = {0xFFFFE56D, 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 222 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, 223 .modulus_size = 28, 224 225 .barrett_tag = {0x00000000, 0x00000000, 0x00000080, 0x00000000, 226 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x000000FF, 227 0x00000000, 0x00000000}, 228 .barrett_tag_size = 40, 229 230 .field_param_a = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 231 0x00000000, 0x00000000}, 232 .field_param_b = {0x00000005, 0x00000000, 0x00000000, 0x00000000, 233 0x00000000, 0x00000000}, 234 235 .generator_x = {0xB6B7A45C, 0x0F7E650E, 0xE47075A9, 0x69A467E9, 236 0x30FC28A1, 0x4DF099DF, 0xA1455B33}, 237 .generator_y = {0x556D61A5, 0xE2CA4BDB, 0xC0B0BD59, 0xF7E319F7, 238 0x82CAFBD6, 0x7FBA3442, 0x7E089FED}, 239 240 .order = {0x769FB1F7, 0xCAF0A971, 0xD2EC6184, 0x0001DCE8, 241 0x00000000, 0x00000000, 0x00000000, 0x00000001}, 242 243 .cofactor = 1, 244 }; 245 #endif 246 247 #ifdef CC3XX_CONFIG_EC_CURVE_SECP_256_K1_ENABLE 248 cc3xx_ec_curve_data_t secp_256_k1 = { 249 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 250 .register_size = 32, 251 .field_modulus = {0xFFFFFC2F, 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 252 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, 253 .modulus_size = 32, 254 255 .barrett_tag = {0x00000000, 0x00000000, 0x00000080, 0x00000000, 256 0x00000000, 0x00000000, 0x00000000, 0x00000080, 257 0x00000000, 0x00000000}, 258 .barrett_tag_size = 40, 259 260 .field_param_a = {0x00000000, 0x00000000, 0x00000000, 0x00000000, 261 0x00000000, 0x00000000}, 262 .field_param_b = {0x00000007, 0x00000000, 0x00000000, 0x00000000, 263 0x00000000, 0x00000000}, 264 265 .generator_x = {0x16F81798, 0x59F2815B, 0x2DCE28D9, 0x029BFCDB, 266 0xCE870B07, 0x55A06295, 0xF9DCBBAC, 0x79BE667E}, 267 .generator_y = {0xFB10D4B8, 0x9C47D08F, 0xA6855419, 0xFD17B448, 268 0x0E1108A8, 0x5DA4FBFC, 0x26A3C465, 0x483ADA77}, 269 270 .order = {0xD0364141, 0xBFD25E8C, 0xAF48A03B, 0xBAAEDCE6, 271 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, 272 273 .cofactor = 1, 274 }; 275 #endif 276 277 #ifdef CC3XX_CONFIG_EC_CURVE_BRAINPOOLP_192_R1_ENABLE 278 cc3xx_ec_curve_data_t brainpoolp_192_r1 = { 279 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 280 .register_size = 24, 281 .field_modulus = {0xe1a86297, 0x8fce476d, 0x93d18db7, 0xa7a34630, 282 0x932a36cd, 0xc302f41d, }, 283 .modulus_size = 24, 284 285 .barrett_tag = {0x8b946433, 0x07f51cff, 0x000000a8, }, 286 .barrett_tag_size = 12, 287 288 .field_param_a = {0xc69a28ef, 0xcae040e5, 0xfe8685c1, 0x9c39c031, 289 0x76b1e0e1, 0x6a911740, }, 290 .field_param_b = {0x6fbf25c9, 0xca7ef414, 0x4f4496bc, 0xdc721d04, 291 0x7c28cca3, 0x469a28ef, }, 292 293 .generator_x = {0x53375fd6, 0x0a2f5c48, 0x6cb0f090, 0x53b033c5, 294 0xaab6a487, 0xc0a0647e, }, 295 .generator_y = {0xfa299b8f, 0xe6773fa2, 0xc1490002, 0x8b5f4828, 296 0x6abd5bb8, 0x14b69086, }, 297 298 .order = {0x9ac4acc1, 0x5be8f102, 0x9e9e916b, 0xa7a3462f, 299 0x932a36cd, 0xc302f41d, }, 300 301 .cofactor = 1, 302 }; 303 #endif 304 305 #ifdef CC3XX_CONFIG_EC_CURVE_BRAINPOOLP_224_R1_ENABLE 306 cc3xx_ec_curve_data_t brainpoolp_224_r1 = { 307 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 308 .register_size = 28, 309 .field_modulus = {0x7ec8c0ff, 0x97da89f5, 0xb09f0757, 0x75d1d787, 310 0x2a183025, 0x26436686, 0xd7c134aa, }, 311 .modulus_size = 28, 312 313 .barrett_tag = {0xe9114ca7, 0xe04cfbc7, 0x00000097, }, 314 .barrett_tag_size = 12, 315 316 .field_param_a = {0xcad29f43, 0xb0042a59, 0x4e182ad8, 0xc1530b51, 317 0x299803a6, 0xa9ce6c1c, 0x68a5e62c, }, 318 .field_param_b = {0x386c400b, 0x66dbb372, 0x3e2135d2, 0xa92369e3, 319 0x870713b1, 0xcfe44138, 0x2580f63c, }, 320 321 .generator_x = {0xee12c07d, 0x4c1e6efd, 0x9e4ce317, 0xa87dc68c, 322 0x340823b2, 0x2c7e5cf4, 0x0d9029ad, }, 323 .generator_y = {0x761402cd, 0xcaa3f6d3, 0x354b9e99, 0x4ecdac24, 324 0x24c6b89e, 0x72c0726f, 0x58aa56f7, }, 325 326 .order = {0xa5a7939f, 0x6ddebca3, 0xd116bc4b, 0x75d0fb98, 327 0x2a183025, 0x26436686, 0xd7c134aa, }, 328 329 .cofactor = 1, 330 }; 331 #endif 332 333 #ifdef CC3XX_CONFIG_EC_CURVE_BRAINPOOLP_256_R1_ENABLE 334 cc3xx_ec_curve_data_t brainpoolp_256_r1 = { 335 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 336 .register_size = 32, 337 .field_modulus = {0x1f6e5377, 0x2013481d, 0xd5262028, 0x6e3bf623, 338 0x9d838d72, 0x3e660a90, 0xa1eea9bc, 0xa9fb57db, }, 339 .modulus_size = 32, 340 341 .barrett_tag = {0xe2adbf5d, 0xc60898d0, 0x000000c0, }, 342 .barrett_tag_size = 12, 343 344 .field_param_a = {0xf330b5d9, 0xe94a4b44, 0x26dc5c6c, 0xfb8055c1, 345 0x417affe7, 0xeef67530, 0xfc2c3057, 0x7d5a0975, }, 346 .field_param_b = {0xff8c07b6, 0x6bccdc18, 0x5cf7e1ce, 0x95841629, 347 0xbbd77cbf, 0xf330b5d9, 0xe94a4b44, 0x26dc5c6c, }, 348 349 .generator_x = {0x9ace3262, 0x3a4453bd, 0xe3bd23c2, 0xb9de27e1, 350 0xfc81b7af, 0x2c4b482f, 0xcb7e57cb, 0x8bd2aeb9, }, 351 .generator_y = {0x2f046997, 0x5c1d54c7, 0x2ded8e54, 0xc2774513, 352 0x14611dc9, 0x97f8461a, 0xc3dac4fd, 0x547ef835, }, 353 354 .order = {0x974856a7, 0x901e0e82, 0xb561a6f7, 0x8c397aa3, 355 0x9d838d71, 0x3e660a90, 0xa1eea9bc, 0xa9fb57db, }, 356 357 .cofactor = 1, 358 }; 359 #endif 360 361 #ifdef CC3XX_CONFIG_EC_CURVE_BRAINPOOLP_320_R1_ENABLE 362 cc3xx_ec_curve_data_t brainpoolp_320_r1 = { 363 .register_size = 40, 364 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 365 .field_modulus = {0xf1b32e27, 0xfcd412b1, 0x7893ec28, 0x4f92b9ec, 366 0xf6f40def, 0xf98fcfa6, 0xd201e065, 0xe13c785e, 367 0x36bc4fb7, 0xd35e4720, }, 368 .modulus_size = 40, 369 370 .barrett_tag = {0x8d509020, 0x072ad2d7, 0x0000009b, }, 371 .barrett_tag_size = 12, 372 373 .field_param_a = {0x7d860eb4, 0x92f375a9, 0x85ffa9f4, 0x66190eb0, 374 0xf5eb79da, 0xa2a73513, 0x6d3f3bb8, 0x83ccebd4, 375 0x8fbab0f8, 0x3ee30b56, }, 376 .field_param_b = {0x8fb1f1a6, 0x6f5eb4ac, 0x88453981, 0xcc31dccd, 377 0x9554b49a, 0xe13f4134, 0x40688a6f, 0xd3ad1986, 378 0x9dfdbc42, 0x52088394, }, 379 380 .generator_x = {0x39e20611, 0x10af8d0d, 0x10a599c7, 0xe7871e2a, 381 0x0a087eb6, 0xf20137d1, 0x8ee5bfe6, 0x5289bcc4, 382 0xfb53d8b8, 0x43bd7e9a, }, 383 .generator_y = {0x692e8ee1, 0xd35245d1, 0xaaac6ac7, 0xa9c77877, 384 0x117182ea, 0x0743ffed, 0x7f77275e, 0xab409324, 385 0x45ec1cc8, 0x14fdd055, }, 386 387 .order = {0x44c59311, 0x8691555b, 0xee8658e9, 0x2d482ec7, 388 0xb68f12a3, 0xf98fcfa5, 0xd201e065, 0xe13c785e, 389 0x36bc4fb7, 0xd35e4720, }, 390 391 .cofactor = 1, 392 }; 393 #endif 394 395 #ifdef CC3XX_CONFIG_EC_CURVE_BRAINPOOLP_384_R1_ENABLE 396 cc3xx_ec_curve_data_t brainpoolp_384_r1 = { 397 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 398 .register_size = 48, 399 .field_modulus = {0x3107ec53, 0x87470013, 0x901d1a71, 0xacd3a729, 400 0x7fb71123, 0x12b1da19, 0xed5456b4, 0x152f7109, 401 0x50e641df, 0x0f5d6f7e, 0xa3386d28, 0x8cb91e82, }, 402 .modulus_size = 48, 403 404 .barrett_tag = {0xc7635c7f, 0xdabad8b6, 0x000000e8, }, 405 .barrett_tag_size = 12, 406 407 .field_param_a = {0x22ce2826, 0x04a8c7dd, 0x503ad4eb, 0x8aa5814a, 408 0xba91f90f, 0x139165ef, 0x4fb22787, 0xc2bea28e, 409 0xce05afa0, 0x3c72080a, 0x3d8c150c, 0x7bc382c6, }, 410 .field_param_b = {0xfa504c11, 0x3ab78696, 0x95dbc994, 0x7cb43902, 411 0x3eeb62d5, 0x2e880ea5, 0x07dcd2a6, 0x2fb77de1, 412 0x16f0447c, 0x8b39b554, 0x22ce2826, 0x04a8c7dd, }, 413 414 .generator_x = {0x47d4af1e, 0xef87b2e2, 0x36d646aa, 0xe826e034, 415 0x0cbd10e8, 0xdb7fcafe, 0x7ef14fe3, 0x8847a3e7, 416 0xb7c13f6b, 0xa2a63a81, 0x68cf45ff, 0x1d1c64f0, }, 417 .generator_y = {0x263c5315, 0x42820341, 0x77918111, 0x0e464621, 418 0xf9912928, 0xe19c054f, 0xfeec5864, 0x62b70b29, 419 0x95cfd552, 0x5cb1eb8e, 0x20f9c2a4, 0x8abe1d75, }, 420 421 .order = {0xe9046565, 0x3b883202, 0x6b7fc310, 0xcf3ab6af, 422 0xac0425a7, 0x1f166e6c, 0xed5456b3, 0x152f7109, 423 0x50e641df, 0x0f5d6f7e, 0xa3386d28, 0x8cb91e82, }, 424 425 .cofactor = 1, 426 }; 427 #endif 428 429 #ifdef CC3XX_CONFIG_EC_CURVE_BRAINPOOLP_512_R1_ENABLE 430 cc3xx_ec_curve_data_t brainpoolp_512_r1 = { 431 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 432 .register_size = 64, 433 .field_modulus = {0x583a48f3, 0x28aa6056, 0x2d82c685, 0x2881ff2f, 434 0xe6a380e6, 0xaecda12a, 0x9bc66842, 0x7d4d9b00, 435 0x70330871, 0xd6639cca, 0xb3c9d20e, 0xcb308db3, 436 0x33c9fc07, 0x3fd4e6ae, 0xdbe9c48b, 0xaadd9db8, }, 437 .modulus_size = 64, 438 439 .barrett_tag = {0x6d75c50a, 0xc6bfa76b, 0x000000bf, }, 440 .barrett_tag_size = 12, 441 442 .field_param_a = {0x77fc94ca, 0xe7c1ac4d, 0x2bf2c7b9, 0x7f1117a7, 443 0x8b9ac8b5, 0x0a2ef1c9, 0xa8253aa1, 0x2ded5d5a, 444 0xea9863bc, 0xa83441ca, 0x3df91610, 0x94cbdd8d, 445 0xac234cc5, 0xe2327145, 0x8b603b89, 0x7830a331, }, 446 .field_param_b = {0x8016f723, 0x2809bd63, 0x5ebae5dd, 0x984050b7, 447 0xdc083e67, 0x77fc94ca, 0xe7c1ac4d, 0x2bf2c7b9, 448 0x7f1117a7, 0x8b9ac8b5, 0x0a2ef1c9, 0xa8253aa1, 449 0x2ded5d5a, 0xea9863bc, 0xa83441ca, 0x3df91610, }, 450 451 .generator_x = {0xbcb9f822, 0x8b352209, 0x406a5e68, 0x7c6d5047, 452 0x93b97d5f, 0x50d1687b, 0xe2d0d48d, 0xff3b1f78, 453 0xf4d0098e, 0xb43b62ee, 0xb5d916c1, 0x85ed9f70, 454 0x9c4c6a93, 0x5a21322e, 0xd82ed964, 0x81aee4bd, }, 455 .generator_y = {0x3ad80892, 0x78cd1e0f, 0xa8f05406, 0xd1ca2b2f, 456 0x8a2763ae, 0x5bca4bd8, 0x4a5f485e, 0xb2dcde49, 457 0x881f8111, 0xa000c55b, 0x24a57b1a, 0xf209f700, 458 0xcf7822fd, 0xc0eabfa9, 0x566332ec, 0x7dde385d, }, 459 460 .order = {0x9ca90069, 0xb5879682, 0x085ddadd, 0x1db1d381, 461 0x7fac1047, 0x41866119, 0x4ca92619, 0x553e5c41, 462 0x70330870, 0xd6639cca, 0xb3c9d20e, 0xcb308db3, 463 0x33c9fc07, 0x3fd4e6ae, 0xdbe9c48b, 0xaadd9db8, }, 464 465 .cofactor = 1, 466 }; 467 #endif 468 469 #ifdef CC3XX_CONFIG_EC_CURVE_FRP_256_V1_ENABLE 470 cc3xx_ec_curve_data_t frp_256_v1 = { 471 .type = CC3XX_EC_CURVE_TYPE_WEIERSTRASS, 472 .register_size = 32, 473 .field_modulus = {0xd86e9c03, 0xe8fcf353, 0xabc8ca6d, 0x3961adbc, 474 0xce42435b, 0x10126de8, 0x0b3ad58f, 0xf1fd178c, }, 475 .modulus_size = 32, 476 477 .barrett_tag = {0xe9582079, 0x694bee63, 0x00000087, }, 478 .barrett_tag_size = 12, 479 480 .field_param_a = {0xd86e9c00, 0xe8fcf353, 0xabc8ca6d, 0x3961adbc, 481 0xce42435b, 0x10126de8, 0x0b3ad58f, 0xf1fd178c, }, 482 .field_param_b = {0x7b7bb73f, 0x3075ed96, 0xe4b1a180, 0xdfec0c9a, 483 0x4a44c00f, 0x0d4aba75, 0x5428a930, 0xee353fca, }, 484 485 .generator_x = {0xd98f5cff, 0x64c97a2d, 0xaf98b701, 0x8c27d2dc, 486 0x49d42395, 0x31183d47, 0x56c139eb, 0xb6b3d4c3, }, 487 .generator_y = {0x54062cfb, 0x83115a15, 0xe8e4c9e1, 0x2701c307, 488 0xf3ecef8c, 0x1f9271f0, 0xc8b20491, 0x6142e0f7, }, 489 490 .order = {0xc6d655e1, 0x1ffdd459, 0x40d2bf94, 0x53dc67e1, 491 0xce42435b, 0x10126de8, 0x0b3ad58f, 0xf1fd178c, }, 492 493 .cofactor = 1, 494 }; 495 #endif 496 497 #ifdef CC3XX_CONFIG_EC_CURVE_25519_ENABLE 498 cc3xx_ec_curve_data_t curve_25519 = { 499 .type = CC3XX_EC_CURVE_TYPE_MONTGOMERY, 500 }; 501 #endif 502 503 #ifdef CC3XX_CONFIG_EC_CURVE_448_ENABLE 504 cc3xx_ec_curve_data_t curve_448 = { 505 .type = CC3XX_EC_CURVE_TYPE_MONTGOMERY, 506 }; 507 #endif 508 509 #ifdef CC3XX_CONFIG_EC_CURVE_ED25519_ENABLE 510 cc3xx_ec_curve_data_t ed25519 = { 511 .type = CC3XX_EC_CURVE_TYPE_TWISTED_EDWARDS, 512 }; 513 #endif 514 515 #ifdef CC3XX_CONFIG_EC_CURVE_ED448_ENABLE 516 cc3xx_ec_curve_data_t ed448 = { 517 .type = CC3XX_EC_CURVE_TYPE_TWISTED_EDWARDS, 518 }; 519 #endif 520