Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
BC
public
external
mbedtls
Commits
f51c8fc3
Commit
f51c8fc3
authored
Jan 10, 2014
by
Manuel Pégourié-Gonnard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support for secp256k1 arithmetic
parent
c78c8422
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
48 additions
and
0 deletions
+48
-0
include/polarssl/config.h
include/polarssl/config.h
+3
-0
include/polarssl/ecp.h
include/polarssl/ecp.h
+3
-0
library/ecp_curves.c
library/ecp_curves.c
+38
-0
tests/suites/test_suite_ecp.data
tests/suites/test_suite_ecp.data
+4
-0
No files found.
include/polarssl/config.h
View file @
f51c8fc3
...
...
@@ -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
...
...
include/polarssl/ecp.h
View file @
f51c8fc3
...
...
@@ -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
;
/**
...
...
library/ecp_curves.c
View file @
f51c8fc3
...
...
@@ -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
)
);
...
...
tests/suites/test_suite_ecp.data
View file @
f51c8fc3
...
...
@@ -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:
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment