blob: 7da2e79bddfe5934c0db39306e848f391c0ee6f2 [file] [log] [blame]
Bouncy Castle on the Android platform.
---
The code in this directory is based on $BOUNCYCASTLE_VERSION in the
file bouncycastle.version. See patches/README for more information on
how the code differs from $BOUNCYCASTLE_VERSION.
Porting New Versions of Bouncy Castle.
--
The following steps are recommended for porting new Bouncy Castle versions.
1) Retrieve the appropriate version of the Bouncy Castle source from
www.bouncycastle.org/latest_releases.html (in bcprov-jdk*-*.tar.gz
file). Check the checksum (found at http://bouncycastle.org/checksums.html) with:
md5sum bcprov-jdk*-*.tar.gz
sha1sum bcprov-jdk*-*.tar.gz
2) Update the variables in bouncycastle.config and bouncycastle.version as appropriate.
At the very least you will need to update the bouncycastle.version.
Similarly update ThirdPartyProject.prop.
3) Run:
./import_bouncycastle.sh import bcprov-jdk*-*.tar.gz
4) If there are any errors, then modify bouncycastle.config, bouncycastle.version
and patches in patches/ as appropriate. You might want to use:
./import_bouncycastle.sh regenerate patches/*.patch
Repeat step 3.
5) Cleanup before building with:
m -j16 clean-bouncycastle
6) Build the bouncycastle target from the external/bouncycastle directory with:
mm -j16 snod && adb sync system
If there are build errors, then patches/*.mk or bouncycastle.config
may need updating.
7) Run tests to make sure things are working:
Some suggested tests by area:
- java.security.Provider
libcore/luni/src/test/java/libcore/java/security/ProviderTest.java
libcore/luni/src/test/java/org/apache/harmony/security/tests/java/security/ProviderTest.java
- java.security.AlgorithmParameterGenerator
libcore/luni/src/test/java/libcore/java/security/OldAlgorithmParameterGeneratorTest.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParameterGeneratorTestDH.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParameterGeneratorTestDSA.java
- java.security.AlgorithmParameters
libcore/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParametersTestDSA.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParametersTestAES.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParametersTestDH.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParametersTestDESede.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParametersTestDES.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/AlgorithmParametersTestOAEP.java
libcore/luni/src/test/java/org/apache/harmony/security/tests/java/security/AlgorithmParametersTest.java
- java.security.cert.CertPathBuilder
libcore/luni/src/test/java/tests/targets/security/cert/CertPathBuilderTestPKIX.java
- java.security.cert.CertPathValidator
libcore/luni/src/test/java/tests/targets/security/cert/CertPathValidatorTestPKIX.java
- java.security.cert.CertStore
libcore/luni/src/test/java/tests/security/cert/CertStoreSpiTest.java
libcore/luni/src/test/java/tests/security/cert/CertStore2Test.java
libcore/luni/src/test/java/tests/security/cert/CertStore1Test.java
libcore/luni/src/test/java/tests/security/cert/CertStoreExceptionTest.java
- java.security.cert.CertificateFactory
libcore/luni/src/test/java/libcore/java/security/cert/CertificateFactoryTest.java
libcore/luni/src/test/java/tests/targets/security/cert/CertificateFactoryTestX509.java
- javax.crypto.Cipher
libcore/luni/src/test/java/libcore/javax/crypto/CipherTest.java
libcore/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/CipherTest.java
libcore/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/NullCipherTest.java
- javax.crypto.KeyAgreement
libcore/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/KeyAgreementTest.java
- java.security.KeyFactory
libcore/luni/src/test/java/libcore/javax/crypto/spec/KeyFactoryTestDH.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/KeyFactoryTestDSA.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/KeyFactoryTestRSA.java
libcore/luni/src/test/java/org/apache/harmony/security/tests/java/security/KeyFactoryTest.java
- javax.crypto.KeyGenerator
libcore/luni/src/test/java/libcore/javax/crypto/KeyGeneratorTest.java
libcore/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/KeyGeneratorTest.java
- javax.net.ssl.KeyManagerFactory
libcore/luni/src/test/java/libcore/javax/net/ssl/KeyManagerFactoryTest.java
- java.security.KeyPairGenerator
libcore/luni/src/test/java/libcore/java/security/KeyPairGeneratorTest.java
libcore/luni/src/test/java/libcore/java/security/OldKeyPairGeneratorTestDH.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/KeyPairGeneratorTestRSA.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/KeyPairGeneratorTestDSA.java
libcore/luni/src/test/java/libcore/javax/crypto/spec/KeyPairGeneratorTestDH.java
libcore/luni/src/test/java/tests/security/interfaces/DSAKeyPairGeneratorTest.java
- java.security.KeyStore
libcore/luni/src/test/java/libcore/java/security/KeyStoreTest.java
libcore/luni/src/test/java/org/apache/harmony/security/tests/java/security/KeyStoreTest.java
libcore/luni/src/test/java/org/apache/harmony/security/tests/java/security/KeyStore2Test.java
- javax.crypto.Mac
libcore/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/MacTest.java
- java.security.MessageDigest
libcore/luni/src/test/java/libcore/java/security/MessageDigestTest.java
libcore/luni/src/test/java/tests/targets/security/MessageDigestTestMD2.java
libcore/luni/src/test/java/tests/targets/security/MessageDigestTestMD5.java
libcore/luni/src/test/java/tests/targets/security/MessageDigestTestSHA256.java
libcore/luni/src/test/java/tests/targets/security/MessageDigestTestSHA1.java
libcore/luni/src/test/java/tests/targets/security/MessageDigestTestSHA512.java
libcore/luni/src/test/java/tests/targets/security/MessageDigestTestSHA384.java
- javax.net.ssl.SSLContext
libcore/luni/src/test/java/libcore/javax/net/ssl/SSLContextTest.java
- javax.crypto.SecretKeyFactory
libcore/luni/src/test/java/libcore/javax/crypto/SecretKeyFactoryTest.java
libcore/luni/src/test/java/org/apache/harmony/crypto/tests/javax/crypto/SecretKeyFactoryTest.java
- java.security.SecureRandom
libcore/luni/src/test/java/libcore/java/security/SecureRandomTest.java
libcore/luni/src/test/java/tests/java/security/SecureRandomTest.java
libcore/luni/src/test/java/tests/targets/security/SecureRandomTestSHA1PRNG.java
- java.security.Signature
libcore/luni/src/test/java/libcore/java/security/SignatureTest.java
libcore/luni/src/test/java/org/apache/harmony/xnet/provider/jsse/OpenSSLSignatureTest.java
libcore/luni/src/test/java/org/apache/harmony/security/tests/java/security/SignatureTest.java
libcore/luni/src/test/java/tests/targets/security/SignatureTestMD2withRSA.java
- javax.net.ssl.TrustManagerFactory
libcore/luni/src/test/java/libcore/javax/net/ssl/TrustManagerFactoryTest.java
- javax.net.ssl.SSLSocket and javax.net.ssl.SSLEngine (which touch on Cipher, MessageDigest, Signature)
libcore/luni/src/test/java/libcore/javax/net/ssl/
- Test Android additions to bouncycastle such as org.bouncycastle.crypto.digests.OpenSSLDigest and org.bouncycastle.jce.provider.CertBlacklist
libcore/luni/src/test/java/com/android/org/bouncycastle/
8) Do a full build before checking in:
m -j16