mirror of
https://github.com/ipxe/ipxe
synced 2026-01-21 18:30:56 +03:00
[crypto] Allow for OID-identified elliptic curve algorithms
Elliptic curves in X.509 certificates are identified via the id-ecPublicKey object identifier (1.2.840.10045.2.1), with the specific elliptic curve identified via a second OID in the algorithm parameters. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -127,9 +127,15 @@ struct asn1_builder_header {
|
||||
#define ASN1_OID_TRIPLE( value ) \
|
||||
( 0x80 | ( ( (value) >> 14 ) & 0x7f ) ), ASN1_OID_DOUBLE ( (value) )
|
||||
|
||||
/** ASN.1 OID for ecPublicKey (1.2.840.10045.2.1) */
|
||||
#define ASN1_OID_ECPUBLICKEY \
|
||||
ASN1_OID_INITIAL ( 1, 2 ), ASN1_OID_DOUBLE ( 840 ), \
|
||||
ASN1_OID_DOUBLE ( 10045 ), ASN1_OID_SINGLE ( 2 ), \
|
||||
ASN1_OID_SINGLE ( 1 )
|
||||
|
||||
/** ASN.1 OID for prime256v1 (1.2.840.10045.3.1.7) */
|
||||
#define ASN1_OID_PRIME256V1 \
|
||||
ASN1_OID_INITIAL ( 1, 1 ), ASN1_OID_DOUBLE ( 840 ), \
|
||||
ASN1_OID_INITIAL ( 1, 2 ), ASN1_OID_DOUBLE ( 840 ), \
|
||||
ASN1_OID_DOUBLE ( 10045 ), ASN1_OID_SINGLE ( 3 ), \
|
||||
ASN1_OID_SINGLE ( 1 ), ASN1_OID_SINGLE ( 7 )
|
||||
|
||||
@@ -426,6 +432,7 @@ extern struct asn1_algorithm oid_sha512_algorithm __asn1_algorithm;
|
||||
extern struct asn1_algorithm oid_sha224_algorithm __asn1_algorithm;
|
||||
extern struct asn1_algorithm oid_sha512_224_algorithm __asn1_algorithm;
|
||||
extern struct asn1_algorithm oid_sha512_256_algorithm __asn1_algorithm;
|
||||
extern struct asn1_algorithm ecpubkey_algorithm __asn1_algorithm;
|
||||
|
||||
/**
|
||||
* Invalidate ASN.1 object cursor
|
||||
@@ -497,8 +504,11 @@ extern int asn1_cipher_algorithm ( const struct asn1_cursor *cursor,
|
||||
struct asn1_cursor *params );
|
||||
extern int asn1_signature_algorithm ( const struct asn1_cursor *cursor,
|
||||
struct asn1_algorithm **algorithm );
|
||||
extern int asn1_curve_algorithm ( const struct asn1_cursor *cursor,
|
||||
struct asn1_algorithm **algorithm );
|
||||
extern int asn1_check_algorithm ( const struct asn1_cursor *cursor,
|
||||
struct asn1_algorithm *expected );
|
||||
struct asn1_algorithm *expected,
|
||||
struct asn1_cursor *params );
|
||||
extern int asn1_parse_cbc ( struct asn1_algorithm *algorithm,
|
||||
struct asn1_cursor *params );
|
||||
extern int asn1_parse_gcm ( struct asn1_algorithm *algorithm,
|
||||
|
||||
Reference in New Issue
Block a user