diff options
| author | Michael Brown | 2015-04-12 17:34:33 +0200 |
|---|---|---|
| committer | Michael Brown | 2015-04-12 18:01:10 +0200 |
| commit | e5e91ab47107dde8eb66442cf35722b5c2ee89f9 (patch) | |
| tree | 45e343291fe779654ebc61965b5a77de431a605b /src/include | |
| parent | [crypto] Add SHA-384 algorithm (diff) | |
| download | ipxe-e5e91ab47107dde8eb66442cf35722b5c2ee89f9.tar.gz ipxe-e5e91ab47107dde8eb66442cf35722b5c2ee89f9.tar.xz ipxe-e5e91ab47107dde8eb66442cf35722b5c2ee89f9.zip | |
[crypto] Add SHA-512/256 algorithm
SHA-512/256 is almost identical to SHA-512, with differing initial
hash values and a truncated output length.
This implementation has been verified using the NIST SHA-512/256 test
vectors.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/ipxe/asn1.h | 7 | ||||
| -rw-r--r-- | src/include/ipxe/sha512.h | 4 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/include/ipxe/asn1.h b/src/include/ipxe/asn1.h index 7550c4748..f9ae3112b 100644 --- a/src/include/ipxe/asn1.h +++ b/src/include/ipxe/asn1.h @@ -181,6 +181,13 @@ struct asn1_builder_header { ASN1_OID_SINGLE ( 3 ), ASN1_OID_SINGLE ( 4 ), \ ASN1_OID_SINGLE ( 2 ), ASN1_OID_SINGLE ( 4 ) +/** ASN.1 OID for id-sha512-256 (2.16.840.1.101.3.4.2.6) */ +#define ASN1_OID_SHA512_256 \ + ASN1_OID_INITIAL ( 2, 16 ), ASN1_OID_DOUBLE ( 840 ), \ + ASN1_OID_SINGLE ( 1 ), ASN1_OID_SINGLE ( 101 ), \ + ASN1_OID_SINGLE ( 3 ), ASN1_OID_SINGLE ( 4 ), \ + ASN1_OID_SINGLE ( 2 ), ASN1_OID_SINGLE ( 6 ) + /** ASN.1 OID for commonName (2.5.4.3) */ #define ASN1_OID_COMMON_NAME \ ASN1_OID_INITIAL ( 2, 5 ), ASN1_OID_SINGLE ( 4 ), \ diff --git a/src/include/ipxe/sha512.h b/src/include/ipxe/sha512.h index 44a4c8309..8e9892bfb 100644 --- a/src/include/ipxe/sha512.h +++ b/src/include/ipxe/sha512.h @@ -78,6 +78,9 @@ struct sha512_context { /** SHA-384 digest size */ #define SHA384_DIGEST_SIZE ( SHA512_DIGEST_SIZE * 384 / 512 ) +/** SHA-512/256 digest size */ +#define SHA512_256_DIGEST_SIZE ( SHA512_DIGEST_SIZE * 256 / 512 ) + extern void sha512_family_init ( struct sha512_context *context, const struct sha512_digest *init, size_t digestsize ); @@ -86,5 +89,6 @@ extern void sha512_final ( void *ctx, void *out ); extern struct digest_algorithm sha512_algorithm; extern struct digest_algorithm sha384_algorithm; +extern struct digest_algorithm sha512_256_algorithm; #endif /* IPXE_SHA512_H */ |
