mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-22 10:55:38 +01:00
Add support for secp256k1 arithmetic
This commit is contained in:
parent
c78c8422c2
commit
f51c8fc353
@ -259,6 +259,9 @@
|
||||
#define POLARSSL_ECP_DP_SECP256R1_ENABLED
|
||||
#define POLARSSL_ECP_DP_SECP384R1_ENABLED
|
||||
#define POLARSSL_ECP_DP_SECP521R1_ENABLED
|
||||
//#define POLARSSL_ECP_DP_SECP192K1_ENABLED // Not implemented yet!
|
||||
//#define POLARSSL_ECP_DP_SECP224K1_ENABLED // Not implemented yet!
|
||||
#define POLARSSL_ECP_DP_SECP256K1_ENABLED
|
||||
#define POLARSSL_ECP_DP_BP256R1_ENABLED
|
||||
#define POLARSSL_ECP_DP_BP384R1_ENABLED
|
||||
#define POLARSSL_ECP_DP_BP512R1_ENABLED
|
||||
|
@ -68,6 +68,9 @@ typedef enum
|
||||
POLARSSL_ECP_DP_M255, /*!< Curve25519 */
|
||||
POLARSSL_ECP_DP_M383, /*!< (not implemented yet) */
|
||||
POLARSSL_ECP_DP_M511, /*!< (not implemented yet) */
|
||||
POLARSSL_ECP_DP_SECP192K1, /*!< (not implemented yet) */
|
||||
POLARSSL_ECP_DP_SECP224K1, /*!< (not implemented yet) */
|
||||
POLARSSL_ECP_DP_SECP256K1, /*!< 256-bits Koblitz curve */
|
||||
} ecp_group_id;
|
||||
|
||||
/**
|
||||
|
@ -318,6 +318,39 @@ static t_uint secp521r1_n[] = {
|
||||
};
|
||||
#endif /* POLARSSL_ECP_DP_SECP521R1_ENABLED */
|
||||
|
||||
#if defined(POLARSSL_ECP_DP_SECP256K1_ENABLED)
|
||||
static t_uint secp256k1_p[] = {
|
||||
BYTES_TO_T_UINT_8( 0x2F, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF ),
|
||||
BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ),
|
||||
BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ),
|
||||
BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ),
|
||||
};
|
||||
static t_uint secp256k1_a[] = {
|
||||
BYTES_TO_T_UINT_2( 0x00, 0x00 ),
|
||||
};
|
||||
static t_uint secp256k1_b[] = {
|
||||
BYTES_TO_T_UINT_2( 0x07, 0x00 ),
|
||||
};
|
||||
static t_uint secp256k1_gx[] = {
|
||||
BYTES_TO_T_UINT_8( 0x98, 0x17, 0xF8, 0x16, 0x5B, 0x81, 0xF2, 0x59 ),
|
||||
BYTES_TO_T_UINT_8( 0xD9, 0x28, 0xCE, 0x2D, 0xDB, 0xFC, 0x9B, 0x02 ),
|
||||
BYTES_TO_T_UINT_8( 0x07, 0x0B, 0x87, 0xCE, 0x95, 0x62, 0xA0, 0x55 ),
|
||||
BYTES_TO_T_UINT_8( 0xAC, 0xBB, 0xDC, 0xF9, 0x7E, 0x66, 0xBE, 0x79 ),
|
||||
};
|
||||
static t_uint secp256k1_gy[] = {
|
||||
BYTES_TO_T_UINT_8( 0xB8, 0xD4, 0x10, 0xFB, 0x8F, 0xD0, 0x47, 0x9C ),
|
||||
BYTES_TO_T_UINT_8( 0x19, 0x54, 0x85, 0xA6, 0x48, 0xB4, 0x17, 0xFD ),
|
||||
BYTES_TO_T_UINT_8( 0xA8, 0x08, 0x11, 0x0E, 0xFC, 0xFB, 0xA4, 0x5D ),
|
||||
BYTES_TO_T_UINT_8( 0x65, 0xC4, 0xA3, 0x26, 0x77, 0xDA, 0x3A, 0x48 ),
|
||||
};
|
||||
static t_uint secp256k1_n[] = {
|
||||
BYTES_TO_T_UINT_8( 0x41, 0x41, 0x36, 0xD0, 0x8C, 0x5E, 0xD2, 0xBF ),
|
||||
BYTES_TO_T_UINT_8( 0x3B, 0xA0, 0x48, 0xAF, 0xE6, 0xDC, 0xAE, 0xBA ),
|
||||
BYTES_TO_T_UINT_8( 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ),
|
||||
BYTES_TO_T_UINT_8( 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ),
|
||||
};
|
||||
#endif /* POLARSSL_ECP_DP_SECP256K1_ENABLED */
|
||||
|
||||
/*
|
||||
* Domain parameters for brainpoolP256r1 (RFC 5639 3.4)
|
||||
*/
|
||||
@ -648,6 +681,11 @@ int ecp_use_known_dp( ecp_group *grp, ecp_group_id id )
|
||||
return( LOAD_GROUP( secp521r1 ) );
|
||||
#endif /* POLARSSL_ECP_DP_SECP521R1_ENABLED */
|
||||
|
||||
#if defined(POLARSSL_ECP_DP_SECP256K1_ENABLED)
|
||||
case POLARSSL_ECP_DP_SECP256K1:
|
||||
return( LOAD_GROUP_A( secp256k1 ) );
|
||||
#endif /* POLARSSL_ECP_DP_SECP256K1_ENABLED */
|
||||
|
||||
#if defined(POLARSSL_ECP_DP_BP256R1_ENABLED)
|
||||
case POLARSSL_ECP_DP_BP256R1:
|
||||
return( LOAD_GROUP_A( brainpoolP256r1 ) );
|
||||
|
@ -423,5 +423,9 @@ ECP test vectors M255 aka Curve25519
|
||||
depends_on:POLARSSL_ECP_DP_M255_ENABLED
|
||||
ecp_test_vec_x:POLARSSL_ECP_DP_M255:"5AC99F33632E5A768DE7E81BF854C27C46E3FBF2ABBACD29EC4AFF517369C660":"057E23EA9F1CBE8A27168F6E696A791DE61DD3AF7ACD4EEACC6E7BA514FDA863":"47DC3D214174820E1154B49BC6CDB2ABD45EE95817055D255AA35831B70D3260":"6EB89DA91989AE37C7EAC7618D9E5C4951DBA1D73C285AE1CD26A855020EEF04":"61450CD98E36016B58776A897A9F0AEF738B99F09468B8D6B8511184D53494AB"
|
||||
|
||||
ECP test vectors secp256k1
|
||||
depends_on:POLARSSL_ECP_DP_SECP256K1_ENABLED
|
||||
ecp_test_vect:POLARSSL_ECP_DP_SECP256K1:"923C6D4756CD940CD1E13A359F6E0F0698791938E6D60246030AE4B0D8D4E9DE":"20A865B295E93C5B090F324B84D7AC7526AA1CFE86DD80E792CECCD16B657D55":"38AC87141A4854A8DFD87333E107B61692323721FE2EAD6E52206FE471A4771B":"4F5036A8ED5809AB7E70AEDA68A174ECC1F3800561B2D4FABE97C5D2A1A94D08":"029F5D2CC5A2C7E538FBA321439B4EC8DD79B7FEB9C0A8A5114EEA39856E22E8":"165171AFC3411A427F24FDDE1192A551C90983EB421BC982AB4CF4E21F18F04B":"E4B5B537D3ACEA7624F2E9C185BFFD80BC7035E515F33E0D4CFAE747FD20038E":"2BC685B7DCDBC694F5E036C4EAE9BFB489D7BF8940C4681F734B71D68501514C"
|
||||
|
||||
ECP selftest
|
||||
ecp_selftest:
|
||||
|
Loading…
Reference in New Issue
Block a user