Read and write X25519 and X448 private keys
Signed-off-by: Jethro Beekman <jethro@fortanix.com> Co-authored-by: Gijs Kwakkel <gijs.kwakkel@fortanix.com> Signed-off-by: Gijs Kwakkel <gijs.kwakkel@fortanix.com>
This commit is contained in:
parent
e4072c00c8
commit
0167244be4
19 changed files with 515 additions and 94 deletions
|
@ -1003,6 +1003,38 @@ ec_bp512_pub.comp.pem: ec_bp512_pub.pem
|
|||
$(OPENSSL) ec -pubin -in $< -out $@ -conv_form compressed
|
||||
all_final += ec_bp512_pub.comp.pem
|
||||
|
||||
ec_x25519_prv.der:
|
||||
$(OPENSSL) genpkey -algorithm X25519 -out $@ -outform DER
|
||||
all_final += ec_x25519_prv.der
|
||||
|
||||
ec_x25519_pub.der: ec_x25519_pub.der
|
||||
$(OPENSSL) pkey -in $< -inform DER -out $@ -outform DER
|
||||
all_final += ec_x25519_pub.der
|
||||
|
||||
ec_x25519_prv.pem: ec_x25519_prv.pem
|
||||
$(OPENSSL) pkey -in $< -inform DER -out $@
|
||||
all_final += ec_x25519_prv.pem
|
||||
|
||||
ec_x25519_pub.pem: ec_x25519_pub.pem
|
||||
$(OPENSSL) pkey -in $< -inform DER -out $@
|
||||
all_final += ec_x25519_pub.pem
|
||||
|
||||
ec_x448_prv.der:
|
||||
$(OPENSSL) genpkey -algorithm X448 -out $@ -outform DER
|
||||
all_final += ec_x448_prv.der
|
||||
|
||||
ec_x448_pub.der: ec_x448_pub.der
|
||||
$(OPENSSL) pkey -in $< -inform DER -out $@ -outform DER
|
||||
all_final += ec_x448_pub.der
|
||||
|
||||
ec_x448_prv.pem: ec_x448_prv.pem
|
||||
$(OPENSSL) pkey -in $< -inform DER -out $@
|
||||
all_final += ec_x448_prv.pem
|
||||
|
||||
ec_x448_pub.pem: ec_x448_pub.pem
|
||||
$(OPENSSL) pkey -in $< -inform DER -out $@
|
||||
all_final += ec_x448_pub.pem
|
||||
|
||||
################################################################
|
||||
#### Convert PEM keys to DER format
|
||||
################################################################
|
||||
|
|
BIN
tests/data_files/ec_x25519_prv.der
Normal file
BIN
tests/data_files/ec_x25519_prv.der
Normal file
Binary file not shown.
3
tests/data_files/ec_x25519_prv.pem
Normal file
3
tests/data_files/ec_x25519_prv.pem
Normal file
|
@ -0,0 +1,3 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MC4CAQAwBQYDK2VuBCIEILBtgpZVVDpRy6NuU1IrwKz9YK9ZRmVV+z4eeWhyqxpZ
|
||||
-----END PRIVATE KEY-----
|
BIN
tests/data_files/ec_x25519_pub.der
Normal file
BIN
tests/data_files/ec_x25519_pub.der
Normal file
Binary file not shown.
3
tests/data_files/ec_x25519_pub.pem
Normal file
3
tests/data_files/ec_x25519_pub.pem
Normal file
|
@ -0,0 +1,3 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MCowBQYDK2VuAyEAm8Ow6T2CM/5qi6YTiUjMEqkTYtXC7YFYTbBatUGcnRE=
|
||||
-----END PUBLIC KEY-----
|
BIN
tests/data_files/ec_x448_prv.der
Normal file
BIN
tests/data_files/ec_x448_prv.der
Normal file
Binary file not shown.
4
tests/data_files/ec_x448_prv.pem
Normal file
4
tests/data_files/ec_x448_prv.pem
Normal file
|
@ -0,0 +1,4 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MEYCAQAwBQYDK2VvBDoEOGTpCDYD9atLDMYwDnjdwUTkjO4ZMB/uacXKw+4iUiED
|
||||
oe50tXsIxi5REqWe2YOoL7eD7npOGRPt
|
||||
-----END PRIVATE KEY-----
|
BIN
tests/data_files/ec_x448_pub.der
Normal file
BIN
tests/data_files/ec_x448_pub.der
Normal file
Binary file not shown.
4
tests/data_files/ec_x448_pub.pem
Normal file
4
tests/data_files/ec_x448_pub.pem
Normal file
|
@ -0,0 +1,4 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MEIwBQYDK2VvAzkAlrVhn5KDNBt3nL38B9mqGKqrPwnah3ynJgaWQ5IcLzv6zZT+
|
||||
TIjhGQ1NFGWwgtOV8UqU2tO4pYQ=
|
||||
-----END PUBLIC KEY-----
|
|
@ -974,6 +974,22 @@ Parse Public EC Key #9a (RFC 5480, brainpoolP512r1, compressed)
|
|||
depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_BP512R1_ENABLED
|
||||
pk_parse_public_keyfile_ec:"data_files/ec_bp512_pub.comp.pem":0
|
||||
|
||||
Parse Public EC Key #10 (RFC 8410, DER, X25519)
|
||||
depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_CURVE25519_ENABLED
|
||||
pk_parse_public_keyfile_ec:"data_files/ec_x25519_pub.der":0
|
||||
|
||||
Parse Public EC Key #11 (RFC 8410, DER, X448)
|
||||
depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_CURVE448_ENABLED
|
||||
pk_parse_public_keyfile_ec:"data_files/ec_x448_pub.der":0
|
||||
|
||||
Parse Public EC Key #12 (RFC 8410, PEM, X25519)
|
||||
depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_CURVE25519_ENABLED
|
||||
pk_parse_public_keyfile_ec:"data_files/ec_x25519_pub.pem":0
|
||||
|
||||
Parse Public EC Key #13 (RFC 8410, PEM, X448)
|
||||
depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_CURVE448_ENABLED
|
||||
pk_parse_public_keyfile_ec:"data_files/ec_x448_pub.pem":0
|
||||
|
||||
Parse EC Key #1 (SEC1 DER)
|
||||
depends_on:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_SECP192R1_ENABLED
|
||||
pk_parse_keyfile_ec:"data_files/ec_prv.sec1.der":"NULL":0
|
||||
|
@ -1082,6 +1098,22 @@ Parse EC Key #15 (SEC1 DER, secp256k1, SpecifiedECDomain)
|
|||
depends_on:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_SECP256K1_ENABLED:MBEDTLS_PK_PARSE_EC_EXTENDED
|
||||
pk_parse_keyfile_ec:"data_files/ec_prv.specdom.der":"NULL":0
|
||||
|
||||
Parse EC Key #16 (RFC 8410, DER, X25519)
|
||||
depends_on:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_CURVE25519_ENABLED
|
||||
pk_parse_keyfile_ec:"data_files/ec_x25519_prv.der":"NULL":0
|
||||
|
||||
Parse EC Key #17 (RFC 8410, DER, X448)
|
||||
depends_on:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_CURVE448_ENABLED
|
||||
pk_parse_keyfile_ec:"data_files/ec_x448_prv.der":"NULL":0
|
||||
|
||||
Parse EC Key #18 (RFC 8410, PEM, X25519)
|
||||
depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_CURVE25519_ENABLED
|
||||
pk_parse_keyfile_ec:"data_files/ec_x25519_prv.pem":"NULL":0
|
||||
|
||||
Parse EC Key #19 (RFC 8410, PEM, X448)
|
||||
depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_CURVE448_ENABLED
|
||||
pk_parse_keyfile_ec:"data_files/ec_x448_prv.pem":"NULL":0
|
||||
|
||||
Key ASN1 (No data)
|
||||
pk_parse_key:"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
|
||||
|
@ -1163,3 +1195,30 @@ pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c857102030100010211009a
|
|||
Key ASN1 (ECPrivateKey, empty parameters)
|
||||
depends_on:MBEDTLS_ECP_LIGHT
|
||||
pk_parse_key:"30070201010400a000":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
|
||||
Key ASN1 (OneAsymmetricKey X25519, doesn't match masking requirements, from RFC8410 Appendix A but made into version 0)
|
||||
depends_on:MBEDTLS_ECP_LIGHT
|
||||
pk_parse_key:"302e020100300506032b656e04220420f8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
|
||||
Key ASN1 (OneAsymmetricKey X25519, with invalid optional AlgorithIdentifier parameters)
|
||||
depends_on:MBEDTLS_ECP_LIGHT
|
||||
pk_parse_key:"3030020100300706032b656e050004220420b06d829655543a51cba36e53522bc0acfd60af59466555fb3e1e796872ab1a59":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
|
||||
Key ASN1 (OneAsymmetricKey X25519, with NULL private key)
|
||||
depends_on:MBEDTLS_ECP_LIGHT
|
||||
pk_parse_key:"300e020100300506032b656e04020500":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
|
||||
Key ASN1 (OneAsymmetricKey with invalid AlgorithIdentifier)
|
||||
pk_parse_key:"3013020100300a06082b0601040181fd5904020500":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
|
||||
Key ASN1 (OneAsymmetricKey X25519, with unsupported attributes)
|
||||
depends_on:MBEDTLS_ECP_LIGHT
|
||||
pk_parse_key:"304f020100300506032b656e04220420b06d829655543a51cba36e53522bc0acfd60af59466555fb3e1e796872ab1a59a01f301d060a2a864886f70d01090914310f0c0d437572646c6520436861697273":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
|
||||
Key ASN1 (OneAsymmetricKey X25519, unsupported version 2 with public key)
|
||||
depends_on:MBEDTLS_ECP_LIGHT
|
||||
pk_parse_key:"3051020101300506032b656e04220420b06d829655543a51cba36e53522bc0acfd60af59466555fb3e1e796872ab1a598121009bc3b0e93d8233fe6a8ba6138948cc12a91362d5c2ed81584db05ab5419c9d11":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
|
||||
Key ASN1 (OneAsymmetricKey X25519, unsupported version 2 with public key and unsupported attributes)
|
||||
depends_on:MBEDTLS_ECP_LIGHT
|
||||
pk_parse_key:"3072020101300506032b656e04220420b06d829655543a51cba36e53522bc0acfd60af59466555fb3e1e796872ab1a59a01f301d060a2a864886f70d01090914310f0c0d437572646c65204368616972738121009bc3b0e93d8233fe6a8ba6138948cc12a91362d5c2ed81584db05ab5419c9d11":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
|
|
|
@ -38,6 +38,14 @@ Public key write check EC Brainpool 512 bits (DER)
|
|||
depends_on:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_BP512R1_ENABLED
|
||||
pk_write_pubkey_check:"data_files/ec_bp512_pub.der":TEST_DER
|
||||
|
||||
Public key write check EC X25519
|
||||
depends_on:MBEDTLS_ECP_LIGHT:MBEDTLS_BASE64_C:MBEDTLS_ECP_DP_CURVE25519_ENABLED
|
||||
pk_write_pubkey_check:"data_files/ec_x25519_pub.pem":TEST_PEM
|
||||
|
||||
Public key write check EC X448
|
||||
depends_on:MBEDTLS_ECP_LIGHT:MBEDTLS_BASE64_C:MBEDTLS_ECP_DP_CURVE448_ENABLED
|
||||
pk_write_pubkey_check:"data_files/ec_x448_pub.pem":TEST_PEM
|
||||
|
||||
Private key write check RSA
|
||||
depends_on:MBEDTLS_RSA_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PEM_WRITE_C
|
||||
pk_write_key_check:"data_files/server1.key":TEST_PEM
|
||||
|
@ -113,3 +121,11 @@ pk_write_public_from_private:"data_files/ec_521_prv.der":"data_files/ec_521_pub.
|
|||
Derive public key EC Brainpool 512 bits
|
||||
depends_on:MBEDTLS_ECP_LIGHT:MBEDTLS_ECP_DP_BP512R1_ENABLED
|
||||
pk_write_public_from_private:"data_files/ec_bp512_prv.der":"data_files/ec_bp512_pub.der"
|
||||
|
||||
Private key write check EC X25519
|
||||
depends_on:MBEDTLS_ECP_LIGHT:MBEDTLS_BASE64_C:MBEDTLS_ECP_DP_CURVE25519_ENABLED
|
||||
pk_write_key_check:"data_files/ec_x25519_prv.pem":TEST_PEM
|
||||
|
||||
Private key write check EC X448
|
||||
depends_on:MBEDTLS_ECP_LIGHT:MBEDTLS_BASE64_C:MBEDTLS_ECP_DP_CURVE448_ENABLED
|
||||
pk_write_key_check:"data_files/ec_x448_prv.pem":TEST_PEM
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue