summaryrefslogtreecommitdiff
path: root/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest
diff options
context:
space:
mode:
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest')
-rw-r--r--bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA1.java338
-rw-r--r--bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA224.java2
-rw-r--r--bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA256.java2
-rw-r--r--bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA384.java2
-rw-r--r--bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA512.java2
5 files changed, 9 insertions, 337 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA1.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA1.java
index 9c99e0b5..35e03189 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA1.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA1.java
@@ -1,16 +1,9 @@
package org.bouncycastle.jcajce.provider.digest;
-import java.security.spec.InvalidKeySpecException;
-import java.security.spec.KeySpec;
-
-import javax.crypto.SecretKey;
-import javax.crypto.spec.PBEKeySpec;
-
import org.bouncycastle.asn1.iana.IANAObjectIdentifiers;
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.crypto.CipherKeyGenerator;
-import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.digests.SHA1Digest;
// BEGIN ANDROID-ADDED
import org.bouncycastle.crypto.digests.SHA224Digest;
@@ -20,11 +13,8 @@ import org.bouncycastle.crypto.digests.SHA512Digest;
// END ANDROID-ADDED
import org.bouncycastle.crypto.macs.HMac;
import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
-import org.bouncycastle.jcajce.provider.symmetric.util.BCPBEKey;
import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
-import org.bouncycastle.jcajce.provider.symmetric.util.BaseSecretKeyFactory;
-import org.bouncycastle.jcajce.provider.symmetric.util.PBE;
import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory;
public class SHA1
@@ -86,44 +76,6 @@ public class SHA1
}
}
- // BEGIN ANDROID-ADDED
- public static class SHA224Mac
- extends BaseMac
- {
- public SHA224Mac()
- {
- super(new HMac(new SHA224Digest()));
- }
- }
-
- public static class SHA256Mac
- extends BaseMac
- {
- public SHA256Mac()
- {
- super(new HMac(new SHA256Digest()));
- }
- }
-
- public static class SHA384Mac
- extends BaseMac
- {
- public SHA384Mac()
- {
- super(new HMac(new SHA384Digest()));
- }
- }
-
- public static class SHA512Mac
- extends BaseMac
- {
- public SHA512Mac()
- {
- super(new HMac(new SHA512Digest()));
- }
- }
- // END ANDROID-ADDED
-
/**
* PBEWithHmacSHA
*/
@@ -136,267 +88,6 @@ public class SHA1
}
}
- // BEGIN ANDROID-CHANGED
- // Was: public static class BasePBKDF2WithHmacSHA1
- private static class BasePBKDF2WithHmacSHA_Variant
- // END ANDROID-CHANGED
- extends BaseSecretKeyFactory
- {
- private int scheme;
- // BEGIN ANDROID-ADDED
- private int digest;
- private int keySizeInBits;
- private int ivSizeInBits;
- // END ANDROID-ADDED
-
- // BEGIN ANDROID-CHANGED
- // Was: public BasePBKDF2WithHmacSHA1(String name, int scheme)
- private BasePBKDF2WithHmacSHA_Variant(
- String name, int scheme, int digest, int keySizeInBits, int ivSizeInBits)
- // END ANDROID-CHANGED
- {
- super(name, PKCSObjectIdentifiers.id_PBKDF2);
-
- this.scheme = scheme;
- // BEGIN ANDROID-ADDED
- this.digest = digest;
- this.keySizeInBits = keySizeInBits;
- this.ivSizeInBits = ivSizeInBits;
- // END ANDROID-ADDED
- }
-
- // BEGIN android-added
- private BasePBKDF2WithHmacSHA_Variant(String name, int scheme, int digest) {
- this(name, scheme, digest, 0, 0);
- }
- // END android-added
-
- protected SecretKey engineGenerateSecret(
- KeySpec keySpec)
- throws InvalidKeySpecException
- {
- if (keySpec instanceof PBEKeySpec)
- {
- PBEKeySpec pbeSpec = (PBEKeySpec)keySpec;
-
- // BEGIN ANDROID-ADDED
- // Allow to specify a key using only the password. The key will be generated later
- // when other parameters are known.
- if (pbeSpec.getSalt() == null
- && pbeSpec.getIterationCount() == 0
- && pbeSpec.getKeyLength() == 0
- && pbeSpec.getPassword().length > 0
- && keySizeInBits != 0) {
- return new BCPBEKey(
- this.algName, this.algOid, scheme, digest, keySizeInBits, ivSizeInBits,
- pbeSpec,
- // cipherParameters, to be generated when the PBE parameters are known.
- null);
- }
- // END ANDROID-ADDED
-
- if (pbeSpec.getSalt() == null)
- {
- throw new InvalidKeySpecException("missing required salt");
- }
-
- if (pbeSpec.getIterationCount() <= 0)
- {
- throw new InvalidKeySpecException("positive iteration count required: "
- + pbeSpec.getIterationCount());
- }
-
- if (pbeSpec.getKeyLength() <= 0)
- {
- throw new InvalidKeySpecException("positive key length required: "
- + pbeSpec.getKeyLength());
- }
-
- if (pbeSpec.getPassword().length == 0)
- {
- throw new IllegalArgumentException("password empty");
- }
-
- // BEGIN android-removed
- // int digest = SHA1;
- // END android-removed
- int keySize = pbeSpec.getKeyLength();
- int ivSize = -1; // JDK 1,2 and earlier does not understand simplified version.
- CipherParameters param = PBE.Util.makePBEMacParameters(pbeSpec, scheme, digest, keySize);
-
- return new BCPBEKey(this.algName, this.algOid, scheme, digest, keySize, ivSize, pbeSpec, param);
- }
-
- throw new InvalidKeySpecException("Invalid KeySpec");
- }
- }
-
- // BEGIN android-added
- public static class BasePBKDF2WithHmacSHA1 extends BasePBKDF2WithHmacSHA_Variant {
- public BasePBKDF2WithHmacSHA1(String name, int scheme)
- {
- super(name, scheme, SHA1);
- }
- }
- // END android-added
-
- public static class PBKDF2WithHmacSHA1UTF8
- extends BasePBKDF2WithHmacSHA1
- {
- public PBKDF2WithHmacSHA1UTF8()
- {
- super("PBKDF2WithHmacSHA1", PKCS5S2_UTF8);
- }
- }
-
- public static class PBKDF2WithHmacSHA18BIT
- extends BasePBKDF2WithHmacSHA1
- {
- public PBKDF2WithHmacSHA18BIT()
- {
- super("PBKDF2WithHmacSHA1And8bit", PKCS5S2);
- }
- }
-
- // BEGIN ANDROID-ADDED
- public static class BasePBKDF2WithHmacSHA224 extends BasePBKDF2WithHmacSHA_Variant {
- public BasePBKDF2WithHmacSHA224(String name, int scheme)
- {
- super(name, scheme, SHA224);
- }
- }
-
- public static class PBKDF2WithHmacSHA224UTF8
- extends BasePBKDF2WithHmacSHA224
- {
- public PBKDF2WithHmacSHA224UTF8()
- {
- super("PBKDF2WithHmacSHA224", PKCS5S2_UTF8);
- }
- }
-
- public static class BasePBKDF2WithHmacSHA256 extends BasePBKDF2WithHmacSHA_Variant {
- public BasePBKDF2WithHmacSHA256(String name, int scheme)
- {
- super(name, scheme, SHA256);
- }
- }
-
- public static class PBKDF2WithHmacSHA256UTF8
- extends BasePBKDF2WithHmacSHA256
- {
- public PBKDF2WithHmacSHA256UTF8()
- {
- super("PBKDF2WithHmacSHA256", PKCS5S2_UTF8);
- }
- }
-
-
- public static class BasePBKDF2WithHmacSHA384 extends BasePBKDF2WithHmacSHA_Variant {
- public BasePBKDF2WithHmacSHA384(String name, int scheme)
- {
- super(name, scheme, SHA384);
- }
- }
-
- public static class PBKDF2WithHmacSHA384UTF8
- extends BasePBKDF2WithHmacSHA384
- {
- public PBKDF2WithHmacSHA384UTF8()
- {
- super("PBKDF2WithHmacSHA384", PKCS5S2_UTF8);
- }
- }
-
- public static class BasePBKDF2WithHmacSHA512 extends BasePBKDF2WithHmacSHA_Variant {
- public BasePBKDF2WithHmacSHA512(String name, int scheme)
- {
- super(name, scheme, SHA512);
- }
- }
-
- public static class PBKDF2WithHmacSHA512UTF8
- extends BasePBKDF2WithHmacSHA512
- {
- public PBKDF2WithHmacSHA512UTF8()
- {
- super("PBKDF2WithHmacSHA512", PKCS5S2_UTF8);
- }
- }
-
- public static class PBEWithHmacSHA1AndAES_128
- extends BasePBKDF2WithHmacSHA_Variant {
- public PBEWithHmacSHA1AndAES_128() {
- super("PBEWithHmacSHA1AndAES_128", PKCS5S2_UTF8, SHA1, 128, 128);
- }
- }
-
- public static class PBEWithHmacSHA224AndAES_128
- extends BasePBKDF2WithHmacSHA_Variant {
- public PBEWithHmacSHA224AndAES_128() {
- super("PBEWithHmacSHA224AndAES_128", PKCS5S2_UTF8, SHA224, 128, 128);
- }
- }
-
- public static class PBEWithHmacSHA256AndAES_128
- extends BasePBKDF2WithHmacSHA_Variant {
- public PBEWithHmacSHA256AndAES_128() {
- super("PBEWithHmacSHA256AndAES_128", PKCS5S2_UTF8, SHA256, 128, 128);
- }
- }
-
- public static class PBEWithHmacSHA384AndAES_128
- extends BasePBKDF2WithHmacSHA_Variant {
- public PBEWithHmacSHA384AndAES_128() {
- super("PBEWithHmacSHA384AndAES_128", PKCS5S2_UTF8, SHA384, 128, 128);
- }
- }
-
- public static class PBEWithHmacSHA512AndAES_128
- extends BasePBKDF2WithHmacSHA_Variant {
- public PBEWithHmacSHA512AndAES_128() {
- super("PBEWithHmacSHA512AndAES_128", PKCS5S2_UTF8, SHA512, 128, 128);
- }
- }
-
-
- public static class PBEWithHmacSHA1AndAES_256
- extends BasePBKDF2WithHmacSHA_Variant {
- public PBEWithHmacSHA1AndAES_256() {
- super("PBEWithHmacSHA1AndAES_256", PKCS5S2_UTF8, SHA1, 256, 128);
- }
- }
-
- public static class PBEWithHmacSHA224AndAES_256
- extends BasePBKDF2WithHmacSHA_Variant {
- public PBEWithHmacSHA224AndAES_256() {
- super("PBEWithHmacSHA224AndAES_256", PKCS5S2_UTF8, SHA224, 256, 128);
- }
- }
-
- public static class PBEWithHmacSHA256AndAES_256
- extends BasePBKDF2WithHmacSHA_Variant {
- public PBEWithHmacSHA256AndAES_256() {
- super("PBEWithHmacSHA256AndAES_256", PKCS5S2_UTF8, SHA256, 256, 128);
- }
- }
-
- public static class PBEWithHmacSHA384AndAES_256
- extends BasePBKDF2WithHmacSHA_Variant {
- public PBEWithHmacSHA384AndAES_256() {
- super("PBEWithHmacSHA384AndAES_256", PKCS5S2_UTF8, SHA384, 256, 128);
- }
- }
-
- public static class PBEWithHmacSHA512AndAES_256
- extends BasePBKDF2WithHmacSHA_Variant {
- public PBEWithHmacSHA512AndAES_256() {
- super("PBEWithHmacSHA512AndAES_256", PKCS5S2_UTF8, SHA512, 256, 128);
- }
- }
- // END ANDROID-ADDED
-
-
public static class Mappings
extends DigestAlgorithmProvider
{
@@ -419,38 +110,11 @@ public class SHA1
provider.addAlgorithm("Mac.PBEWITHHMACSHA", PREFIX + "$SHA1Mac");
provider.addAlgorithm("Mac.PBEWITHHMACSHA1", PREFIX + "$SHA1Mac");
- // BEGIN android-added
- provider.addAlgorithm("Mac.PBEWITHHMACSHA224", PREFIX + "$SHA224Mac");
- provider.addAlgorithm("Mac.PBEWITHHMACSHA256", PREFIX + "$SHA256Mac");
- provider.addAlgorithm("Mac.PBEWITHHMACSHA384", PREFIX + "$SHA384Mac");
- provider.addAlgorithm("Mac.PBEWITHHMACSHA512", PREFIX + "$SHA512Mac");
- // END android-added
provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHHMACSHA", "PBEWITHHMACSHA1");
provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + OIWObjectIdentifiers.idSHA1, "PBEWITHHMACSHA1");
provider.addAlgorithm("Alg.Alias.Mac." + OIWObjectIdentifiers.idSHA1, "PBEWITHHMACSHA");
provider.addAlgorithm("SecretKeyFactory.PBEWITHHMACSHA1", PREFIX + "$PBEWithMacKeyFactory");
- provider.addAlgorithm("SecretKeyFactory.PBKDF2WithHmacSHA1", PREFIX + "$PBKDF2WithHmacSHA1UTF8");
- // BEGIN android-added
- provider.addAlgorithm("SecretKeyFactory.PBKDF2WithHmacSHA224", PREFIX + "$PBKDF2WithHmacSHA224UTF8");
- provider.addAlgorithm("SecretKeyFactory.PBKDF2WithHmacSHA256", PREFIX + "$PBKDF2WithHmacSHA256UTF8");
- provider.addAlgorithm("SecretKeyFactory.PBKDF2WithHmacSHA384", PREFIX + "$PBKDF2WithHmacSHA384UTF8");
- provider.addAlgorithm("SecretKeyFactory.PBKDF2WithHmacSHA512", PREFIX + "$PBKDF2WithHmacSHA512UTF8");
- provider.addAlgorithm("SecretKeyFactory.PBEWithHmacSHA1AndAES_128", PREFIX + "$PBEWithHmacSHA1AndAES_128");
- provider.addAlgorithm("SecretKeyFactory.PBEWithHmacSHA224AndAES_128", PREFIX + "$PBEWithHmacSHA224AndAES_128");
- provider.addAlgorithm("SecretKeyFactory.PBEWithHmacSHA256AndAES_128", PREFIX + "$PBEWithHmacSHA256AndAES_128");
- provider.addAlgorithm("SecretKeyFactory.PBEWithHmacSHA384AndAES_128", PREFIX + "$PBEWithHmacSHA384AndAES_128");
- provider.addAlgorithm("SecretKeyFactory.PBEWithHmacSHA512AndAES_128", PREFIX + "$PBEWithHmacSHA512AndAES_128");
- provider.addAlgorithm("SecretKeyFactory.PBEWithHmacSHA1AndAES_256", PREFIX + "$PBEWithHmacSHA1AndAES_256");
- provider.addAlgorithm("SecretKeyFactory.PBEWithHmacSHA224AndAES_256", PREFIX + "$PBEWithHmacSHA224AndAES_256");
- provider.addAlgorithm("SecretKeyFactory.PBEWithHmacSHA256AndAES_256", PREFIX + "$PBEWithHmacSHA256AndAES_256");
- provider.addAlgorithm("SecretKeyFactory.PBEWithHmacSHA384AndAES_256", PREFIX + "$PBEWithHmacSHA384AndAES_256");
- provider.addAlgorithm("SecretKeyFactory.PBEWithHmacSHA512AndAES_256", PREFIX + "$PBEWithHmacSHA512AndAES_256");
- // END android-added
- provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBKDF2WithHmacSHA1AndUTF8", "PBKDF2WithHmacSHA1");
- provider.addAlgorithm("SecretKeyFactory.PBKDF2WithHmacSHA1And8BIT", PREFIX + "$PBKDF2WithHmacSHA18BIT");
- provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBKDF2withASCII", "PBKDF2WithHmacSHA1And8BIT");
- provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBKDF2with8BIT", "PBKDF2WithHmacSHA1And8BIT");
- }
+ }
}
}
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA224.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA224.java
index ba06a0fb..ac83fc23 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA224.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA224.java
@@ -68,6 +68,8 @@ public class SHA224
provider.addAlgorithm("Alg.Alias.MessageDigest.SHA224", "SHA-224");
provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha224, "SHA-224");
+ provider.addAlgorithm("Mac.PBEWITHHMACSHA224", PREFIX + "$HashMac");
+
addHMACAlgorithm(provider, "SHA224", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
addHMACAlias(provider, "SHA224", PKCSObjectIdentifiers.id_hmacWithSHA224);
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA256.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA256.java
index 4504f306..e129db4d 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA256.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA256.java
@@ -92,6 +92,8 @@ public class SHA256
// provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + NISTObjectIdentifiers.id_sha256, "PBEWITHHMACSHA256");
// END android-removed
+ provider.addAlgorithm("Mac.PBEWITHHMACSHA256", PREFIX + "$HashMac");
+
addHMACAlgorithm(provider, "SHA256", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
addHMACAlias(provider, "SHA256", PKCSObjectIdentifiers.id_hmacWithSHA256);
addHMACAlias(provider, "SHA256", NISTObjectIdentifiers.id_sha256);
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA384.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA384.java
index e5635798..f2fb6d32 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA384.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA384.java
@@ -88,6 +88,8 @@ public class SHA384
// provider.addAlgorithm("Mac.OLDHMACSHA384", PREFIX + "$OldSHA384");
// END android-removed
+ provider.addAlgorithm("Mac.PBEWITHHMACSHA384", PREFIX + "$HashMac");
+
addHMACAlgorithm(provider, "SHA384", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
addHMACAlias(provider, "SHA384", PKCSObjectIdentifiers.id_hmacWithSHA384);
}
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA512.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA512.java
index 903eec1b..9433a817 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA512.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/digest/SHA512.java
@@ -180,6 +180,8 @@ public class SHA512
// provider.addAlgorithm("Mac.OLDHMACSHA512", PREFIX + "$OldSHA512");
// END android-removed
+ provider.addAlgorithm("Mac.PBEWITHHMACSHA512", PREFIX + "$HashMac");
+
addHMACAlgorithm(provider, "SHA512", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
addHMACAlias(provider, "SHA512", PKCSObjectIdentifiers.id_hmacWithSHA512);