diff options
author | Kenny Root <kroot@google.com> | 2013-09-26 11:52:07 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2013-09-26 15:08:14 -0700 |
commit | 9d72aaddcedda0eb4519f84805d2212fcc25ebaf (patch) | |
tree | fe3feab20ecb9744b7f750d396c253eee1309ca5 /crypto/src | |
parent | 325e5492a9d294f9d5a9752103f5ce96df2c4095 (diff) | |
download | libcore-9d72aaddcedda0eb4519f84805d2212fcc25ebaf.zip libcore-9d72aaddcedda0eb4519f84805d2212fcc25ebaf.tar.gz libcore-9d72aaddcedda0eb4519f84805d2212fcc25ebaf.tar.bz2 |
Conscrypt: add SHA-224 with tests
SHA-224 has made a comeback in the latest StandardNames documentation.
This change adds tests for SHA-224 and also Conscrypt providers for
things we have code paths to support.
Change-Id: I8c200082ff76ee4ae38b6efaa16e6741b33b7f5b
Diffstat (limited to 'crypto/src')
4 files changed, 51 insertions, 0 deletions
diff --git a/crypto/src/main/java/org/conscrypt/OpenSSLMac.java b/crypto/src/main/java/org/conscrypt/OpenSSLMac.java index ed9ea52..ed163ec 100644 --- a/crypto/src/main/java/org/conscrypt/OpenSSLMac.java +++ b/crypto/src/main/java/org/conscrypt/OpenSSLMac.java @@ -142,6 +142,15 @@ public abstract class OpenSSLMac extends MacSpi { } } + public static class HmacSHA224 extends OpenSSLMac { + private static final long EVP_MD = NativeCrypto.EVP_get_digestbyname("sha224"); + private static final int SIZE = NativeCrypto.EVP_MD_size(EVP_MD); + + public HmacSHA224() throws NoSuchAlgorithmException { + super(EVP_MD, SIZE, NativeCrypto.EVP_PKEY_HMAC); + } + } + public static class HmacSHA256 extends OpenSSLMac { private static final long EVP_MD = NativeCrypto.EVP_get_digestbyname("sha256"); private static final int SIZE = NativeCrypto.EVP_MD_size(EVP_MD); diff --git a/crypto/src/main/java/org/conscrypt/OpenSSLMessageDigestJDK.java b/crypto/src/main/java/org/conscrypt/OpenSSLMessageDigestJDK.java index 763ff65..801a721 100644 --- a/crypto/src/main/java/org/conscrypt/OpenSSLMessageDigestJDK.java +++ b/crypto/src/main/java/org/conscrypt/OpenSSLMessageDigestJDK.java @@ -128,6 +128,14 @@ public class OpenSSLMessageDigestJDK extends MessageDigest implements Cloneable } } + public static class SHA224 extends OpenSSLMessageDigestJDK { + private static final long EVP_MD = NativeCrypto.EVP_get_digestbyname("sha224"); + private static final int SIZE = NativeCrypto.EVP_MD_size(EVP_MD); + public SHA224() throws NoSuchAlgorithmException { + super("SHA-224", EVP_MD, SIZE); + } + } + public static class SHA256 extends OpenSSLMessageDigestJDK { private static final long EVP_MD = NativeCrypto.EVP_get_digestbyname("sha256"); private static final int SIZE = NativeCrypto.EVP_MD_size(EVP_MD); diff --git a/crypto/src/main/java/org/conscrypt/OpenSSLProvider.java b/crypto/src/main/java/org/conscrypt/OpenSSLProvider.java index 4055e50..371da1f 100644 --- a/crypto/src/main/java/org/conscrypt/OpenSSLProvider.java +++ b/crypto/src/main/java/org/conscrypt/OpenSSLProvider.java @@ -57,6 +57,10 @@ public final class OpenSSLProvider extends Provider { put("Alg.Alias.MessageDigest.SHA", "SHA-1"); put("Alg.Alias.MessageDigest.1.3.14.3.2.26", "SHA-1"); + put("MessageDigest.SHA-224", prefix + "OpenSSLMessageDigestJDK$SHA224"); + put("Alg.Alias.MessageDigest.SHA224", "SHA-224"); + put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.4", "SHA-224"); + put("MessageDigest.SHA-256", prefix + "OpenSSLMessageDigestJDK$SHA256"); put("Alg.Alias.MessageDigest.SHA256", "SHA-256"); put("Alg.Alias.MessageDigest.2.16.840.1.101.3.4.2.1", "SHA-256"); @@ -108,6 +112,14 @@ public final class OpenSSLProvider extends Provider { put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.113549.1.1.5", "SHA1WithRSA"); put("Alg.Alias.Signature.1.3.14.3.2.29", "SHA1WithRSA"); + put("Signature.SHA224WithRSA", prefix + "OpenSSLSignature$SHA224RSA"); + put("Alg.Alias.Signature.SHA224WithRSAEncryption", "SHA224WithRSA"); + put("Alg.Alias.Signature.1.2.840.113549.1.1.11", "SHA224WithRSA"); + put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.4with1.2.840.113549.1.1.1", + "SHA224WithRSA"); + put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.4with1.2.840.113549.1.1.11", + "SHA224WithRSA"); + put("Signature.SHA256WithRSA", prefix + "OpenSSLSignature$SHA256RSA"); put("Alg.Alias.Signature.SHA256WithRSAEncryption", "SHA256WithRSA"); put("Alg.Alias.Signature.1.2.840.113549.1.1.11", "SHA256WithRSA"); @@ -146,6 +158,12 @@ public final class OpenSSLProvider extends Provider { put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10045.2.1", "ECDSA"); // iso(1) member-body(2) us(840) ansi-x962(10045) signatures(4) ecdsa-with-SHA2(3) + put("Signature.SHA224withECDSA", prefix + "OpenSSLSignature$SHA224ECDSA"); + // ecdsa-with-SHA224(1) + put("Alg.Alias.Signature.1.2.840.10045.4.3.1", "SHA224withECDSA"); + put("Alg.Alias.Signature.2.16.840.1.101.3.4.2.4with1.2.840.10045.2.1", "SHA224withECDSA"); + + // iso(1) member-body(2) us(840) ansi-x962(10045) signatures(4) ecdsa-with-SHA2(3) put("Signature.SHA256withECDSA", prefix + "OpenSSLSignature$SHA256ECDSA"); // ecdsa-with-SHA256(2) put("Alg.Alias.Signature.1.2.840.10045.4.3.2", "SHA256withECDSA"); @@ -215,6 +233,12 @@ public final class OpenSSLProvider extends Provider { put("Alg.Alias.Mac.HMAC-SHA1", "HmacSHA1"); put("Alg.Alias.Mac.HMAC/SHA1", "HmacSHA1"); + // id-hmacWithSHA224 (8) + put("Mac.HmacSHA224", prefix + "OpenSSLMac$HmacSHA224"); + put("Alg.Alias.Mac.1.2.840.113549.2.9", "HmacSHA224"); + put("Alg.Alias.Mac.HMAC-SHA224", "HmacSHA224"); + put("Alg.Alias.Mac.HMAC/SHA224", "HmacSHA224"); + // id-hmacWithSHA256 (9) put("Mac.HmacSHA256", prefix + "OpenSSLMac$HmacSHA256"); put("Alg.Alias.Mac.1.2.840.113549.2.9", "HmacSHA256"); diff --git a/crypto/src/main/java/org/conscrypt/OpenSSLSignature.java b/crypto/src/main/java/org/conscrypt/OpenSSLSignature.java index 8576010..53b0df0 100644 --- a/crypto/src/main/java/org/conscrypt/OpenSSLSignature.java +++ b/crypto/src/main/java/org/conscrypt/OpenSSLSignature.java @@ -299,6 +299,11 @@ public class OpenSSLSignature extends Signature { super("RSA-SHA1", EngineType.RSA); } } + public static final class SHA224RSA extends OpenSSLSignature { + public SHA224RSA() throws NoSuchAlgorithmException { + super("RSA-SHA224", EngineType.RSA); + } + } public static final class SHA256RSA extends OpenSSLSignature { public SHA256RSA() throws NoSuchAlgorithmException { super("RSA-SHA256", EngineType.RSA); @@ -324,6 +329,11 @@ public class OpenSSLSignature extends Signature { super("SHA1", EngineType.EC); } } + public static final class SHA224ECDSA extends OpenSSLSignature { + public SHA224ECDSA() throws NoSuchAlgorithmException { + super("SHA224", EngineType.EC); + } + } public static final class SHA256ECDSA extends OpenSSLSignature { public SHA256ECDSA() throws NoSuchAlgorithmException { super("SHA256", EngineType.EC); |