mirror of
https://github.com/ipxe/ipxe
synced 2025-12-30 04:28:12 +03:00
[crypto] Support SHA-{224,384,512} in X.509 certificates
Add support for SHA-224, SHA-384, and SHA-512 as digest algorithms in X.509 certificates, and allow the choice of public-key, cipher, and digest algorithms to be configured at build time via config/crypto.h. Originally-implemented-by: Tufan Karadere <tufank@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -32,9 +32,6 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
#include <ipxe/crypto.h>
|
||||
#include <ipxe/bigint.h>
|
||||
#include <ipxe/random_nz.h>
|
||||
#include <ipxe/md5.h>
|
||||
#include <ipxe/sha1.h>
|
||||
#include <ipxe/sha256.h>
|
||||
#include <ipxe/rsa.h>
|
||||
|
||||
/** @file
|
||||
@@ -53,18 +50,6 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
/** "rsaEncryption" object identifier */
|
||||
static uint8_t oid_rsa_encryption[] = { ASN1_OID_RSAENCRYPTION };
|
||||
|
||||
/** "md5WithRSAEncryption" object identifier */
|
||||
static uint8_t oid_md5_with_rsa_encryption[] =
|
||||
{ ASN1_OID_MD5WITHRSAENCRYPTION };
|
||||
|
||||
/** "sha1WithRSAEncryption" object identifier */
|
||||
static uint8_t oid_sha1_with_rsa_encryption[] =
|
||||
{ ASN1_OID_SHA1WITHRSAENCRYPTION };
|
||||
|
||||
/** "sha256WithRSAEncryption" object identifier */
|
||||
static uint8_t oid_sha256_with_rsa_encryption[] =
|
||||
{ ASN1_OID_SHA256WITHRSAENCRYPTION };
|
||||
|
||||
/** "rsaEncryption" OID-identified algorithm */
|
||||
struct asn1_algorithm rsa_encryption_algorithm __asn1_algorithm = {
|
||||
.name = "rsaEncryption",
|
||||
@@ -73,63 +58,6 @@ struct asn1_algorithm rsa_encryption_algorithm __asn1_algorithm = {
|
||||
.oid = ASN1_OID_CURSOR ( oid_rsa_encryption ),
|
||||
};
|
||||
|
||||
/** "md5WithRSAEncryption" OID-identified algorithm */
|
||||
struct asn1_algorithm md5_with_rsa_encryption_algorithm __asn1_algorithm = {
|
||||
.name = "md5WithRSAEncryption",
|
||||
.pubkey = &rsa_algorithm,
|
||||
.digest = &md5_algorithm,
|
||||
.oid = ASN1_OID_CURSOR ( oid_md5_with_rsa_encryption ),
|
||||
};
|
||||
|
||||
/** "sha1WithRSAEncryption" OID-identified algorithm */
|
||||
struct asn1_algorithm sha1_with_rsa_encryption_algorithm __asn1_algorithm = {
|
||||
.name = "sha1WithRSAEncryption",
|
||||
.pubkey = &rsa_algorithm,
|
||||
.digest = &sha1_algorithm,
|
||||
.oid = ASN1_OID_CURSOR ( oid_sha1_with_rsa_encryption ),
|
||||
};
|
||||
|
||||
/** "sha256WithRSAEncryption" OID-identified algorithm */
|
||||
struct asn1_algorithm sha256_with_rsa_encryption_algorithm __asn1_algorithm = {
|
||||
.name = "sha256WithRSAEncryption",
|
||||
.pubkey = &rsa_algorithm,
|
||||
.digest = &sha256_algorithm,
|
||||
.oid = ASN1_OID_CURSOR ( oid_sha256_with_rsa_encryption ),
|
||||
};
|
||||
|
||||
/** MD5 digestInfo prefix */
|
||||
static const uint8_t rsa_md5_prefix_data[] =
|
||||
{ RSA_DIGESTINFO_PREFIX ( MD5_DIGEST_SIZE, ASN1_OID_MD5 ) };
|
||||
|
||||
/** SHA-1 digestInfo prefix */
|
||||
static const uint8_t rsa_sha1_prefix_data[] =
|
||||
{ RSA_DIGESTINFO_PREFIX ( SHA1_DIGEST_SIZE, ASN1_OID_SHA1 ) };
|
||||
|
||||
/** SHA-256 digestInfo prefix */
|
||||
static const uint8_t rsa_sha256_prefix_data[] =
|
||||
{ RSA_DIGESTINFO_PREFIX ( SHA256_DIGEST_SIZE, ASN1_OID_SHA256 ) };
|
||||
|
||||
/** MD5 digestInfo prefix */
|
||||
struct rsa_digestinfo_prefix rsa_md5_prefix __rsa_digestinfo_prefix = {
|
||||
.digest = &md5_algorithm,
|
||||
.data = rsa_md5_prefix_data,
|
||||
.len = sizeof ( rsa_md5_prefix_data ),
|
||||
};
|
||||
|
||||
/** SHA-1 digestInfo prefix */
|
||||
struct rsa_digestinfo_prefix rsa_sha1_prefix __rsa_digestinfo_prefix = {
|
||||
.digest = &sha1_algorithm,
|
||||
.data = rsa_sha1_prefix_data,
|
||||
.len = sizeof ( rsa_sha1_prefix_data ),
|
||||
};
|
||||
|
||||
/** SHA-256 digestInfo prefix */
|
||||
struct rsa_digestinfo_prefix rsa_sha256_prefix __rsa_digestinfo_prefix = {
|
||||
.digest = &sha256_algorithm,
|
||||
.data = rsa_sha256_prefix_data,
|
||||
.len = sizeof ( rsa_sha256_prefix_data ),
|
||||
};
|
||||
|
||||
/**
|
||||
* Identify RSA prefix
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user