From b95c93de59e358348aee31ab86caabefcda0f64b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Sun, 25 May 2014 22:52:38 -0400 Subject: [PATCH 01/20] restore symlink mistakenly deleted in 414c4e0c6768704fd5392a7db4c1fb38d9aab02f Looks like this symlink got mistakenly deleted. It is needed for eclipse and ant to find the zipsigner stuff. --- extern/ant-src/kellinwood | 1 + 1 file changed, 1 insertion(+) create mode 120000 extern/ant-src/kellinwood diff --git a/extern/ant-src/kellinwood b/extern/ant-src/kellinwood new file mode 120000 index 000000000..443258ed6 --- /dev/null +++ b/extern/ant-src/kellinwood @@ -0,0 +1 @@ +../zipsigner/src/main/java/kellinwood \ No newline at end of file From a688a029bfd1e335254c6c04d2381b447509dec8 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 May 2014 17:41:50 -0400 Subject: [PATCH 02/20] symlinks to build spongycastle with ant This is all the symlinks to build what FDroid needs from spongycastle using ant. The LDAP-related classes had to be removed because they depend on Java 7's javax.naming, which Android does not provide. FDroid does not need LDAP at all, so those classes can be entirely omitted. refs #2540 https://dev.guardianproject.info/issues/2540 refs #3380 https://dev.guardianproject.info/issues/3380 --- extern/ant-src/org/spongycastle/asn1 | 1 + extern/ant-src/org/spongycastle/cert | 1 + extern/ant-src/org/spongycastle/cms | 1 + extern/ant-src/org/spongycastle/crypto | 1 + extern/ant-src/org/spongycastle/dvcs | 1 + extern/ant-src/org/spongycastle/eac | 1 + extern/ant-src/org/spongycastle/i18n | 1 + extern/ant-src/org/spongycastle/jcajce | 1 + .../ant-src/org/spongycastle/jce/ECGOST3410NamedCurveTable.java | 1 + extern/ant-src/org/spongycastle/jce/ECKeyUtil.java | 1 + extern/ant-src/org/spongycastle/jce/ECNamedCurveTable.java | 1 + extern/ant-src/org/spongycastle/jce/ECPointUtil.java | 1 + .../ant-src/org/spongycastle/jce/MultiCertStoreParameters.java | 1 + .../ant-src/org/spongycastle/jce/PKCS10CertificationRequest.java | 1 + extern/ant-src/org/spongycastle/jce/PKCS12Util.java | 1 + extern/ant-src/org/spongycastle/jce/PrincipalUtil.java | 1 + extern/ant-src/org/spongycastle/jce/X509KeyUsage.java | 1 + .../org/spongycastle/jce/X509LDAPCertStoreParameters.java | 1 + extern/ant-src/org/spongycastle/jce/X509Principal.java | 1 + extern/ant-src/org/spongycastle/jce/examples | 1 + extern/ant-src/org/spongycastle/jce/exception | 1 + extern/ant-src/org/spongycastle/jce/interfaces | 1 + extern/ant-src/org/spongycastle/jce/netscape | 1 + .../org/spongycastle/jce/provider/AnnotatedException.java | 1 + .../org/spongycastle/jce/provider/BouncyCastleProvider.java | 1 + .../jce/provider/BouncyCastleProviderConfiguration.java | 1 + .../org/spongycastle/jce/provider/BrokenJCEBlockCipher.java | 1 + .../org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java | 1 + extern/ant-src/org/spongycastle/jce/provider/BrokenPBE.java | 1 + .../spongycastle/jce/provider/CertPathValidatorUtilities.java | 1 + extern/ant-src/org/spongycastle/jce/provider/CertStatus.java | 1 + .../org/spongycastle/jce/provider/CertStoreCollectionSpi.java | 1 + extern/ant-src/org/spongycastle/jce/provider/DHUtil.java | 1 + .../ant-src/org/spongycastle/jce/provider/ExtCRLException.java | 1 + .../ant-src/org/spongycastle/jce/provider/JCEDHPrivateKey.java | 1 + extern/ant-src/org/spongycastle/jce/provider/JCEDHPublicKey.java | 1 + .../ant-src/org/spongycastle/jce/provider/JCEECPrivateKey.java | 1 + extern/ant-src/org/spongycastle/jce/provider/JCEECPublicKey.java | 1 + .../org/spongycastle/jce/provider/JCEElGamalPrivateKey.java | 1 + .../org/spongycastle/jce/provider/JCEElGamalPublicKey.java | 1 + .../org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java | 1 + .../ant-src/org/spongycastle/jce/provider/JCERSAPrivateKey.java | 1 + .../ant-src/org/spongycastle/jce/provider/JCERSAPublicKey.java | 1 + .../ant-src/org/spongycastle/jce/provider/JCEStreamCipher.java | 1 + .../ant-src/org/spongycastle/jce/provider/JDKDSAPrivateKey.java | 1 + .../ant-src/org/spongycastle/jce/provider/JDKDSAPublicKey.java | 1 + .../org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java | 1 + .../ant-src/org/spongycastle/jce/provider/MultiCertStoreSpi.java | 1 + extern/ant-src/org/spongycastle/jce/provider/PEMUtil.java | 1 + .../spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java | 1 + .../spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java | 1 + extern/ant-src/org/spongycastle/jce/provider/PKIXCRLUtil.java | 1 + .../org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java | 1 + .../org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java | 1 + .../spongycastle/jce/provider/PKIXNameConstraintValidator.java | 1 + .../jce/provider/PKIXNameConstraintValidatorException.java | 1 + extern/ant-src/org/spongycastle/jce/provider/PKIXPolicyNode.java | 1 + .../org/spongycastle/jce/provider/RFC3280CertPathUtilities.java | 1 + .../org/spongycastle/jce/provider/RFC3281CertPathUtilities.java | 1 + extern/ant-src/org/spongycastle/jce/provider/ReasonsMask.java | 1 + .../org/spongycastle/jce/provider/X509AttrCertParser.java | 1 + .../org/spongycastle/jce/provider/X509CRLEntryObject.java | 1 + extern/ant-src/org/spongycastle/jce/provider/X509CRLObject.java | 1 + extern/ant-src/org/spongycastle/jce/provider/X509CRLParser.java | 1 + .../org/spongycastle/jce/provider/X509CertPairParser.java | 1 + extern/ant-src/org/spongycastle/jce/provider/X509CertParser.java | 1 + .../org/spongycastle/jce/provider/X509CertificateObject.java | 1 + .../ant-src/org/spongycastle/jce/provider/X509SignatureUtil.java | 1 + .../spongycastle/jce/provider/X509StoreAttrCertCollection.java | 1 + .../org/spongycastle/jce/provider/X509StoreCRLCollection.java | 1 + .../org/spongycastle/jce/provider/X509StoreCertCollection.java | 1 + .../spongycastle/jce/provider/X509StoreCertPairCollection.java | 1 + extern/ant-src/org/spongycastle/jce/spec | 1 + extern/ant-src/org/spongycastle/math | 1 + extern/ant-src/org/spongycastle/mozilla | 1 + extern/ant-src/org/spongycastle/ocsp | 1 + extern/ant-src/org/spongycastle/openssl | 1 + extern/ant-src/org/spongycastle/operator | 1 + extern/ant-src/org/spongycastle/pkcs | 1 + extern/ant-src/org/spongycastle/pqc/asn1 | 1 + extern/ant-src/org/spongycastle/pqc/crypto | 1 + extern/ant-src/org/spongycastle/pqc/jcajce | 1 + extern/ant-src/org/spongycastle/pqc/math | 1 + extern/ant-src/org/spongycastle/tsp | 1 + extern/ant-src/org/spongycastle/util | 1 + extern/ant-src/org/spongycastle/voms | 1 + .../org/spongycastle/x509/AttributeCertificateHolder.java | 1 + .../org/spongycastle/x509/AttributeCertificateIssuer.java | 1 + .../ant-src/org/spongycastle/x509/CertPathReviewerException.java | 1 + .../org/spongycastle/x509/ExtCertificateEncodingException.java | 1 + .../org/spongycastle/x509/ExtendedPKIXBuilderParameters.java | 1 + extern/ant-src/org/spongycastle/x509/ExtendedPKIXParameters.java | 1 + extern/ant-src/org/spongycastle/x509/NoSuchParserException.java | 1 + extern/ant-src/org/spongycastle/x509/NoSuchStoreException.java | 1 + extern/ant-src/org/spongycastle/x509/PKIXAttrCertChecker.java | 1 + extern/ant-src/org/spongycastle/x509/PKIXCertPathReviewer.java | 1 + extern/ant-src/org/spongycastle/x509/X509Attribute.java | 1 + .../org/spongycastle/x509/X509AttributeCertStoreSelector.java | 1 + .../ant-src/org/spongycastle/x509/X509AttributeCertificate.java | 1 + extern/ant-src/org/spongycastle/x509/X509CRLStoreSelector.java | 1 + .../ant-src/org/spongycastle/x509/X509CertPairStoreSelector.java | 1 + extern/ant-src/org/spongycastle/x509/X509CertStoreSelector.java | 1 + extern/ant-src/org/spongycastle/x509/X509CertificatePair.java | 1 + .../org/spongycastle/x509/X509CollectionStoreParameters.java | 1 + extern/ant-src/org/spongycastle/x509/X509Store.java | 1 + extern/ant-src/org/spongycastle/x509/X509StoreParameters.java | 1 + extern/ant-src/org/spongycastle/x509/X509StoreSpi.java | 1 + extern/ant-src/org/spongycastle/x509/X509StreamParser.java | 1 + extern/ant-src/org/spongycastle/x509/X509StreamParserSpi.java | 1 + extern/ant-src/org/spongycastle/x509/X509Util.java | 1 + .../org/spongycastle/x509/X509V1CertificateGenerator.java | 1 + .../org/spongycastle/x509/X509V2AttributeCertificate.java | 1 + .../spongycastle/x509/X509V2AttributeCertificateGenerator.java | 1 + extern/ant-src/org/spongycastle/x509/X509V2CRLGenerator.java | 1 + .../org/spongycastle/x509/X509V3CertificateGenerator.java | 1 + extern/ant-src/org/spongycastle/x509/examples | 1 + extern/ant-src/org/spongycastle/x509/extension | 1 + extern/ant-src/org/spongycastle/x509/util/StreamParser.java | 1 + .../org/spongycastle/x509/util/StreamParsingException.java | 1 + 119 files changed, 119 insertions(+) create mode 120000 extern/ant-src/org/spongycastle/asn1 create mode 120000 extern/ant-src/org/spongycastle/cert create mode 120000 extern/ant-src/org/spongycastle/cms create mode 120000 extern/ant-src/org/spongycastle/crypto create mode 120000 extern/ant-src/org/spongycastle/dvcs create mode 120000 extern/ant-src/org/spongycastle/eac create mode 120000 extern/ant-src/org/spongycastle/i18n create mode 120000 extern/ant-src/org/spongycastle/jcajce create mode 120000 extern/ant-src/org/spongycastle/jce/ECGOST3410NamedCurveTable.java create mode 120000 extern/ant-src/org/spongycastle/jce/ECKeyUtil.java create mode 120000 extern/ant-src/org/spongycastle/jce/ECNamedCurveTable.java create mode 120000 extern/ant-src/org/spongycastle/jce/ECPointUtil.java create mode 120000 extern/ant-src/org/spongycastle/jce/MultiCertStoreParameters.java create mode 120000 extern/ant-src/org/spongycastle/jce/PKCS10CertificationRequest.java create mode 120000 extern/ant-src/org/spongycastle/jce/PKCS12Util.java create mode 120000 extern/ant-src/org/spongycastle/jce/PrincipalUtil.java create mode 120000 extern/ant-src/org/spongycastle/jce/X509KeyUsage.java create mode 120000 extern/ant-src/org/spongycastle/jce/X509LDAPCertStoreParameters.java create mode 120000 extern/ant-src/org/spongycastle/jce/X509Principal.java create mode 120000 extern/ant-src/org/spongycastle/jce/examples create mode 120000 extern/ant-src/org/spongycastle/jce/exception create mode 120000 extern/ant-src/org/spongycastle/jce/interfaces create mode 120000 extern/ant-src/org/spongycastle/jce/netscape create mode 120000 extern/ant-src/org/spongycastle/jce/provider/AnnotatedException.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProvider.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/BrokenPBE.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/CertPathValidatorUtilities.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/CertStatus.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/CertStoreCollectionSpi.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/DHUtil.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/ExtCRLException.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JCEDHPrivateKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JCEDHPublicKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JCEECPrivateKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JCEECPublicKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPublicKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JCERSAPublicKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JCEStreamCipher.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JDKDSAPrivateKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JDKDSAPublicKey.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/MultiCertStoreSpi.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/PEMUtil.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/PKIXCRLUtil.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/PKIXPolicyNode.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/ReasonsMask.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509AttrCertParser.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509CRLEntryObject.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509CRLObject.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509CRLParser.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509CertPairParser.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509CertParser.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509CertificateObject.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509SignatureUtil.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509StoreCRLCollection.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509StoreCertCollection.java create mode 120000 extern/ant-src/org/spongycastle/jce/provider/X509StoreCertPairCollection.java create mode 120000 extern/ant-src/org/spongycastle/jce/spec create mode 120000 extern/ant-src/org/spongycastle/math create mode 120000 extern/ant-src/org/spongycastle/mozilla create mode 120000 extern/ant-src/org/spongycastle/ocsp create mode 120000 extern/ant-src/org/spongycastle/openssl create mode 120000 extern/ant-src/org/spongycastle/operator create mode 120000 extern/ant-src/org/spongycastle/pkcs create mode 120000 extern/ant-src/org/spongycastle/pqc/asn1 create mode 120000 extern/ant-src/org/spongycastle/pqc/crypto create mode 120000 extern/ant-src/org/spongycastle/pqc/jcajce create mode 120000 extern/ant-src/org/spongycastle/pqc/math create mode 120000 extern/ant-src/org/spongycastle/tsp create mode 120000 extern/ant-src/org/spongycastle/util create mode 120000 extern/ant-src/org/spongycastle/voms create mode 120000 extern/ant-src/org/spongycastle/x509/AttributeCertificateHolder.java create mode 120000 extern/ant-src/org/spongycastle/x509/AttributeCertificateIssuer.java create mode 120000 extern/ant-src/org/spongycastle/x509/CertPathReviewerException.java create mode 120000 extern/ant-src/org/spongycastle/x509/ExtCertificateEncodingException.java create mode 120000 extern/ant-src/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java create mode 120000 extern/ant-src/org/spongycastle/x509/ExtendedPKIXParameters.java create mode 120000 extern/ant-src/org/spongycastle/x509/NoSuchParserException.java create mode 120000 extern/ant-src/org/spongycastle/x509/NoSuchStoreException.java create mode 120000 extern/ant-src/org/spongycastle/x509/PKIXAttrCertChecker.java create mode 120000 extern/ant-src/org/spongycastle/x509/PKIXCertPathReviewer.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509Attribute.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509AttributeCertStoreSelector.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509AttributeCertificate.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509CRLStoreSelector.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509CertPairStoreSelector.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509CertStoreSelector.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509CertificatePair.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509CollectionStoreParameters.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509Store.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509StoreParameters.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509StoreSpi.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509StreamParser.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509StreamParserSpi.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509Util.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509V1CertificateGenerator.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificate.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509V2CRLGenerator.java create mode 120000 extern/ant-src/org/spongycastle/x509/X509V3CertificateGenerator.java create mode 120000 extern/ant-src/org/spongycastle/x509/examples create mode 120000 extern/ant-src/org/spongycastle/x509/extension create mode 120000 extern/ant-src/org/spongycastle/x509/util/StreamParser.java create mode 120000 extern/ant-src/org/spongycastle/x509/util/StreamParsingException.java diff --git a/extern/ant-src/org/spongycastle/asn1 b/extern/ant-src/org/spongycastle/asn1 new file mode 120000 index 000000000..f86b446de --- /dev/null +++ b/extern/ant-src/org/spongycastle/asn1 @@ -0,0 +1 @@ +../../../spongycastle/core/src/main/java/org/spongycastle/asn1 \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/cert b/extern/ant-src/org/spongycastle/cert new file mode 120000 index 000000000..72ff90805 --- /dev/null +++ b/extern/ant-src/org/spongycastle/cert @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/cert \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/cms b/extern/ant-src/org/spongycastle/cms new file mode 120000 index 000000000..d5222f6c5 --- /dev/null +++ b/extern/ant-src/org/spongycastle/cms @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/cms \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/crypto b/extern/ant-src/org/spongycastle/crypto new file mode 120000 index 000000000..73c1163b2 --- /dev/null +++ b/extern/ant-src/org/spongycastle/crypto @@ -0,0 +1 @@ +../../../spongycastle/core/src/main/java/org/spongycastle/crypto \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/dvcs b/extern/ant-src/org/spongycastle/dvcs new file mode 120000 index 000000000..adf252aca --- /dev/null +++ b/extern/ant-src/org/spongycastle/dvcs @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/dvcs \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/eac b/extern/ant-src/org/spongycastle/eac new file mode 120000 index 000000000..ea70100c6 --- /dev/null +++ b/extern/ant-src/org/spongycastle/eac @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/eac \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/i18n b/extern/ant-src/org/spongycastle/i18n new file mode 120000 index 000000000..af504fb4a --- /dev/null +++ b/extern/ant-src/org/spongycastle/i18n @@ -0,0 +1 @@ +../../../spongycastle/core/src/main/java/org/spongycastle/i18n \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jcajce b/extern/ant-src/org/spongycastle/jcajce new file mode 120000 index 000000000..aeb7c4c59 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jcajce @@ -0,0 +1 @@ +../../../spongycastle/prov/src/main/java/org/spongycastle/jcajce \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/ECGOST3410NamedCurveTable.java b/extern/ant-src/org/spongycastle/jce/ECGOST3410NamedCurveTable.java new file mode 120000 index 000000000..85a167493 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/ECGOST3410NamedCurveTable.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/ECGOST3410NamedCurveTable.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/ECKeyUtil.java b/extern/ant-src/org/spongycastle/jce/ECKeyUtil.java new file mode 120000 index 000000000..247a8b7a5 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/ECKeyUtil.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/ECKeyUtil.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/ECNamedCurveTable.java b/extern/ant-src/org/spongycastle/jce/ECNamedCurveTable.java new file mode 120000 index 000000000..1c70aaf03 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/ECNamedCurveTable.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/ECNamedCurveTable.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/ECPointUtil.java b/extern/ant-src/org/spongycastle/jce/ECPointUtil.java new file mode 120000 index 000000000..4ee1c0b51 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/ECPointUtil.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/ECPointUtil.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/MultiCertStoreParameters.java b/extern/ant-src/org/spongycastle/jce/MultiCertStoreParameters.java new file mode 120000 index 000000000..82e03628a --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/MultiCertStoreParameters.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/MultiCertStoreParameters.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/PKCS10CertificationRequest.java b/extern/ant-src/org/spongycastle/jce/PKCS10CertificationRequest.java new file mode 120000 index 000000000..595c7b9fa --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/PKCS10CertificationRequest.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/PKCS10CertificationRequest.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/PKCS12Util.java b/extern/ant-src/org/spongycastle/jce/PKCS12Util.java new file mode 120000 index 000000000..1c65f4081 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/PKCS12Util.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/PKCS12Util.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/PrincipalUtil.java b/extern/ant-src/org/spongycastle/jce/PrincipalUtil.java new file mode 120000 index 000000000..a6352af2e --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/PrincipalUtil.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/PrincipalUtil.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/X509KeyUsage.java b/extern/ant-src/org/spongycastle/jce/X509KeyUsage.java new file mode 120000 index 000000000..6f7a30366 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/X509KeyUsage.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/X509KeyUsage.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/X509LDAPCertStoreParameters.java b/extern/ant-src/org/spongycastle/jce/X509LDAPCertStoreParameters.java new file mode 120000 index 000000000..69b78a6bc --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/X509LDAPCertStoreParameters.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/X509LDAPCertStoreParameters.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/X509Principal.java b/extern/ant-src/org/spongycastle/jce/X509Principal.java new file mode 120000 index 000000000..9e93b34ee --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/X509Principal.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/X509Principal.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/examples b/extern/ant-src/org/spongycastle/jce/examples new file mode 120000 index 000000000..8803907ec --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/examples @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/examples \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/exception b/extern/ant-src/org/spongycastle/jce/exception new file mode 120000 index 000000000..18723f8d3 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/exception @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/exception \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/interfaces b/extern/ant-src/org/spongycastle/jce/interfaces new file mode 120000 index 000000000..2e12d5422 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/interfaces @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/interfaces \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/netscape b/extern/ant-src/org/spongycastle/jce/netscape new file mode 120000 index 000000000..119c75f17 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/netscape @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/netscape \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/AnnotatedException.java b/extern/ant-src/org/spongycastle/jce/provider/AnnotatedException.java new file mode 120000 index 000000000..a17cc1a5b --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/AnnotatedException.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/AnnotatedException.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProvider.java b/extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProvider.java new file mode 120000 index 000000000..19b9993ff --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProvider.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/BouncyCastleProvider.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java b/extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java new file mode 120000 index 000000000..6186311d7 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java b/extern/ant-src/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java new file mode 120000 index 000000000..80ab322c4 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java b/extern/ant-src/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java new file mode 120000 index 000000000..ed461e38a --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/BrokenPBE.java b/extern/ant-src/org/spongycastle/jce/provider/BrokenPBE.java new file mode 120000 index 000000000..dedf6d02d --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/BrokenPBE.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/BrokenPBE.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/CertPathValidatorUtilities.java b/extern/ant-src/org/spongycastle/jce/provider/CertPathValidatorUtilities.java new file mode 120000 index 000000000..0b15e047f --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/CertPathValidatorUtilities.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/CertPathValidatorUtilities.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/CertStatus.java b/extern/ant-src/org/spongycastle/jce/provider/CertStatus.java new file mode 120000 index 000000000..0f700b517 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/CertStatus.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/CertStatus.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/CertStoreCollectionSpi.java b/extern/ant-src/org/spongycastle/jce/provider/CertStoreCollectionSpi.java new file mode 120000 index 000000000..d57bc96c2 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/CertStoreCollectionSpi.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/CertStoreCollectionSpi.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/DHUtil.java b/extern/ant-src/org/spongycastle/jce/provider/DHUtil.java new file mode 120000 index 000000000..0a5db15e8 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/DHUtil.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/DHUtil.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/ExtCRLException.java b/extern/ant-src/org/spongycastle/jce/provider/ExtCRLException.java new file mode 120000 index 000000000..9e8263158 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/ExtCRLException.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/ExtCRLException.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEDHPrivateKey.java b/extern/ant-src/org/spongycastle/jce/provider/JCEDHPrivateKey.java new file mode 120000 index 000000000..03684ee5e --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JCEDHPrivateKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JCEDHPrivateKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEDHPublicKey.java b/extern/ant-src/org/spongycastle/jce/provider/JCEDHPublicKey.java new file mode 120000 index 000000000..9803a0249 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JCEDHPublicKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JCEDHPublicKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEECPrivateKey.java b/extern/ant-src/org/spongycastle/jce/provider/JCEECPrivateKey.java new file mode 120000 index 000000000..7e16440c1 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JCEECPrivateKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JCEECPrivateKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEECPublicKey.java b/extern/ant-src/org/spongycastle/jce/provider/JCEECPublicKey.java new file mode 120000 index 000000000..90f4a70c7 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JCEECPublicKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JCEECPublicKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java b/extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java new file mode 120000 index 000000000..84866b855 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPublicKey.java b/extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPublicKey.java new file mode 120000 index 000000000..f7291294d --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPublicKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JCEElGamalPublicKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java b/extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java new file mode 120000 index 000000000..ebebdb693 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateKey.java b/extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateKey.java new file mode 120000 index 000000000..06ae733fc --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JCERSAPrivateKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCERSAPublicKey.java b/extern/ant-src/org/spongycastle/jce/provider/JCERSAPublicKey.java new file mode 120000 index 000000000..fe29ccd3d --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JCERSAPublicKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JCERSAPublicKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEStreamCipher.java b/extern/ant-src/org/spongycastle/jce/provider/JCEStreamCipher.java new file mode 120000 index 000000000..a72744fd9 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JCEStreamCipher.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JCEStreamCipher.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JDKDSAPrivateKey.java b/extern/ant-src/org/spongycastle/jce/provider/JDKDSAPrivateKey.java new file mode 120000 index 000000000..9c81bd9d6 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JDKDSAPrivateKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JDKDSAPrivateKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JDKDSAPublicKey.java b/extern/ant-src/org/spongycastle/jce/provider/JDKDSAPublicKey.java new file mode 120000 index 000000000..d7f2b4792 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JDKDSAPublicKey.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JDKDSAPublicKey.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java b/extern/ant-src/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java new file mode 120000 index 000000000..75e6cf659 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/MultiCertStoreSpi.java b/extern/ant-src/org/spongycastle/jce/provider/MultiCertStoreSpi.java new file mode 120000 index 000000000..e37877c27 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/MultiCertStoreSpi.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/MultiCertStoreSpi.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/PEMUtil.java b/extern/ant-src/org/spongycastle/jce/provider/PEMUtil.java new file mode 120000 index 000000000..a8d3b6b50 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/PEMUtil.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/PEMUtil.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java b/extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java new file mode 120000 index 000000000..d25de9aa8 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java b/extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java new file mode 120000 index 000000000..bcf9c6677 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXCRLUtil.java b/extern/ant-src/org/spongycastle/jce/provider/PKIXCRLUtil.java new file mode 120000 index 000000000..b15fdd33e --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/PKIXCRLUtil.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/PKIXCRLUtil.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java b/extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java new file mode 120000 index 000000000..389434741 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java b/extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java new file mode 120000 index 000000000..dbab12bb9 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java b/extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java new file mode 120000 index 000000000..870e97815 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java b/extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java new file mode 120000 index 000000000..b2b022602 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXPolicyNode.java b/extern/ant-src/org/spongycastle/jce/provider/PKIXPolicyNode.java new file mode 120000 index 000000000..f135d82f9 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/PKIXPolicyNode.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/PKIXPolicyNode.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java b/extern/ant-src/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java new file mode 120000 index 000000000..b1545f960 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java b/extern/ant-src/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java new file mode 120000 index 000000000..9bf137403 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/ReasonsMask.java b/extern/ant-src/org/spongycastle/jce/provider/ReasonsMask.java new file mode 120000 index 000000000..69ea8ebf5 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/ReasonsMask.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/ReasonsMask.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509AttrCertParser.java b/extern/ant-src/org/spongycastle/jce/provider/X509AttrCertParser.java new file mode 120000 index 000000000..af1537def --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509AttrCertParser.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509AttrCertParser.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CRLEntryObject.java b/extern/ant-src/org/spongycastle/jce/provider/X509CRLEntryObject.java new file mode 120000 index 000000000..e5b5192ec --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509CRLEntryObject.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509CRLEntryObject.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CRLObject.java b/extern/ant-src/org/spongycastle/jce/provider/X509CRLObject.java new file mode 120000 index 000000000..9f6d01eb2 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509CRLObject.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509CRLObject.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CRLParser.java b/extern/ant-src/org/spongycastle/jce/provider/X509CRLParser.java new file mode 120000 index 000000000..9ae15edbe --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509CRLParser.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509CRLParser.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CertPairParser.java b/extern/ant-src/org/spongycastle/jce/provider/X509CertPairParser.java new file mode 120000 index 000000000..b5b0129a3 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509CertPairParser.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509CertPairParser.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CertParser.java b/extern/ant-src/org/spongycastle/jce/provider/X509CertParser.java new file mode 120000 index 000000000..98fed98e6 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509CertParser.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509CertParser.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CertificateObject.java b/extern/ant-src/org/spongycastle/jce/provider/X509CertificateObject.java new file mode 120000 index 000000000..21e2f213c --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509CertificateObject.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509CertificateObject.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509SignatureUtil.java b/extern/ant-src/org/spongycastle/jce/provider/X509SignatureUtil.java new file mode 120000 index 000000000..b89b84852 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509SignatureUtil.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509SignatureUtil.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java b/extern/ant-src/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java new file mode 120000 index 000000000..f7b93deab --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509StoreCRLCollection.java b/extern/ant-src/org/spongycastle/jce/provider/X509StoreCRLCollection.java new file mode 120000 index 000000000..c3b1afe9f --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509StoreCRLCollection.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509StoreCRLCollection.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509StoreCertCollection.java b/extern/ant-src/org/spongycastle/jce/provider/X509StoreCertCollection.java new file mode 120000 index 000000000..66ee054e2 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509StoreCertCollection.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509StoreCertCollection.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509StoreCertPairCollection.java b/extern/ant-src/org/spongycastle/jce/provider/X509StoreCertPairCollection.java new file mode 120000 index 000000000..3821264c3 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/provider/X509StoreCertPairCollection.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/provider/X509StoreCertPairCollection.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/jce/spec b/extern/ant-src/org/spongycastle/jce/spec new file mode 120000 index 000000000..a57149cc8 --- /dev/null +++ b/extern/ant-src/org/spongycastle/jce/spec @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/spec \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/math b/extern/ant-src/org/spongycastle/math new file mode 120000 index 000000000..879523869 --- /dev/null +++ b/extern/ant-src/org/spongycastle/math @@ -0,0 +1 @@ +../../../spongycastle/core/src/main/java/org/spongycastle/math \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/mozilla b/extern/ant-src/org/spongycastle/mozilla new file mode 120000 index 000000000..023e32f6e --- /dev/null +++ b/extern/ant-src/org/spongycastle/mozilla @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/mozilla \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/ocsp b/extern/ant-src/org/spongycastle/ocsp new file mode 120000 index 000000000..43c075220 --- /dev/null +++ b/extern/ant-src/org/spongycastle/ocsp @@ -0,0 +1 @@ +../../../spongycastle/prov/src/main/java/org/spongycastle/ocsp \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/openssl b/extern/ant-src/org/spongycastle/openssl new file mode 120000 index 000000000..a61b58700 --- /dev/null +++ b/extern/ant-src/org/spongycastle/openssl @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/openssl \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/operator b/extern/ant-src/org/spongycastle/operator new file mode 120000 index 000000000..7307766ea --- /dev/null +++ b/extern/ant-src/org/spongycastle/operator @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/operator \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/pkcs b/extern/ant-src/org/spongycastle/pkcs new file mode 120000 index 000000000..20235a46a --- /dev/null +++ b/extern/ant-src/org/spongycastle/pkcs @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/pkcs \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/pqc/asn1 b/extern/ant-src/org/spongycastle/pqc/asn1 new file mode 120000 index 000000000..882f32de4 --- /dev/null +++ b/extern/ant-src/org/spongycastle/pqc/asn1 @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/pqc/asn1 \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/pqc/crypto b/extern/ant-src/org/spongycastle/pqc/crypto new file mode 120000 index 000000000..f68dc7d37 --- /dev/null +++ b/extern/ant-src/org/spongycastle/pqc/crypto @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/pqc/crypto \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/pqc/jcajce b/extern/ant-src/org/spongycastle/pqc/jcajce new file mode 120000 index 000000000..f7ee4db36 --- /dev/null +++ b/extern/ant-src/org/spongycastle/pqc/jcajce @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/pqc/jcajce \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/pqc/math b/extern/ant-src/org/spongycastle/pqc/math new file mode 120000 index 000000000..c54bddb65 --- /dev/null +++ b/extern/ant-src/org/spongycastle/pqc/math @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/pqc/math \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/tsp b/extern/ant-src/org/spongycastle/tsp new file mode 120000 index 000000000..5a96b7496 --- /dev/null +++ b/extern/ant-src/org/spongycastle/tsp @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/tsp \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/util b/extern/ant-src/org/spongycastle/util new file mode 120000 index 000000000..26566a804 --- /dev/null +++ b/extern/ant-src/org/spongycastle/util @@ -0,0 +1 @@ +../../../spongycastle/core/src/main/java/org/spongycastle/util \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/voms b/extern/ant-src/org/spongycastle/voms new file mode 120000 index 000000000..977548424 --- /dev/null +++ b/extern/ant-src/org/spongycastle/voms @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/voms \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/AttributeCertificateHolder.java b/extern/ant-src/org/spongycastle/x509/AttributeCertificateHolder.java new file mode 120000 index 000000000..449cbc84c --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/AttributeCertificateHolder.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/AttributeCertificateHolder.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/AttributeCertificateIssuer.java b/extern/ant-src/org/spongycastle/x509/AttributeCertificateIssuer.java new file mode 120000 index 000000000..e95b91120 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/AttributeCertificateIssuer.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/AttributeCertificateIssuer.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/CertPathReviewerException.java b/extern/ant-src/org/spongycastle/x509/CertPathReviewerException.java new file mode 120000 index 000000000..328857ece --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/CertPathReviewerException.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/CertPathReviewerException.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/ExtCertificateEncodingException.java b/extern/ant-src/org/spongycastle/x509/ExtCertificateEncodingException.java new file mode 120000 index 000000000..a4ebd94d6 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/ExtCertificateEncodingException.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/ExtCertificateEncodingException.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java b/extern/ant-src/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java new file mode 120000 index 000000000..91138abcd --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/ExtendedPKIXParameters.java b/extern/ant-src/org/spongycastle/x509/ExtendedPKIXParameters.java new file mode 120000 index 000000000..8e8b5d3a5 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/ExtendedPKIXParameters.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/ExtendedPKIXParameters.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/NoSuchParserException.java b/extern/ant-src/org/spongycastle/x509/NoSuchParserException.java new file mode 120000 index 000000000..5f1d75cc8 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/NoSuchParserException.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/NoSuchParserException.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/NoSuchStoreException.java b/extern/ant-src/org/spongycastle/x509/NoSuchStoreException.java new file mode 120000 index 000000000..c30100a98 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/NoSuchStoreException.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/NoSuchStoreException.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/PKIXAttrCertChecker.java b/extern/ant-src/org/spongycastle/x509/PKIXAttrCertChecker.java new file mode 120000 index 000000000..f756fae9f --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/PKIXAttrCertChecker.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/PKIXAttrCertChecker.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/PKIXCertPathReviewer.java b/extern/ant-src/org/spongycastle/x509/PKIXCertPathReviewer.java new file mode 120000 index 000000000..4dde00db4 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/PKIXCertPathReviewer.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/PKIXCertPathReviewer.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509Attribute.java b/extern/ant-src/org/spongycastle/x509/X509Attribute.java new file mode 120000 index 000000000..00d7d88b2 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509Attribute.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509Attribute.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509AttributeCertStoreSelector.java b/extern/ant-src/org/spongycastle/x509/X509AttributeCertStoreSelector.java new file mode 120000 index 000000000..2325963d3 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509AttributeCertStoreSelector.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509AttributeCertStoreSelector.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509AttributeCertificate.java b/extern/ant-src/org/spongycastle/x509/X509AttributeCertificate.java new file mode 120000 index 000000000..d7c7d4487 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509AttributeCertificate.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509AttributeCertificate.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509CRLStoreSelector.java b/extern/ant-src/org/spongycastle/x509/X509CRLStoreSelector.java new file mode 120000 index 000000000..f89602f11 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509CRLStoreSelector.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509CRLStoreSelector.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509CertPairStoreSelector.java b/extern/ant-src/org/spongycastle/x509/X509CertPairStoreSelector.java new file mode 120000 index 000000000..2ab1dc1f8 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509CertPairStoreSelector.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509CertPairStoreSelector.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509CertStoreSelector.java b/extern/ant-src/org/spongycastle/x509/X509CertStoreSelector.java new file mode 120000 index 000000000..32e539801 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509CertStoreSelector.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509CertStoreSelector.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509CertificatePair.java b/extern/ant-src/org/spongycastle/x509/X509CertificatePair.java new file mode 120000 index 000000000..f77f16468 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509CertificatePair.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509CertificatePair.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509CollectionStoreParameters.java b/extern/ant-src/org/spongycastle/x509/X509CollectionStoreParameters.java new file mode 120000 index 000000000..06f1e6e1b --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509CollectionStoreParameters.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509CollectionStoreParameters.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509Store.java b/extern/ant-src/org/spongycastle/x509/X509Store.java new file mode 120000 index 000000000..c6b2546ec --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509Store.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509Store.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509StoreParameters.java b/extern/ant-src/org/spongycastle/x509/X509StoreParameters.java new file mode 120000 index 000000000..d88eba314 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509StoreParameters.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509StoreParameters.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509StoreSpi.java b/extern/ant-src/org/spongycastle/x509/X509StoreSpi.java new file mode 120000 index 000000000..bec53a9d6 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509StoreSpi.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509StoreSpi.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509StreamParser.java b/extern/ant-src/org/spongycastle/x509/X509StreamParser.java new file mode 120000 index 000000000..6434dae4a --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509StreamParser.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509StreamParser.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509StreamParserSpi.java b/extern/ant-src/org/spongycastle/x509/X509StreamParserSpi.java new file mode 120000 index 000000000..9826a7183 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509StreamParserSpi.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509StreamParserSpi.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509Util.java b/extern/ant-src/org/spongycastle/x509/X509Util.java new file mode 120000 index 000000000..e5ce6324b --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509Util.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509Util.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509V1CertificateGenerator.java b/extern/ant-src/org/spongycastle/x509/X509V1CertificateGenerator.java new file mode 120000 index 000000000..0f9c09f01 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509V1CertificateGenerator.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509V1CertificateGenerator.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificate.java b/extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificate.java new file mode 120000 index 000000000..4189c2d78 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificate.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509V2AttributeCertificate.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java b/extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java new file mode 120000 index 000000000..1179a0fd8 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509V2CRLGenerator.java b/extern/ant-src/org/spongycastle/x509/X509V2CRLGenerator.java new file mode 120000 index 000000000..494902bd6 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509V2CRLGenerator.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509V2CRLGenerator.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/X509V3CertificateGenerator.java b/extern/ant-src/org/spongycastle/x509/X509V3CertificateGenerator.java new file mode 120000 index 000000000..a53b0b38b --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/X509V3CertificateGenerator.java @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/X509V3CertificateGenerator.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/examples b/extern/ant-src/org/spongycastle/x509/examples new file mode 120000 index 000000000..db4a94629 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/examples @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/examples \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/extension b/extern/ant-src/org/spongycastle/x509/extension new file mode 120000 index 000000000..493af5f83 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/extension @@ -0,0 +1 @@ +../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/extension \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/util/StreamParser.java b/extern/ant-src/org/spongycastle/x509/util/StreamParser.java new file mode 120000 index 000000000..c92a26626 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/util/StreamParser.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/util/StreamParser.java \ No newline at end of file diff --git a/extern/ant-src/org/spongycastle/x509/util/StreamParsingException.java b/extern/ant-src/org/spongycastle/x509/util/StreamParsingException.java new file mode 120000 index 000000000..2f2fa9862 --- /dev/null +++ b/extern/ant-src/org/spongycastle/x509/util/StreamParsingException.java @@ -0,0 +1 @@ +../../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/util/StreamParsingException.java \ No newline at end of file From ed829fcfd6e61e5b08617f083cbf2c1d3302c8c7 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 May 2014 17:45:05 -0400 Subject: [PATCH 03/20] make Eclipse use extern/ant-src Eclipse can use the same symlink hack as ant, and they will both be happily in sync. --- .classpath | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.classpath b/.classpath index 82469dc51..4b353a199 100644 --- a/.classpath +++ b/.classpath @@ -4,8 +4,7 @@ - - + From 0ee5332c01a787311ad4c306650665a9f9be5808 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 May 2014 17:55:06 -0400 Subject: [PATCH 04/20] rename 'ant-src' to 'symlinks-for-ant-and-eclipse' for clarity In order to make the codebase more self-documenting, rename it to more clearly say what it is for. --- .classpath | 2 +- extern/{ant-src => symlinks-for-ant-and-eclipse}/fi | 0 extern/{ant-src => symlinks-for-ant-and-eclipse}/javax | 0 extern/{ant-src => symlinks-for-ant-and-eclipse}/kellinwood | 0 .../org/spongycastle/asn1 | 0 .../org/spongycastle/cert | 0 .../org/spongycastle/cms | 0 .../org/spongycastle/crypto | 0 .../org/spongycastle/dvcs | 0 .../org/spongycastle/eac | 0 .../org/spongycastle/i18n | 0 .../org/spongycastle/jcajce | 0 .../org/spongycastle/jce/ECGOST3410NamedCurveTable.java | 0 .../org/spongycastle/jce/ECKeyUtil.java | 0 .../org/spongycastle/jce/ECNamedCurveTable.java | 0 .../org/spongycastle/jce/ECPointUtil.java | 0 .../org/spongycastle/jce/MultiCertStoreParameters.java | 0 .../org/spongycastle/jce/PKCS10CertificationRequest.java | 0 .../org/spongycastle/jce/PKCS12Util.java | 0 .../org/spongycastle/jce/PrincipalUtil.java | 0 .../org/spongycastle/jce/X509KeyUsage.java | 0 .../org/spongycastle/jce/X509LDAPCertStoreParameters.java | 0 .../org/spongycastle/jce/X509Principal.java | 0 .../org/spongycastle/jce/examples | 0 .../org/spongycastle/jce/exception | 0 .../org/spongycastle/jce/interfaces | 0 .../org/spongycastle/jce/netscape | 0 .../org/spongycastle/jce/provider/AnnotatedException.java | 0 .../org/spongycastle/jce/provider/BouncyCastleProvider.java | 0 .../jce/provider/BouncyCastleProviderConfiguration.java | 0 .../org/spongycastle/jce/provider/BrokenJCEBlockCipher.java | 0 .../spongycastle/jce/provider/BrokenKDF2BytesGenerator.java | 0 .../org/spongycastle/jce/provider/BrokenPBE.java | 0 .../spongycastle/jce/provider/CertPathValidatorUtilities.java | 0 .../org/spongycastle/jce/provider/CertStatus.java | 0 .../org/spongycastle/jce/provider/CertStoreCollectionSpi.java | 0 .../org/spongycastle/jce/provider/DHUtil.java | 0 .../org/spongycastle/jce/provider/ExtCRLException.java | 0 .../org/spongycastle/jce/provider/JCEDHPrivateKey.java | 0 .../org/spongycastle/jce/provider/JCEDHPublicKey.java | 0 .../org/spongycastle/jce/provider/JCEECPrivateKey.java | 0 .../org/spongycastle/jce/provider/JCEECPublicKey.java | 0 .../org/spongycastle/jce/provider/JCEElGamalPrivateKey.java | 0 .../org/spongycastle/jce/provider/JCEElGamalPublicKey.java | 0 .../org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java | 0 .../org/spongycastle/jce/provider/JCERSAPrivateKey.java | 0 .../org/spongycastle/jce/provider/JCERSAPublicKey.java | 0 .../org/spongycastle/jce/provider/JCEStreamCipher.java | 0 .../org/spongycastle/jce/provider/JDKDSAPrivateKey.java | 0 .../org/spongycastle/jce/provider/JDKDSAPublicKey.java | 0 .../spongycastle/jce/provider/JDKPKCS12StoreParameter.java | 0 .../org/spongycastle/jce/provider/MultiCertStoreSpi.java | 0 .../org/spongycastle/jce/provider/PEMUtil.java | 0 .../spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java | 0 .../jce/provider/PKIXAttrCertPathValidatorSpi.java | 0 .../org/spongycastle/jce/provider/PKIXCRLUtil.java | 0 .../org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java | 0 .../spongycastle/jce/provider/PKIXCertPathValidatorSpi.java | 0 .../jce/provider/PKIXNameConstraintValidator.java | 0 .../jce/provider/PKIXNameConstraintValidatorException.java | 0 .../org/spongycastle/jce/provider/PKIXPolicyNode.java | 0 .../spongycastle/jce/provider/RFC3280CertPathUtilities.java | 0 .../spongycastle/jce/provider/RFC3281CertPathUtilities.java | 0 .../org/spongycastle/jce/provider/ReasonsMask.java | 0 .../org/spongycastle/jce/provider/X509AttrCertParser.java | 0 .../org/spongycastle/jce/provider/X509CRLEntryObject.java | 0 .../org/spongycastle/jce/provider/X509CRLObject.java | 0 .../org/spongycastle/jce/provider/X509CRLParser.java | 0 .../org/spongycastle/jce/provider/X509CertPairParser.java | 0 .../org/spongycastle/jce/provider/X509CertParser.java | 0 .../org/spongycastle/jce/provider/X509CertificateObject.java | 0 .../org/spongycastle/jce/provider/X509SignatureUtil.java | 0 .../jce/provider/X509StoreAttrCertCollection.java | 0 .../org/spongycastle/jce/provider/X509StoreCRLCollection.java | 0 .../spongycastle/jce/provider/X509StoreCertCollection.java | 0 .../jce/provider/X509StoreCertPairCollection.java | 0 .../org/spongycastle/jce/spec | 0 .../org/spongycastle/math | 0 .../org/spongycastle/mozilla | 0 .../org/spongycastle/ocsp | 0 .../org/spongycastle/openssl | 0 .../org/spongycastle/operator | 0 .../org/spongycastle/pkcs | 0 .../org/spongycastle/pqc/asn1 | 0 .../org/spongycastle/pqc/crypto | 0 .../org/spongycastle/pqc/jcajce | 0 .../org/spongycastle/pqc/math | 0 .../org/spongycastle/tsp | 0 .../org/spongycastle/util | 0 .../org/spongycastle/voms | 0 .../org/spongycastle/x509/AttributeCertificateHolder.java | 0 .../org/spongycastle/x509/AttributeCertificateIssuer.java | 0 .../org/spongycastle/x509/CertPathReviewerException.java | 0 .../spongycastle/x509/ExtCertificateEncodingException.java | 0 .../org/spongycastle/x509/ExtendedPKIXBuilderParameters.java | 0 .../org/spongycastle/x509/ExtendedPKIXParameters.java | 0 .../org/spongycastle/x509/NoSuchParserException.java | 0 .../org/spongycastle/x509/NoSuchStoreException.java | 0 .../org/spongycastle/x509/PKIXAttrCertChecker.java | 0 .../org/spongycastle/x509/PKIXCertPathReviewer.java | 0 .../org/spongycastle/x509/X509Attribute.java | 0 .../org/spongycastle/x509/X509AttributeCertStoreSelector.java | 0 .../org/spongycastle/x509/X509AttributeCertificate.java | 0 .../org/spongycastle/x509/X509CRLStoreSelector.java | 0 .../org/spongycastle/x509/X509CertPairStoreSelector.java | 0 .../org/spongycastle/x509/X509CertStoreSelector.java | 0 .../org/spongycastle/x509/X509CertificatePair.java | 0 .../org/spongycastle/x509/X509CollectionStoreParameters.java | 0 .../org/spongycastle/x509/X509Store.java | 0 .../org/spongycastle/x509/X509StoreParameters.java | 0 .../org/spongycastle/x509/X509StoreSpi.java | 0 .../org/spongycastle/x509/X509StreamParser.java | 0 .../org/spongycastle/x509/X509StreamParserSpi.java | 0 .../org/spongycastle/x509/X509Util.java | 0 .../org/spongycastle/x509/X509V1CertificateGenerator.java | 0 .../org/spongycastle/x509/X509V2AttributeCertificate.java | 0 .../x509/X509V2AttributeCertificateGenerator.java | 0 .../org/spongycastle/x509/X509V2CRLGenerator.java | 0 .../org/spongycastle/x509/X509V3CertificateGenerator.java | 0 .../org/spongycastle/x509/examples | 0 .../org/spongycastle/x509/extension | 0 .../org/spongycastle/x509/util/StreamParser.java | 0 .../org/spongycastle/x509/util/StreamParsingException.java | 0 project.properties | 4 ++-- 124 files changed, 3 insertions(+), 3 deletions(-) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/fi (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/javax (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/kellinwood (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/asn1 (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/cert (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/cms (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/crypto (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/dvcs (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/eac (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/i18n (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jcajce (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/ECGOST3410NamedCurveTable.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/ECKeyUtil.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/ECNamedCurveTable.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/ECPointUtil.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/MultiCertStoreParameters.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/PKCS10CertificationRequest.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/PKCS12Util.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/PrincipalUtil.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/X509KeyUsage.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/X509LDAPCertStoreParameters.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/X509Principal.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/examples (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/exception (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/interfaces (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/netscape (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/AnnotatedException.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/BouncyCastleProvider.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/BrokenPBE.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/CertPathValidatorUtilities.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/CertStatus.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/CertStoreCollectionSpi.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/DHUtil.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/ExtCRLException.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JCEDHPrivateKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JCEDHPublicKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JCEECPrivateKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JCEECPublicKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JCEElGamalPublicKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JCERSAPrivateKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JCERSAPublicKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JCEStreamCipher.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JDKDSAPrivateKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JDKDSAPublicKey.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/MultiCertStoreSpi.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/PEMUtil.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/PKIXCRLUtil.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/PKIXPolicyNode.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/ReasonsMask.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509AttrCertParser.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509CRLEntryObject.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509CRLObject.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509CRLParser.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509CertPairParser.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509CertParser.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509CertificateObject.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509SignatureUtil.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509StoreCRLCollection.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509StoreCertCollection.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/provider/X509StoreCertPairCollection.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/jce/spec (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/math (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/mozilla (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/ocsp (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/openssl (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/operator (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/pkcs (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/pqc/asn1 (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/pqc/crypto (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/pqc/jcajce (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/pqc/math (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/tsp (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/util (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/voms (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/AttributeCertificateHolder.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/AttributeCertificateIssuer.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/CertPathReviewerException.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/ExtCertificateEncodingException.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/ExtendedPKIXParameters.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/NoSuchParserException.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/NoSuchStoreException.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/PKIXAttrCertChecker.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/PKIXCertPathReviewer.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509Attribute.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509AttributeCertStoreSelector.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509AttributeCertificate.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509CRLStoreSelector.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509CertPairStoreSelector.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509CertStoreSelector.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509CertificatePair.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509CollectionStoreParameters.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509Store.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509StoreParameters.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509StoreSpi.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509StreamParser.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509StreamParserSpi.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509Util.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509V1CertificateGenerator.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509V2AttributeCertificate.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509V2CRLGenerator.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/X509V3CertificateGenerator.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/examples (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/extension (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/util/StreamParser.java (100%) rename extern/{ant-src => symlinks-for-ant-and-eclipse}/org/spongycastle/x509/util/StreamParsingException.java (100%) diff --git a/.classpath b/.classpath index 4b353a199..fadbb9f4b 100644 --- a/.classpath +++ b/.classpath @@ -4,7 +4,7 @@ - + diff --git a/extern/ant-src/fi b/extern/symlinks-for-ant-and-eclipse/fi similarity index 100% rename from extern/ant-src/fi rename to extern/symlinks-for-ant-and-eclipse/fi diff --git a/extern/ant-src/javax b/extern/symlinks-for-ant-and-eclipse/javax similarity index 100% rename from extern/ant-src/javax rename to extern/symlinks-for-ant-and-eclipse/javax diff --git a/extern/ant-src/kellinwood b/extern/symlinks-for-ant-and-eclipse/kellinwood similarity index 100% rename from extern/ant-src/kellinwood rename to extern/symlinks-for-ant-and-eclipse/kellinwood diff --git a/extern/ant-src/org/spongycastle/asn1 b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1 similarity index 100% rename from extern/ant-src/org/spongycastle/asn1 rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1 diff --git a/extern/ant-src/org/spongycastle/cert b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/cert similarity index 100% rename from extern/ant-src/org/spongycastle/cert rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/cert diff --git a/extern/ant-src/org/spongycastle/cms b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/cms similarity index 100% rename from extern/ant-src/org/spongycastle/cms rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/cms diff --git a/extern/ant-src/org/spongycastle/crypto b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/crypto similarity index 100% rename from extern/ant-src/org/spongycastle/crypto rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/crypto diff --git a/extern/ant-src/org/spongycastle/dvcs b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/dvcs similarity index 100% rename from extern/ant-src/org/spongycastle/dvcs rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/dvcs diff --git a/extern/ant-src/org/spongycastle/eac b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/eac similarity index 100% rename from extern/ant-src/org/spongycastle/eac rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/eac diff --git a/extern/ant-src/org/spongycastle/i18n b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/i18n similarity index 100% rename from extern/ant-src/org/spongycastle/i18n rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/i18n diff --git a/extern/ant-src/org/spongycastle/jcajce b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jcajce similarity index 100% rename from extern/ant-src/org/spongycastle/jcajce rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jcajce diff --git a/extern/ant-src/org/spongycastle/jce/ECGOST3410NamedCurveTable.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECGOST3410NamedCurveTable.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/ECGOST3410NamedCurveTable.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECGOST3410NamedCurveTable.java diff --git a/extern/ant-src/org/spongycastle/jce/ECKeyUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECKeyUtil.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/ECKeyUtil.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECKeyUtil.java diff --git a/extern/ant-src/org/spongycastle/jce/ECNamedCurveTable.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECNamedCurveTable.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/ECNamedCurveTable.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECNamedCurveTable.java diff --git a/extern/ant-src/org/spongycastle/jce/ECPointUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECPointUtil.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/ECPointUtil.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECPointUtil.java diff --git a/extern/ant-src/org/spongycastle/jce/MultiCertStoreParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/MultiCertStoreParameters.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/MultiCertStoreParameters.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/MultiCertStoreParameters.java diff --git a/extern/ant-src/org/spongycastle/jce/PKCS10CertificationRequest.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PKCS10CertificationRequest.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/PKCS10CertificationRequest.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PKCS10CertificationRequest.java diff --git a/extern/ant-src/org/spongycastle/jce/PKCS12Util.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PKCS12Util.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/PKCS12Util.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PKCS12Util.java diff --git a/extern/ant-src/org/spongycastle/jce/PrincipalUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PrincipalUtil.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/PrincipalUtil.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PrincipalUtil.java diff --git a/extern/ant-src/org/spongycastle/jce/X509KeyUsage.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509KeyUsage.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/X509KeyUsage.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509KeyUsage.java diff --git a/extern/ant-src/org/spongycastle/jce/X509LDAPCertStoreParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509LDAPCertStoreParameters.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/X509LDAPCertStoreParameters.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509LDAPCertStoreParameters.java diff --git a/extern/ant-src/org/spongycastle/jce/X509Principal.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509Principal.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/X509Principal.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509Principal.java diff --git a/extern/ant-src/org/spongycastle/jce/examples b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/examples similarity index 100% rename from extern/ant-src/org/spongycastle/jce/examples rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/examples diff --git a/extern/ant-src/org/spongycastle/jce/exception b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/exception similarity index 100% rename from extern/ant-src/org/spongycastle/jce/exception rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/exception diff --git a/extern/ant-src/org/spongycastle/jce/interfaces b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/interfaces similarity index 100% rename from extern/ant-src/org/spongycastle/jce/interfaces rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/interfaces diff --git a/extern/ant-src/org/spongycastle/jce/netscape b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/netscape similarity index 100% rename from extern/ant-src/org/spongycastle/jce/netscape rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/netscape diff --git a/extern/ant-src/org/spongycastle/jce/provider/AnnotatedException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/AnnotatedException.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/AnnotatedException.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/AnnotatedException.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProvider.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BouncyCastleProvider.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProvider.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BouncyCastleProvider.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/BrokenPBE.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenPBE.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/BrokenPBE.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenPBE.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/CertPathValidatorUtilities.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertPathValidatorUtilities.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/CertPathValidatorUtilities.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertPathValidatorUtilities.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/CertStatus.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertStatus.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/CertStatus.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertStatus.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/CertStoreCollectionSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertStoreCollectionSpi.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/CertStoreCollectionSpi.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertStoreCollectionSpi.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/DHUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/DHUtil.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/DHUtil.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/DHUtil.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/ExtCRLException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/ExtCRLException.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/ExtCRLException.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/ExtCRLException.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEDHPrivateKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEDHPrivateKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JCEDHPrivateKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEDHPrivateKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEDHPublicKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEDHPublicKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JCEDHPublicKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEDHPublicKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEECPrivateKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEECPrivateKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JCEECPrivateKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEECPrivateKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEECPublicKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEECPublicKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JCEECPublicKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEECPublicKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPublicKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEElGamalPublicKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JCEElGamalPublicKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEElGamalPublicKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPrivateKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JCERSAPrivateKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPrivateKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCERSAPublicKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPublicKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JCERSAPublicKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPublicKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JCEStreamCipher.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEStreamCipher.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JCEStreamCipher.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEStreamCipher.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JDKDSAPrivateKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKDSAPrivateKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JDKDSAPrivateKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKDSAPrivateKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JDKDSAPublicKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKDSAPublicKey.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JDKDSAPublicKey.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKDSAPublicKey.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/MultiCertStoreSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/MultiCertStoreSpi.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/MultiCertStoreSpi.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/MultiCertStoreSpi.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/PEMUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PEMUtil.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/PEMUtil.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PEMUtil.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXCRLUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCRLUtil.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/PKIXCRLUtil.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCRLUtil.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/PKIXPolicyNode.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXPolicyNode.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/PKIXPolicyNode.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXPolicyNode.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/ReasonsMask.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/ReasonsMask.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/ReasonsMask.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/ReasonsMask.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509AttrCertParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509AttrCertParser.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509AttrCertParser.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509AttrCertParser.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CRLEntryObject.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLEntryObject.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509CRLEntryObject.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLEntryObject.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CRLObject.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLObject.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509CRLObject.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLObject.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CRLParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLParser.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509CRLParser.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLParser.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CertPairParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertPairParser.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509CertPairParser.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertPairParser.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CertParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertParser.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509CertParser.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertParser.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509CertificateObject.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertificateObject.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509CertificateObject.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertificateObject.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509SignatureUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509SignatureUtil.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509SignatureUtil.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509SignatureUtil.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509StoreCRLCollection.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCRLCollection.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509StoreCRLCollection.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCRLCollection.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509StoreCertCollection.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCertCollection.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509StoreCertCollection.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCertCollection.java diff --git a/extern/ant-src/org/spongycastle/jce/provider/X509StoreCertPairCollection.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCertPairCollection.java similarity index 100% rename from extern/ant-src/org/spongycastle/jce/provider/X509StoreCertPairCollection.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCertPairCollection.java diff --git a/extern/ant-src/org/spongycastle/jce/spec b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/spec similarity index 100% rename from extern/ant-src/org/spongycastle/jce/spec rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/spec diff --git a/extern/ant-src/org/spongycastle/math b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/math similarity index 100% rename from extern/ant-src/org/spongycastle/math rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/math diff --git a/extern/ant-src/org/spongycastle/mozilla b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/mozilla similarity index 100% rename from extern/ant-src/org/spongycastle/mozilla rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/mozilla diff --git a/extern/ant-src/org/spongycastle/ocsp b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/ocsp similarity index 100% rename from extern/ant-src/org/spongycastle/ocsp rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/ocsp diff --git a/extern/ant-src/org/spongycastle/openssl b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/openssl similarity index 100% rename from extern/ant-src/org/spongycastle/openssl rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/openssl diff --git a/extern/ant-src/org/spongycastle/operator b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/operator similarity index 100% rename from extern/ant-src/org/spongycastle/operator rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/operator diff --git a/extern/ant-src/org/spongycastle/pkcs b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pkcs similarity index 100% rename from extern/ant-src/org/spongycastle/pkcs rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/pkcs diff --git a/extern/ant-src/org/spongycastle/pqc/asn1 b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/asn1 similarity index 100% rename from extern/ant-src/org/spongycastle/pqc/asn1 rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/asn1 diff --git a/extern/ant-src/org/spongycastle/pqc/crypto b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/crypto similarity index 100% rename from extern/ant-src/org/spongycastle/pqc/crypto rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/crypto diff --git a/extern/ant-src/org/spongycastle/pqc/jcajce b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/jcajce similarity index 100% rename from extern/ant-src/org/spongycastle/pqc/jcajce rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/jcajce diff --git a/extern/ant-src/org/spongycastle/pqc/math b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/math similarity index 100% rename from extern/ant-src/org/spongycastle/pqc/math rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/math diff --git a/extern/ant-src/org/spongycastle/tsp b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/tsp similarity index 100% rename from extern/ant-src/org/spongycastle/tsp rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/tsp diff --git a/extern/ant-src/org/spongycastle/util b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/util similarity index 100% rename from extern/ant-src/org/spongycastle/util rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/util diff --git a/extern/ant-src/org/spongycastle/voms b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/voms similarity index 100% rename from extern/ant-src/org/spongycastle/voms rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/voms diff --git a/extern/ant-src/org/spongycastle/x509/AttributeCertificateHolder.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/AttributeCertificateHolder.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/AttributeCertificateHolder.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/AttributeCertificateHolder.java diff --git a/extern/ant-src/org/spongycastle/x509/AttributeCertificateIssuer.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/AttributeCertificateIssuer.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/AttributeCertificateIssuer.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/AttributeCertificateIssuer.java diff --git a/extern/ant-src/org/spongycastle/x509/CertPathReviewerException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/CertPathReviewerException.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/CertPathReviewerException.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/CertPathReviewerException.java diff --git a/extern/ant-src/org/spongycastle/x509/ExtCertificateEncodingException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtCertificateEncodingException.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/ExtCertificateEncodingException.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtCertificateEncodingException.java diff --git a/extern/ant-src/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java diff --git a/extern/ant-src/org/spongycastle/x509/ExtendedPKIXParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtendedPKIXParameters.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/ExtendedPKIXParameters.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtendedPKIXParameters.java diff --git a/extern/ant-src/org/spongycastle/x509/NoSuchParserException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/NoSuchParserException.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/NoSuchParserException.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/NoSuchParserException.java diff --git a/extern/ant-src/org/spongycastle/x509/NoSuchStoreException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/NoSuchStoreException.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/NoSuchStoreException.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/NoSuchStoreException.java diff --git a/extern/ant-src/org/spongycastle/x509/PKIXAttrCertChecker.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/PKIXAttrCertChecker.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/PKIXAttrCertChecker.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/PKIXAttrCertChecker.java diff --git a/extern/ant-src/org/spongycastle/x509/PKIXCertPathReviewer.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/PKIXCertPathReviewer.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/PKIXCertPathReviewer.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/PKIXCertPathReviewer.java diff --git a/extern/ant-src/org/spongycastle/x509/X509Attribute.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Attribute.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509Attribute.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Attribute.java diff --git a/extern/ant-src/org/spongycastle/x509/X509AttributeCertStoreSelector.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509AttributeCertStoreSelector.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509AttributeCertStoreSelector.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509AttributeCertStoreSelector.java diff --git a/extern/ant-src/org/spongycastle/x509/X509AttributeCertificate.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509AttributeCertificate.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509AttributeCertificate.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509AttributeCertificate.java diff --git a/extern/ant-src/org/spongycastle/x509/X509CRLStoreSelector.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CRLStoreSelector.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509CRLStoreSelector.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CRLStoreSelector.java diff --git a/extern/ant-src/org/spongycastle/x509/X509CertPairStoreSelector.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertPairStoreSelector.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509CertPairStoreSelector.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertPairStoreSelector.java diff --git a/extern/ant-src/org/spongycastle/x509/X509CertStoreSelector.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertStoreSelector.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509CertStoreSelector.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertStoreSelector.java diff --git a/extern/ant-src/org/spongycastle/x509/X509CertificatePair.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertificatePair.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509CertificatePair.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertificatePair.java diff --git a/extern/ant-src/org/spongycastle/x509/X509CollectionStoreParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CollectionStoreParameters.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509CollectionStoreParameters.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CollectionStoreParameters.java diff --git a/extern/ant-src/org/spongycastle/x509/X509Store.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Store.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509Store.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Store.java diff --git a/extern/ant-src/org/spongycastle/x509/X509StoreParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StoreParameters.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509StoreParameters.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StoreParameters.java diff --git a/extern/ant-src/org/spongycastle/x509/X509StoreSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StoreSpi.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509StoreSpi.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StoreSpi.java diff --git a/extern/ant-src/org/spongycastle/x509/X509StreamParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StreamParser.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509StreamParser.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StreamParser.java diff --git a/extern/ant-src/org/spongycastle/x509/X509StreamParserSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StreamParserSpi.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509StreamParserSpi.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StreamParserSpi.java diff --git a/extern/ant-src/org/spongycastle/x509/X509Util.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Util.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509Util.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Util.java diff --git a/extern/ant-src/org/spongycastle/x509/X509V1CertificateGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V1CertificateGenerator.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509V1CertificateGenerator.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V1CertificateGenerator.java diff --git a/extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificate.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2AttributeCertificate.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificate.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2AttributeCertificate.java diff --git a/extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java diff --git a/extern/ant-src/org/spongycastle/x509/X509V2CRLGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2CRLGenerator.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509V2CRLGenerator.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2CRLGenerator.java diff --git a/extern/ant-src/org/spongycastle/x509/X509V3CertificateGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V3CertificateGenerator.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/X509V3CertificateGenerator.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V3CertificateGenerator.java diff --git a/extern/ant-src/org/spongycastle/x509/examples b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/examples similarity index 100% rename from extern/ant-src/org/spongycastle/x509/examples rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/examples diff --git a/extern/ant-src/org/spongycastle/x509/extension b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/extension similarity index 100% rename from extern/ant-src/org/spongycastle/x509/extension rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/extension diff --git a/extern/ant-src/org/spongycastle/x509/util/StreamParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/util/StreamParser.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/util/StreamParser.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/util/StreamParser.java diff --git a/extern/ant-src/org/spongycastle/x509/util/StreamParsingException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/util/StreamParsingException.java similarity index 100% rename from extern/ant-src/org/spongycastle/x509/util/StreamParsingException.java rename to extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/util/StreamParsingException.java diff --git a/project.properties b/project.properties index e12ad6cf0..4a6e95cc5 100644 --- a/project.properties +++ b/project.properties @@ -8,5 +8,5 @@ android.library.reference.3=extern/AndroidPinning android.library.reference.4=extern/libsuperuser/libsuperuser android.library.reference.5=extern/zxing-core -# For java libraries, place symlinks in extern/ant-src -source.dir=src;extern/ant-src +# For java libraries, place symlinks in extern/symlinks-for-ant-and-eclipse/ +source.dir=src;extern/symlinks-for-ant-and-eclipse From b0c27869b6f9910de3132f617181226a6f8652c2 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 May 2014 15:21:07 -0400 Subject: [PATCH 05/20] new tricks to improve mDNS/Bonjour resolution Before, it didn't seem to find anything unless I ran this on my laptop: `avahi-browse -a -v` So added two recommended practices from other jmdns code for Android: * force full resolution on receiving serviceAdded() * feed the WiFi's IP address to jmdns when creating an instance fixes #3379 https://dev.guardianproject.info/issues/3379 --- src/org/fdroid/fdroid/net/MDnsHelper.java | 27 +++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/org/fdroid/fdroid/net/MDnsHelper.java b/src/org/fdroid/fdroid/net/MDnsHelper.java index ab3404138..ae2799a46 100644 --- a/src/org/fdroid/fdroid/net/MDnsHelper.java +++ b/src/org/fdroid/fdroid/net/MDnsHelper.java @@ -8,7 +8,6 @@ import android.net.wifi.WifiManager.MulticastLock; import android.os.AsyncTask; import android.os.Handler; import android.os.Looper; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -21,7 +20,6 @@ import org.fdroid.fdroid.R; import java.io.IOException; import java.net.InetAddress; import java.util.ArrayList; -import java.util.Enumeration; import java.util.List; import javax.jmdns.*; @@ -36,13 +34,14 @@ public class MDnsHelper implements ServiceListener { final RepoScanListAdapter mAdapter; private JmDNS mJmdns; - private MulticastLock mMulticastLock; + private final WifiManager wifiManager; + private final MulticastLock mMulticastLock; public MDnsHelper(Activity activity, final RepoScanListAdapter adapter) { mActivity = activity; mAdapter = adapter; - WifiManager wm = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE); - mMulticastLock = wm.createMulticastLock(activity.getPackageName()); + wifiManager = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE); + mMulticastLock = wifiManager.createMulticastLock(activity.getPackageName()); mMulticastLock.setReferenceCounted(false); } @@ -59,8 +58,15 @@ public class MDnsHelper implements ServiceListener { } @Override - public void serviceAdded(ServiceEvent event) { + public void serviceAdded(final ServiceEvent event) { addFDroidService(event); + new AsyncTask() { + @Override + protected Void doInBackground(Void... params) { + mJmdns.requestServiceInfo(event.getType(), event.getName(), true); + return null; + } + }.execute(); } @Override @@ -88,7 +94,14 @@ public class MDnsHelper implements ServiceListener { @Override protected Void doInBackground(Void... params) { try { - mJmdns = JmDNS.create(); + int ip = wifiManager.getConnectionInfo().getIpAddress(); + byte[] byteIp = new byte[] { + (byte) (ip & 0xff), + (byte) (ip >> 8 & 0xff), + (byte) (ip >> 16 & 0xff), + (byte) (ip >> 24 & 0xff) + }; + mJmdns = JmDNS.create(InetAddress.getByAddress(byteIp)); } catch (IOException e) { e.printStackTrace(); } From 544b924ab9d5693d47b00ab1dc039ea740d8f4a6 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 21 May 2014 18:31:50 -0400 Subject: [PATCH 06/20] copy org.fdroid.fdroid.localrepo.LocalRepoKeystore from Kerplapp This is the keystore used for both the index.jar signing key and the key and certificate needed to support HTTPS connections. https://github.com/guardianproject/Kerplapp refs #3380 https://dev.guardianproject.info/issues/3380 --- .../fdroid/localrepo/LocalRepoKeyStore.java | 357 ++++++++++++++++++ 1 file changed, 357 insertions(+) create mode 100644 src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java new file mode 100644 index 000000000..5b92e0fa5 --- /dev/null +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java @@ -0,0 +1,357 @@ + +package org.fdroid.fdroid.localrepo; + +import org.fdroid.fdroid.FDroidApp; +import org.spongycastle.asn1.ASN1Sequence; +import org.spongycastle.asn1.x500.X500Name; +import org.spongycastle.asn1.x509.*; +import org.spongycastle.cert.X509CertificateHolder; +import org.spongycastle.cert.X509v3CertificateBuilder; +import org.spongycastle.cert.jcajce.JcaX509CertificateConverter; +import org.spongycastle.operator.ContentSigner; +import org.spongycastle.operator.OperatorCreationException; +import org.spongycastle.operator.jcajce.JcaContentSignerBuilder; + +import java.io.*; +import java.math.BigInteger; +import java.net.Socket; +import java.security.*; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.Calendar; +import java.util.Date; +import java.util.Formatter; + +import javax.net.ssl.KeyManager; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.X509KeyManager; + +import kellinwood.security.zipsigner.ZipSigner; + +public class LocalRepoKeyStore { + // TODO: Address exception handling in a uniform way across the KeyStore & application + + static { + Security.insertProviderAt( + new org.spongycastle.jce.provider.BouncyCastleProvider(), 1); + } + + private static final String TAG = "KerplappKeyStore"; + + public static final String INDEX_CERT_ALIAS = "fdroid"; + public static final String HTTP_CERT_ALIAS = "https"; + + private static final String DEFAULT_SIG_ALG = "SHA1withRSA"; + private static final String DEFAULT_KEY_ALGO = "RSA"; + private static final int DEFAULT_KEY_BITS = 2048; + + private static final String DEFAULT_INDEX_CERT_INFO = "O=Kerplapp,OU=GuardianProject"; + + private KeyStore keyStore; + private KeyManager[] keyManagers; + private File backingFile; + + public LocalRepoKeyStore(File backingFile) throws KeyStoreException, NoSuchAlgorithmException, + CertificateException, IOException, OperatorCreationException, UnrecoverableKeyException { + this.backingFile = backingFile; + this.keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + + // If there isn't a persisted BKS keystore on disk we need to + // create a new empty keystore + if (!backingFile.exists()) + { + // Init a new keystore with a blank passphrase + keyStore.load(null, "".toCharArray()); + } else { + keyStore.load(new FileInputStream(backingFile), "".toCharArray()); + } + + /* + * If the keystore we loaded doesn't have an INDEX_CERT_ALIAS entry we + * need to generate a new random keypair and a self signed certificate + * for this slot. + */ + if (keyStore.getKey(INDEX_CERT_ALIAS, "".toCharArray()) == null) + { + // Generate a random key pair to associate with the INDEX_CERT_ALIAS + // certificate in the keystore. This keypair will be used for the + // HTTPS cert as well. + KeyPair rndKeys = generateRandomKeypair(); + + // Generate a self signed certificate for signing the index.jar + // We can't generate the HTTPS certificate until we know what the IP + // address will be to use for the CN field. + X500Name subject = new X500Name(DEFAULT_INDEX_CERT_INFO); + Certificate indexCert = generateSelfSignedCertChain(rndKeys, subject); + + addToStore(INDEX_CERT_ALIAS, rndKeys, indexCert); + } + + // Kerplapp uses its own KeyManager to to ensure the correct keystore + // alias is used for the correct purpose. With the default key manager + // it is not possible to specify that HTTP_CERT_ALIAS should be used for + // TLS and INDEX_CERT_ALIAS for signing the index.jar. + KeyManagerFactory keyManagerFactory = KeyManagerFactory + .getInstance(KeyManagerFactory.getDefaultAlgorithm()); + + keyManagerFactory.init(keyStore, "".toCharArray()); + KeyManager defaultKeyManager = keyManagerFactory.getKeyManagers()[0]; + KeyManager wrappedKeyManager = new KerplappKeyManager( + (X509KeyManager) defaultKeyManager); + keyManagers = new KeyManager[] { + wrappedKeyManager + }; + } + + public void setupHTTPSCertificate() throws CertificateException, + OperatorCreationException, KeyStoreException, NoSuchAlgorithmException, + FileNotFoundException, IOException, UnrecoverableKeyException { + // Get the existing private/public keypair to use for the HTTPS cert + KeyPair kerplappKeypair = getKerplappKeypair(); + + /* + * Once we have an IP address, that can be used as the hostname. We can + * generate a self signed cert with a valid CN field to stash into the + * keystore in a predictable place. If the IP address changes we should + * run this method again to stomp old HTTPS_CERT_ALIAS entries. + */ + X500Name subject = new X500Name("CN=" + FDroidApp.ipAddressString); + + Certificate indexCert = generateSelfSignedCertChain(kerplappKeypair, subject, + FDroidApp.ipAddressString); + + addToStore(HTTP_CERT_ALIAS, kerplappKeypair, indexCert); + } + + public File getKeyStoreFile() { + return backingFile; + } + + public KeyStore getKeyStore() { + return keyStore; + } + + public KeyManager[] getKeyManagers() { + return keyManagers; + } + + public void signZip(File input, File output) { + try { + ZipSigner zipSigner = new ZipSigner(); + + KeyStore keystore = getKeyStore(); + X509Certificate cert = (X509Certificate) keystore.getCertificate(INDEX_CERT_ALIAS); + + KeyPair kp = getKerplappKeypair(); + PrivateKey priv = kp.getPrivate(); + + zipSigner.setKeys("kerplapp", cert, priv, DEFAULT_SIG_ALG, null); + zipSigner.signZip(input.getAbsolutePath(), output.getAbsolutePath()); + + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (KeyStoreException e) { + e.printStackTrace(); + } catch (UnrecoverableKeyException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (GeneralSecurityException e) { + e.printStackTrace(); + } + } + + private KeyPair getKerplappKeypair() throws KeyStoreException, UnrecoverableKeyException, + NoSuchAlgorithmException { + /* + * You can't store a keypair without an associated certificate chain so, + * we'll use the INDEX_CERT_ALIAS as the de-facto keypair/certificate + * chain. This cert/key is initialized when the KerplappKeyStore is + * constructed for the first time and should *always* be present. + */ + Key key = keyStore.getKey(INDEX_CERT_ALIAS, "".toCharArray()); + + if (key instanceof PrivateKey) { + Certificate cert = keyStore.getCertificate(INDEX_CERT_ALIAS); + PublicKey publicKey = cert.getPublicKey(); + return new KeyPair(publicKey, (PrivateKey) key); + } + + return null; + } + + // This is take from FDroid: org.fdroid.fdroid.DB.calcFingerprint() + // TODO once this code is part of FDroid, replace this with DB.calcFingerprint() + public String getFingerprint() { + String ret = null; + try { + Certificate cert = getCertificate(); + if (cert != null) { + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + digest.update(cert.getEncoded()); + byte[] fingerprint = digest.digest(); + Formatter formatter = new Formatter(new StringBuilder()); + for (int i = 0; i < fingerprint.length; i++) { + formatter.format("%02X", fingerprint[i]); + } + ret = formatter.toString(); + formatter.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + + return ret; + } + + public Certificate getCertificate() { + try { + Key key = keyStore.getKey(INDEX_CERT_ALIAS, "".toCharArray()); + if (key instanceof PrivateKey) + return keyStore.getCertificate(INDEX_CERT_ALIAS); + } catch (KeyStoreException e) { + e.printStackTrace(); + } catch (UnrecoverableKeyException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return null; + } + + private void addToStore(String alias, KeyPair kp, Certificate cert) throws KeyStoreException, + NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException, + UnrecoverableKeyException { + Certificate[] chain = new Certificate[] { + cert + }; + keyStore.setKeyEntry(alias, kp.getPrivate(), + "".toCharArray(), chain); + + keyStore.store(new FileOutputStream(backingFile), "".toCharArray()); + + /* + * After adding an entry to the keystore we need to create a fresh + * KeyManager by reinitializing the KeyManagerFactory with the new key + * store content and then rewrapping the default KeyManager with our own + */ + KeyManagerFactory keyManagerFactory = KeyManagerFactory + .getInstance(KeyManagerFactory.getDefaultAlgorithm()); + + keyManagerFactory.init(keyStore, "".toCharArray()); + KeyManager defaultKeyManager = keyManagerFactory.getKeyManagers()[0]; + KeyManager wrappedKeyManager = new KerplappKeyManager((X509KeyManager) defaultKeyManager); + keyManagers = new KeyManager[] { + wrappedKeyManager + }; + } + + private KeyPair generateRandomKeypair() throws NoSuchAlgorithmException { + KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(DEFAULT_KEY_ALGO); + keyPairGenerator.initialize(DEFAULT_KEY_BITS); + KeyPair keyPair = keyPairGenerator.generateKeyPair(); + return keyPair; + } + + private Certificate generateSelfSignedCertChain(KeyPair kp, X500Name subject) + throws CertificateException, OperatorCreationException, IOException { + return generateSelfSignedCertChain(kp, subject, null); + } + + private Certificate generateSelfSignedCertChain(KeyPair kp, X500Name subject, String hostname) + throws CertificateException, OperatorCreationException, IOException { + SecureRandom rand = new SecureRandom(); + PrivateKey privKey = kp.getPrivate(); + PublicKey pubKey = kp.getPublic(); + ContentSigner sigGen = new JcaContentSignerBuilder(DEFAULT_SIG_ALG).build(privKey); + + SubjectPublicKeyInfo subPubKeyInfo = new SubjectPublicKeyInfo( + ASN1Sequence.getInstance(pubKey.getEncoded())); + + Date startDate = new Date(); // now + + Calendar c = Calendar.getInstance(); + c.setTime(startDate); + c.add(Calendar.YEAR, 1); + Date endDate = c.getTime(); + + X509v3CertificateBuilder v3CertGen = new X509v3CertificateBuilder( + subject, + BigInteger.valueOf(rand.nextLong()), + startDate, endDate, + subject, + subPubKeyInfo); + + if (hostname != null) + { + + GeneralNames subjectAltName = new GeneralNames( + new GeneralName(GeneralName.iPAddress, hostname)); + + // X509Extension extension = new X509Extension(false, new + // DEROctetString(subjectAltName)); + + v3CertGen.addExtension(X509Extension.subjectAlternativeName, false, subjectAltName); + } + + X509CertificateHolder certHolder = v3CertGen.build(sigGen); + return new JcaX509CertificateConverter().getCertificate(certHolder); + } + + /* + * A X509KeyManager that always returns the KerplappKeyStore.HTTP_CERT_ALIAS + * for it's chosen server alias. All other operations are deferred to the + * wrapped X509KeyManager. + */ + private static class KerplappKeyManager implements X509KeyManager { + private final X509KeyManager wrapped; + + private KerplappKeyManager(X509KeyManager wrapped) + { + this.wrapped = wrapped; + } + + @Override + public String chooseClientAlias(String[] keyType, Principal[] issuers, + Socket socket) { + return wrapped.chooseClientAlias(keyType, issuers, socket); + } + + @Override + public String chooseServerAlias(String keyType, Principal[] issuers, + Socket socket) { + /* + * Always use the HTTP_CERT_ALIAS for the server alias. + */ + return LocalRepoKeyStore.HTTP_CERT_ALIAS; + } + + @Override + public X509Certificate[] getCertificateChain(String alias) { + return wrapped.getCertificateChain(alias); + } + + @Override + public String[] getClientAliases(String keyType, Principal[] issuers) { + return wrapped.getClientAliases(keyType, issuers); + } + + @Override + public PrivateKey getPrivateKey(String alias) { + return wrapped.getPrivateKey(alias); + } + + @Override + public String[] getServerAliases(String keyType, Principal[] issuers) { + return wrapped.getServerAliases(keyType, issuers); + } + } + +} From e41ae508123c641686b0f6ec25f0a65dc68796b7 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 May 2014 14:44:09 -0400 Subject: [PATCH 07/20] make LocalRepoKeyStore into a proper singleton Hopefully this makes Peter happy ;-) --- .../fdroid/localrepo/LocalRepoKeyStore.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java index 5b92e0fa5..b21d4815e 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java @@ -1,6 +1,8 @@ package org.fdroid.fdroid.localrepo; +import android.content.Context; + import org.fdroid.fdroid.FDroidApp; import org.spongycastle.asn1.ASN1Sequence; import org.spongycastle.asn1.x500.X500Name; @@ -48,11 +50,36 @@ public class LocalRepoKeyStore { private static final String DEFAULT_INDEX_CERT_INFO = "O=Kerplapp,OU=GuardianProject"; + private static LocalRepoKeyStore localRepoKeyStore; private KeyStore keyStore; private KeyManager[] keyManagers; private File backingFile; - public LocalRepoKeyStore(File backingFile) throws KeyStoreException, NoSuchAlgorithmException, + public static LocalRepoKeyStore get(Context context) { + + if (localRepoKeyStore == null) { + File appKeyStoreDir = context.getDir("keystore", Context.MODE_PRIVATE); + File keyStoreFile = new File(appKeyStoreDir, "kerplapp.bks"); + try { + localRepoKeyStore = new LocalRepoKeyStore(keyStoreFile); + } catch (UnrecoverableKeyException e) { + e.printStackTrace(); + } catch (KeyStoreException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (CertificateException e) { + e.printStackTrace(); + } catch (OperatorCreationException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return localRepoKeyStore; + } + + private LocalRepoKeyStore(File backingFile) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException, OperatorCreationException, UnrecoverableKeyException { this.backingFile = backingFile; this.keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); From 22fb0337b9930fa41b5ead40e8472e2a438e337a Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 23 May 2014 11:09:14 -0400 Subject: [PATCH 08/20] clean up LocalRepoKeyStore code format Make it match standard Java style. --- .../fdroid/localrepo/LocalRepoKeyStore.java | 30 ++++++------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java index b21d4815e..27778c2fb 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java @@ -31,16 +31,16 @@ import javax.net.ssl.X509KeyManager; import kellinwood.security.zipsigner.ZipSigner; +// TODO Address exception handling in a uniform way throughout + public class LocalRepoKeyStore { - // TODO: Address exception handling in a uniform way across the KeyStore & application + private static final String TAG = "KerplappKeyStore"; static { Security.insertProviderAt( new org.spongycastle.jce.provider.BouncyCastleProvider(), 1); } - private static final String TAG = "KerplappKeyStore"; - public static final String INDEX_CERT_ALIAS = "fdroid"; public static final String HTTP_CERT_ALIAS = "https"; @@ -56,7 +56,6 @@ public class LocalRepoKeyStore { private File backingFile; public static LocalRepoKeyStore get(Context context) { - if (localRepoKeyStore == null) { File appKeyStoreDir = context.getDir("keystore", Context.MODE_PRIVATE); File keyStoreFile = new File(appKeyStoreDir, "kerplapp.bks"); @@ -86,8 +85,7 @@ public class LocalRepoKeyStore { // If there isn't a persisted BKS keystore on disk we need to // create a new empty keystore - if (!backingFile.exists()) - { + if (!backingFile.exists()) { // Init a new keystore with a blank passphrase keyStore.load(null, "".toCharArray()); } else { @@ -99,8 +97,7 @@ public class LocalRepoKeyStore { * need to generate a new random keypair and a self signed certificate * for this slot. */ - if (keyStore.getKey(INDEX_CERT_ALIAS, "".toCharArray()) == null) - { + if (keyStore.getKey(INDEX_CERT_ALIAS, "".toCharArray()) == null) { // Generate a random key pair to associate with the INDEX_CERT_ALIAS // certificate in the keystore. This keypair will be used for the // HTTPS cert as well. @@ -316,15 +313,9 @@ public class LocalRepoKeyStore { subject, subPubKeyInfo); - if (hostname != null) - { - + if (hostname != null) { GeneralNames subjectAltName = new GeneralNames( new GeneralName(GeneralName.iPAddress, hostname)); - - // X509Extension extension = new X509Extension(false, new - // DEROctetString(subjectAltName)); - v3CertGen.addExtension(X509Extension.subjectAlternativeName, false, subjectAltName); } @@ -340,20 +331,17 @@ public class LocalRepoKeyStore { private static class KerplappKeyManager implements X509KeyManager { private final X509KeyManager wrapped; - private KerplappKeyManager(X509KeyManager wrapped) - { + private KerplappKeyManager(X509KeyManager wrapped) { this.wrapped = wrapped; } @Override - public String chooseClientAlias(String[] keyType, Principal[] issuers, - Socket socket) { + public String chooseClientAlias(String[] keyType, Principal[] issuers, Socket socket) { return wrapped.chooseClientAlias(keyType, issuers, socket); } @Override - public String chooseServerAlias(String keyType, Principal[] issuers, - Socket socket) { + public String chooseServerAlias(String keyType, Principal[] issuers, Socket socket) { /* * Always use the HTTP_CERT_ALIAS for the server alias. */ From 5f2efbb72a581d76163a57d36bf038a222aef2e3 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 May 2014 19:02:25 -0400 Subject: [PATCH 09/20] sign local repo based on key generated using spongycastle This makes it so the local repo is always signed by a locally generated and stored key. That key will become the unique ID that represents a given local repo. It should seamlessly upgrade any existing unsigned local repo next time that the user makes any changes to their local repo. fixes #3380 https://dev.guardianproject.info/issues/3380 --- res/values/strings.xml | 1 + .../fdroid/localrepo/LocalRepoKeyStore.java | 24 ------------ .../fdroid/localrepo/LocalRepoManager.java | 37 ++++++++++++++++++- .../fdroid/localrepo/LocalRepoService.java | 2 +- .../fdroid/net/WifiStateChangeService.java | 5 ++- .../fdroid/views/LocalRepoActivity.java | 32 ++++++++++++++++ .../views/fragments/RepoListFragment.java | 6 +-- 7 files changed, 76 insertions(+), 31 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 179619796..c5fc6105e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -175,6 +175,7 @@ Deleting current repo… Adding %s to repo… Writing raw index file (index.xml)… + Writing signed index file (index.jar)… Linking APKs into the repo… Copying app icons into the repo… Finished updating local repo diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java index 27778c2fb..c81d79a40 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java @@ -211,30 +211,6 @@ public class LocalRepoKeyStore { return null; } - // This is take from FDroid: org.fdroid.fdroid.DB.calcFingerprint() - // TODO once this code is part of FDroid, replace this with DB.calcFingerprint() - public String getFingerprint() { - String ret = null; - try { - Certificate cert = getCertificate(); - if (cert != null) { - MessageDigest digest = MessageDigest.getInstance("SHA-256"); - digest.update(cert.getEncoded()); - byte[] fingerprint = digest.digest(); - Formatter formatter = new Formatter(new StringBuilder()); - for (int i = 0; i < fingerprint.length; i++) { - formatter.format("%02X", fingerprint[i]); - } - ret = formatter.toString(); - formatter.close(); - } - } catch (Exception e) { - e.printStackTrace(); - } - - return ret; - } - public Certificate getCertificate() { try { Key key = keyStore.getKey(INDEX_CERT_ALIAS, "".toCharArray()); diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java index 21108edd1..29b35fc71 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java @@ -16,9 +16,9 @@ import android.preference.PreferenceManager; import android.text.TextUtils; import android.util.Log; +import org.fdroid.fdroid.Hasher; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Utils; -import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.App; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -28,6 +28,8 @@ import java.security.cert.CertificateEncodingException; import java.text.SimpleDateFormat; import java.util.*; import java.util.Map.Entry; +import java.util.jar.JarEntry; +import java.util.jar.JarOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -42,6 +44,7 @@ public class LocalRepoManager { // For ref, official F-droid repo presently uses a maxage of 14 days private static final String DEFAULT_REPO_MAX_AGE_DAYS = "14"; + private final Context context; private final PackageManager pm; private final AssetManager assetManager; private final SharedPreferences prefs; @@ -53,12 +56,15 @@ public class LocalRepoManager { private Map apps = new HashMap(); public final File xmlIndex; + private File xmlIndexJar = null; + private File xmlIndexJarUnsigned = null; public final File webRoot; public final File fdroidDir; public final File repoDir; public final File iconsDir; public LocalRepoManager(Context c) { + context = c; pm = c.getPackageManager(); assetManager = c.getAssets(); prefs = PreferenceManager.getDefaultSharedPreferences(c); @@ -70,6 +76,8 @@ public class LocalRepoManager { repoDir = new File(fdroidDir, "repo"); iconsDir = new File(repoDir, "icons"); xmlIndex = new File(repoDir, "index.xml"); + xmlIndexJar = new File(repoDir, "index.jar"); + xmlIndexJarUnsigned = new File(repoDir, "index.unsigned.jar"); if (!fdroidDir.exists()) if (!fdroidDir.mkdir()) @@ -278,6 +286,7 @@ public class LocalRepoManager { repo.setAttribute("icon", "blah.png"); repo.setAttribute("maxage", String.valueOf(repoMaxAge)); repo.setAttribute("name", repoName + " on " + ipAddressString); + repo.setAttribute("pubkey", Hasher.hex(LocalRepoKeyStore.get(context).getCertificate())); long timestamp = System.currentTimeMillis() / 1000L; repo.setAttribute("timestamp", String.valueOf(timestamp)); repo.setAttribute("url", uriString); @@ -417,4 +426,30 @@ public class LocalRepoManager { transformer.transform(domSource, result); } + + public void writeIndexJar() throws IOException { + BufferedOutputStream bo = new BufferedOutputStream( + new FileOutputStream(xmlIndexJarUnsigned)); + JarOutputStream jo = new JarOutputStream(bo); + + BufferedInputStream bi = new BufferedInputStream(new FileInputStream(xmlIndex)); + + JarEntry je = new JarEntry("index.xml"); + jo.putNextEntry(je); + + byte[] buf = new byte[1024]; + int bytesRead; + + while ((bytesRead = bi.read(buf)) != -1) { + jo.write(buf, 0, bytesRead); + } + + bi.close(); + jo.close(); + bo.close(); + + LocalRepoKeyStore.get(context).signZip(xmlIndexJarUnsigned, xmlIndexJar); + + xmlIndexJarUnsigned.delete(); + } } diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoService.java b/src/org/fdroid/fdroid/localrepo/LocalRepoService.java index 690105fdc..3e783493b 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoService.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoService.java @@ -201,7 +201,7 @@ public class LocalRepoService extends Service { values.put("path", "/fdroid/repo"); values.put("name", repoName); // TODO set type based on "use HTTPS" pref - // values.put("fingerprint", FDroidApp.repo.fingerprint); + values.put("fingerprint", FDroidApp.repo.fingerprint); values.put("type", "fdroidrepo"); pairService = ServiceInfo.create("_http._tcp.local.", repoName, FDroidApp.port, 0, 0, values); diff --git a/src/org/fdroid/fdroid/net/WifiStateChangeService.java b/src/org/fdroid/fdroid/net/WifiStateChangeService.java index 78b35abe6..f7cd2e111 100644 --- a/src/org/fdroid/fdroid/net/WifiStateChangeService.java +++ b/src/org/fdroid/fdroid/net/WifiStateChangeService.java @@ -2,7 +2,6 @@ package org.fdroid.fdroid.net; import android.app.Service; -import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.wifi.WifiInfo; @@ -16,7 +15,9 @@ import android.util.Log; import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Utils; +import org.fdroid.fdroid.localrepo.LocalRepoKeyStore; +import java.security.cert.Certificate; import java.util.Locale; public class WifiStateChangeService extends Service { @@ -67,6 +68,8 @@ public class WifiStateChangeService extends Service { FDroidApp.repo.name = Preferences.get().getLocalRepoName(); FDroidApp.repo.address = String.format(Locale.ENGLISH, "%s://%s:%d/fdroid/repo", scheme, FDroidApp.ipAddressString, FDroidApp.port); + Certificate localCert = LocalRepoKeyStore.get(getApplication()).getCertificate(); + FDroidApp.repo.fingerprint = Utils.calcFingerprint(localCert); FDroidApp.localRepo.setUriString(FDroidApp.repo.address); FDroidApp.localRepo.writeIndexPage( Utils.getSharingUri(WifiStateChangeService.this, FDroidApp.repo).toString()); diff --git a/src/org/fdroid/fdroid/views/LocalRepoActivity.java b/src/org/fdroid/fdroid/views/LocalRepoActivity.java index b7d4e3f21..411caed54 100644 --- a/src/org/fdroid/fdroid/views/LocalRepoActivity.java +++ b/src/org/fdroid/fdroid/views/LocalRepoActivity.java @@ -22,9 +22,17 @@ import android.view.*; import android.widget.*; import org.fdroid.fdroid.*; +import org.fdroid.fdroid.localrepo.LocalRepoKeyStore; import org.fdroid.fdroid.localrepo.LocalRepoService; import org.fdroid.fdroid.net.WifiStateChangeService; +import org.spongycastle.operator.OperatorCreationException; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.UnrecoverableKeyException; +import java.security.cert.CertificateException; import java.util.Locale; import java.util.Timer; import java.util.TimerTask; @@ -252,6 +260,28 @@ public class LocalRepoActivity extends Activity { fingerprintTextView.setVisibility(View.GONE); } + // Once the IP address is known we need to generate a self signed + // certificate to use for HTTPS that has a CN field set to the + // ipAddressString. We'll generate it even if useHttps is false + // to simplify having to detect when that preference changes. + try { + LocalRepoKeyStore.get(this).setupHTTPSCertificate(); + } catch (UnrecoverableKeyException e) { + e.printStackTrace(); + } catch (CertificateException e) { + e.printStackTrace(); + } catch (OperatorCreationException e) { + e.printStackTrace(); + } catch (KeyStoreException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + // the required NFC API was added in 4.0 aka Ice Cream Sandwich if (Build.VERSION.SDK_INT >= 14) { NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); @@ -300,6 +330,8 @@ public class LocalRepoActivity extends Activity { FDroidApp.localRepo.writeIndexPage(sharingUri.toString()); publishProgress(getString(R.string.writing_index_xml)); FDroidApp.localRepo.writeIndexXML(); + publishProgress(getString(R.string.writing_index_jar)); + FDroidApp.localRepo.writeIndexJar(); publishProgress(getString(R.string.linking_apks)); FDroidApp.localRepo.copyApksToRepo(); publishProgress(getString(R.string.copying_icons)); diff --git a/src/org/fdroid/fdroid/views/fragments/RepoListFragment.java b/src/org/fdroid/fdroid/views/fragments/RepoListFragment.java index d5b23c5ac..afd69cddf 100644 --- a/src/org/fdroid/fdroid/views/fragments/RepoListFragment.java +++ b/src/org/fdroid/fdroid/views/fragments/RepoListFragment.java @@ -200,8 +200,7 @@ public class RepoListFragment extends ListFragment MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT); - if (Build.VERSION.SDK_INT >= 16) - { + if (Build.VERSION.SDK_INT >= 16) { menu.add(Menu.NONE, SCAN_FOR_REPOS, 1, R.string.menu_scan_repo).setIcon( android.R.drawable.ic_menu_search); } @@ -271,8 +270,7 @@ public class RepoListFragment extends ListFragment path = "/fdroid/repo"; String serviceUrl = protocol + serviceInfo.getInetAddresses()[0] + ":" + serviceInfo.getPort() + path; - // TODO get fingerprint from TXT record - showAddRepo(serviceUrl, ""); + showAddRepo(serviceUrl, serviceInfo.getPropertyString("fingerprint")); } }); From b7339e94236f9ceac09472e1a35c677ecc708670 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 May 2014 19:51:00 -0400 Subject: [PATCH 10/20] support HTTPS:// for local repo in a preference Allow the local repo to use HTTPS:// instead of HTTP://. This is currently default off since handling the self-signed certificate is not currently graceful. In the future, the SPKI that AndroidPinning uses should be included in the repo meta data, then when someone marks a repo as trusted, that local repo's SPKI should be added to the list of trusted keys in AndroidPinning. fixes #2960 https://dev.guardianproject.info/issues/2960 --- res/values/strings.xml | 3 ++ res/xml/preferences.xml | 4 ++ src/org/fdroid/fdroid/Preferences.java | 19 ++++++++ .../fdroid/fdroid/PreferencesActivity.java | 5 +++ .../fdroid/localrepo/LocalRepoService.java | 45 ++++++++++++++----- src/org/fdroid/fdroid/net/LocalHTTPD.java | 33 +++++++------- .../fdroid/net/WifiStateChangeService.java | 6 +-- .../views/QrWizardDownloadActivity.java | 8 +--- 8 files changed, 85 insertions(+), 38 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index c5fc6105e..3dbbbd937 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -39,6 +39,9 @@ Do not advertise your local repo. Name of your Local Repo The advertised title of your local repo: %s + Use Private Connection + Use encrypted HTTPS:// connection for local repo + Use insecure HTTP:// connection for local repo Search Results App Details diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index fce6f7cb3..9c4f3e65b 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -51,6 +51,10 @@ + updateHistoryListeners = new ArrayList(); private List localRepoBonjourListeners = new ArrayList(); private List localRepoNameListeners = new ArrayList(); + private List localRepoHttpsListeners = new ArrayList(); private boolean isInitialized(String key) { return initialized.containsKey(key) && initialized.get(key); @@ -89,6 +92,10 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi return preferences.getBoolean(PREF_LOCAL_REPO_BONJOUR, DEFAULT_LOCAL_REPO_BONJOUR); } + public boolean isLocalRepoHttpsEnabled() { + return preferences.getBoolean(PREF_LOCAL_REPO_HTTPS, DEFAULT_LOCAL_REPO_HTTPS); + } + private String getDefaultLocalRepoName() { return (Build.BRAND + " " + Build.MODEL + String.valueOf(new Random().nextInt(9999))) .replaceAll(" ", "-"); @@ -178,6 +185,10 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi for ( ChangeListener listener : localRepoNameListeners ) { listener.onPreferenceChange(); } + } else if (key.equals(PREF_LOCAL_REPO_HTTPS)) { + for ( ChangeListener listener : localRepoHttpsListeners ) { + listener.onPreferenceChange(); + } } } @@ -205,6 +216,14 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi localRepoNameListeners.remove(listener); } + public void registerLocalRepoHttpsListeners(ChangeListener listener) { + localRepoHttpsListeners.add(listener); + } + + public void unregisterLocalRepoHttpsListeners(ChangeListener listener) { + localRepoHttpsListeners.remove(listener); + } + public static interface ChangeListener { public void onPreferenceChange(); } diff --git a/src/org/fdroid/fdroid/PreferencesActivity.java b/src/org/fdroid/fdroid/PreferencesActivity.java index 15e532e4a..9bf66d4b0 100644 --- a/src/org/fdroid/fdroid/PreferencesActivity.java +++ b/src/org/fdroid/fdroid/PreferencesActivity.java @@ -56,6 +56,7 @@ public class PreferencesActivity extends PreferenceActivity implements Preferences.PREF_IGN_TOUCH, Preferences.PREF_LOCAL_REPO_BONJOUR, Preferences.PREF_LOCAL_REPO_NAME, + Preferences.PREF_LOCAL_REPO_HTTPS, Preferences.PREF_CACHE_APK, Preferences.PREF_EXPERT, Preferences.PREF_ROOT_INSTALLER, @@ -154,6 +155,10 @@ public class PreferencesActivity extends PreferenceActivity implements } else if (key.equals(Preferences.PREF_LOCAL_REPO_NAME)) { textSummary(key, R.string.local_repo_name_summary); + } else if (key.equals(Preferences.PREF_LOCAL_REPO_HTTPS)) { + onoffSummary(key, R.string.local_repo_https_on, + R.string.local_repo_https_off); + } else if (key.equals(Preferences.PREF_CACHE_APK)) { onoffSummary(key, R.string.cache_downloaded_on, R.string.cache_downloaded_off); diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoService.java b/src/org/fdroid/fdroid/localrepo/LocalRepoService.java index 3e783493b..fedf2126d 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoService.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoService.java @@ -5,15 +5,12 @@ import android.annotation.SuppressLint; import android.app.*; import android.content.*; import android.os.*; -import android.preference.PreferenceManager; import android.support.v4.app.NotificationCompat; import android.support.v4.content.LocalBroadcastManager; import android.util.Log; -import org.fdroid.fdroid.FDroidApp; -import org.fdroid.fdroid.Preferences; +import org.fdroid.fdroid.*; import org.fdroid.fdroid.Preferences.ChangeListener; -import org.fdroid.fdroid.R; import org.fdroid.fdroid.net.LocalHTTPD; import org.fdroid.fdroid.net.WifiStateChangeService; import org.fdroid.fdroid.views.LocalRepoActivity; @@ -91,6 +88,23 @@ public class LocalRepoService extends Service { } }; + private ChangeListener localRepoHttpsChangeListener = new ChangeListener() { + @Override + public void onPreferenceChange() { + Log.i("localRepoHttpsChangeListener", "onPreferenceChange"); + if (localHttpd.isAlive()) { + new AsyncTask() { + @Override + protected Void doInBackground(Void... params) { + stopNetworkServices(); + startNetworkServices(); + return null; + } + }.execute(); + } + } + }; + @Override public void onCreate() { notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); @@ -137,23 +151,25 @@ public class LocalRepoService extends Service { startWebServer(); if (Preferences.get().isLocalRepoBonjourEnabled()) registerMDNSService(); + Preferences.get().registerLocalRepoHttpsListeners(localRepoHttpsChangeListener); } private void stopNetworkServices() { + Preferences.get().unregisterLocalRepoHttpsListeners(localRepoHttpsChangeListener); unregisterMDNSService(); stopWebServer(); } private void startWebServer() { - final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - Runnable webServer = new Runnable() { // Tell Eclipse this is not a leak because of Looper use. @SuppressLint("HandlerLeak") @Override public void run() { - localHttpd = new LocalHTTPD(getFilesDir(), - prefs.getBoolean("use_https", false)); + localHttpd = new LocalHTTPD( + LocalRepoService.this, + getFilesDir(), + Preferences.get().isLocalRepoHttpsEnabled()); Looper.prepare(); // must be run before creating a Handler webServerThreadHandler = new Handler() { @@ -200,11 +216,16 @@ public class LocalRepoService extends Service { final HashMap values = new HashMap(); values.put("path", "/fdroid/repo"); values.put("name", repoName); - // TODO set type based on "use HTTPS" pref values.put("fingerprint", FDroidApp.repo.fingerprint); - values.put("type", "fdroidrepo"); - pairService = ServiceInfo.create("_http._tcp.local.", - repoName, FDroidApp.port, 0, 0, values); + String type; + if (Preferences.get().isLocalRepoHttpsEnabled()) { + values.put("type", "fdroidrepos"); + type = "_https._tcp.local."; + } else { + values.put("type", "fdroidrepo"); + type = "_http._tcp.local."; + } + pairService = ServiceInfo.create(type, repoName, FDroidApp.port, 0, 0, values); new Thread(new Runnable() { @Override diff --git a/src/org/fdroid/fdroid/net/LocalHTTPD.java b/src/org/fdroid/fdroid/net/LocalHTTPD.java index 499da4967..eea5ef5d9 100644 --- a/src/org/fdroid/fdroid/net/LocalHTTPD.java +++ b/src/org/fdroid/fdroid/net/LocalHTTPD.java @@ -1,39 +1,33 @@ package org.fdroid.fdroid.net; +import android.content.Context; import android.util.Log; import android.webkit.MimeTypeMap; import fi.iki.elonen.NanoHTTPD; import org.fdroid.fdroid.FDroidApp; +import org.fdroid.fdroid.localrepo.LocalRepoKeyStore; -import java.io.File; -import java.io.FileInputStream; -import java.io.FilenameFilter; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.net.URLEncoder; -import java.util.Arrays; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; +import java.util.*; import javax.net.ssl.SSLServerSocketFactory; public class LocalHTTPD extends NanoHTTPD { private static final String TAG = LocalHTTPD.class.getCanonicalName(); + private final Context context; private final File webRoot; private final boolean logRequests; - public LocalHTTPD(File webRoot, boolean useHttps) { + public LocalHTTPD(Context context, File webRoot, boolean useHttps) { super(FDroidApp.ipAddressString, FDroidApp.port); this.logRequests = false; this.webRoot = webRoot; + this.context = context; if (useHttps) enableHTTPS(); } @@ -91,7 +85,15 @@ public class LocalHTTPD extends NanoHTTPD { } private void enableHTTPS() { - // TODO copy implementation from Kerplapp + try { + LocalRepoKeyStore localRepoKeyStore = LocalRepoKeyStore.get(context); + SSLServerSocketFactory factory = NanoHTTPD.makeSSLSocketFactory( + localRepoKeyStore.getKeyStore(), + localRepoKeyStore.getKeyManagers()); + makeSecure(factory); + } catch (IOException e) { + e.printStackTrace(); + } } private Response respond(Map headers, String uri) { @@ -305,7 +307,8 @@ public class LocalHTTPD extends NanoHTTPD { } for (String directory : directories) { String dir = directory + "/"; - msg.append("
  • ").append(dir) .append("
  • "); } diff --git a/src/org/fdroid/fdroid/net/WifiStateChangeService.java b/src/org/fdroid/fdroid/net/WifiStateChangeService.java index f7cd2e111..cecfb1c42 100644 --- a/src/org/fdroid/fdroid/net/WifiStateChangeService.java +++ b/src/org/fdroid/fdroid/net/WifiStateChangeService.java @@ -3,12 +3,10 @@ package org.fdroid.fdroid.net; import android.app.Service; import android.content.Intent; -import android.content.SharedPreferences; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.os.IBinder; -import android.preference.PreferenceManager; import android.support.v4.content.LocalBroadcastManager; import android.util.Log; @@ -59,9 +57,7 @@ public class WifiStateChangeService extends Service { FDroidApp.bssid = wifiInfo.getBSSID(); String scheme; - // TODO move this to Preferences.get().isHttpsEnabled(); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(WifiStateChangeService.this); - if (prefs.getBoolean("use_https", false)) + if (Preferences.get().isLocalRepoHttpsEnabled()) scheme = "https"; else scheme = "http"; diff --git a/src/org/fdroid/fdroid/views/QrWizardDownloadActivity.java b/src/org/fdroid/fdroid/views/QrWizardDownloadActivity.java index ffe90fae9..2952be63a 100644 --- a/src/org/fdroid/fdroid/views/QrWizardDownloadActivity.java +++ b/src/org/fdroid/fdroid/views/QrWizardDownloadActivity.java @@ -5,7 +5,6 @@ import android.app.Activity; import android.content.*; import android.os.Build; import android.os.Bundle; -import android.preference.PreferenceManager; import android.support.v4.content.LocalBroadcastManager; import android.util.Log; import android.view.View; @@ -13,9 +12,7 @@ import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; -import org.fdroid.fdroid.FDroidApp; -import org.fdroid.fdroid.QrGenAsyncTask; -import org.fdroid.fdroid.R; +import org.fdroid.fdroid.*; import org.fdroid.fdroid.net.WifiStateChangeService; public class QrWizardDownloadActivity extends Activity { @@ -62,9 +59,8 @@ public class QrWizardDownloadActivity extends Activity { }; private void resetNetworkInfo() { - final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); String qrString = ""; - if (prefs.getBoolean("use_https", false)) + if (Preferences.get().isLocalRepoHttpsEnabled()) qrString += "https"; else qrString += "http"; From 568e82c07e7468e6df3c98eb08564b266b33340e Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 May 2014 20:42:49 -0400 Subject: [PATCH 11/20] if LocalHTTPD fails to instantiate, log error and stop trying --- src/org/fdroid/fdroid/localrepo/LocalRepoService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoService.java b/src/org/fdroid/fdroid/localrepo/LocalRepoService.java index fedf2126d..fc182352d 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoService.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoService.java @@ -170,6 +170,10 @@ public class LocalRepoService extends Service { LocalRepoService.this, getFilesDir(), Preferences.get().isLocalRepoHttpsEnabled()); + if (localHttpd == null) { + Log.e(TAG, "localHttpd == null!"); + return; + } Looper.prepare(); // must be run before creating a Handler webServerThreadHandler = new Handler() { From 36de5884971a7c69adae0eface5c88a75dc6bc20 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 23 May 2014 11:20:40 -0400 Subject: [PATCH 12/20] add Bazaar/Kerplapp work to the changelog --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ec268b6b..9ea7c7e0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ ### Upcoming release (2014-06-??) +* added "local repo" support to host an FDroid repo on the device itself, with + full signed repo support, icons, and optional HTTPS:// + +* "Setup Local Repo" UI for setting up the local repo based on choosing from + any installed app on the device + +* find local repos on the same network using Bonjour/mDNS + +* directly send installed apps to other devices via Bluetooth and Android Beam + (NFC+Bluetooth), also compatible with Samsung/HTC S-Beam + * Fix some crashes * Translation updates From ab165a4d7b7a10cca1881298c9a63eea60b0e77b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 23 May 2014 12:44:26 -0400 Subject: [PATCH 13/20] omit unused spongycastle packages from eclipse/ant build Many of the classes in spongycastle are entirely unused in FDroid and dependencies. So remove them from the Eclipse/Ant build to speed things up and make the binaries smaller. --- extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1 | 1 - .../org/spongycastle/asn1/ASN1ApplicationSpecificParser.java | 1 + .../org/spongycastle/asn1/ASN1Boolean.java | 1 + .../org/spongycastle/asn1/ASN1Choice.java | 1 + .../org/spongycastle/asn1/ASN1Encodable.java | 1 + .../org/spongycastle/asn1/ASN1EncodableVector.java | 1 + .../org/spongycastle/asn1/ASN1Encoding.java | 1 + .../org/spongycastle/asn1/ASN1Enumerated.java | 1 + .../org/spongycastle/asn1/ASN1Exception.java | 1 + .../org/spongycastle/asn1/ASN1GeneralizedTime.java | 1 + .../org/spongycastle/asn1/ASN1Generator.java | 1 + .../org/spongycastle/asn1/ASN1InputStream.java | 1 + .../org/spongycastle/asn1/ASN1Integer.java | 1 + .../org/spongycastle/asn1/ASN1Null.java | 1 + .../org/spongycastle/asn1/ASN1Object.java | 1 + .../org/spongycastle/asn1/ASN1ObjectIdentifier.java | 1 + .../org/spongycastle/asn1/ASN1OctetString.java | 1 + .../org/spongycastle/asn1/ASN1OctetStringParser.java | 1 + .../org/spongycastle/asn1/ASN1OutputStream.java | 1 + .../org/spongycastle/asn1/ASN1ParsingException.java | 1 + .../org/spongycastle/asn1/ASN1Primitive.java | 1 + .../org/spongycastle/asn1/ASN1Sequence.java | 1 + .../org/spongycastle/asn1/ASN1SequenceParser.java | 1 + .../org/spongycastle/asn1/ASN1Set.java | 1 + .../org/spongycastle/asn1/ASN1SetParser.java | 1 + .../org/spongycastle/asn1/ASN1StreamParser.java | 1 + .../org/spongycastle/asn1/ASN1String.java | 1 + .../org/spongycastle/asn1/ASN1TaggedObject.java | 1 + .../org/spongycastle/asn1/ASN1TaggedObjectParser.java | 1 + .../org/spongycastle/asn1/ASN1UTCTime.java | 1 + .../org/spongycastle/asn1/BERApplicationSpecific.java | 1 + .../org/spongycastle/asn1/BERApplicationSpecificParser.java | 1 + .../org/spongycastle/asn1/BERConstructedOctetString.java | 1 + .../org/spongycastle/asn1/BERFactory.java | 1 + .../org/spongycastle/asn1/BERGenerator.java | 1 + .../org/spongycastle/asn1/BEROctetString.java | 1 + .../org/spongycastle/asn1/BEROctetStringGenerator.java | 1 + .../org/spongycastle/asn1/BEROctetStringParser.java | 1 + .../org/spongycastle/asn1/BEROutputStream.java | 1 + .../org/spongycastle/asn1/BERSequence.java | 1 + .../org/spongycastle/asn1/BERSequenceGenerator.java | 1 + .../org/spongycastle/asn1/BERSequenceParser.java | 1 + .../org/spongycastle/asn1/BERSet.java | 1 + .../org/spongycastle/asn1/BERSetParser.java | 1 + .../org/spongycastle/asn1/BERTaggedObject.java | 1 + .../org/spongycastle/asn1/BERTaggedObjectParser.java | 1 + .../org/spongycastle/asn1/BERTags.java | 1 + .../org/spongycastle/asn1/ConstructedOctetStream.java | 1 + .../org/spongycastle/asn1/DERApplicationSpecific.java | 1 + .../org/spongycastle/asn1/DERBMPString.java | 1 + .../org/spongycastle/asn1/DERBitString.java | 1 + .../org/spongycastle/asn1/DERBoolean.java | 1 + .../org/spongycastle/asn1/DEREncodableVector.java | 1 + .../org/spongycastle/asn1/DEREnumerated.java | 1 + .../org/spongycastle/asn1/DERExternal.java | 1 + .../org/spongycastle/asn1/DERExternalParser.java | 1 + .../org/spongycastle/asn1/DERFactory.java | 1 + .../org/spongycastle/asn1/DERGeneralString.java | 1 + .../org/spongycastle/asn1/DERGeneralizedTime.java | 1 + .../org/spongycastle/asn1/DERGenerator.java | 1 + .../org/spongycastle/asn1/DERIA5String.java | 1 + .../org/spongycastle/asn1/DERInteger.java | 1 + .../org/spongycastle/asn1/DERNull.java | 1 + .../org/spongycastle/asn1/DERNumericString.java | 1 + .../org/spongycastle/asn1/DERObjectIdentifier.java | 1 + .../org/spongycastle/asn1/DEROctetString.java | 1 + .../org/spongycastle/asn1/DEROctetStringParser.java | 1 + .../org/spongycastle/asn1/DEROutputStream.java | 1 + .../org/spongycastle/asn1/DERPrintableString.java | 1 + .../org/spongycastle/asn1/DERSequence.java | 1 + .../org/spongycastle/asn1/DERSequenceGenerator.java | 1 + .../org/spongycastle/asn1/DERSequenceParser.java | 1 + .../org/spongycastle/asn1/DERSet.java | 1 + .../org/spongycastle/asn1/DERSetParser.java | 1 + .../org/spongycastle/asn1/DERT61String.java | 1 + .../org/spongycastle/asn1/DERT61UTF8String.java | 1 + .../org/spongycastle/asn1/DERTaggedObject.java | 1 + .../org/spongycastle/asn1/DERTags.java | 1 + .../org/spongycastle/asn1/DERUTCTime.java | 1 + .../org/spongycastle/asn1/DERUTF8String.java | 1 + .../org/spongycastle/asn1/DERUniversalString.java | 1 + .../org/spongycastle/asn1/DERVisibleString.java | 1 + .../org/spongycastle/asn1/DLOutputStream.java | 1 + .../org/spongycastle/asn1/DLSequence.java | 1 + .../org/spongycastle/asn1/DLSet.java | 1 + .../org/spongycastle/asn1/DLTaggedObject.java | 1 + .../org/spongycastle/asn1/DefiniteLengthInputStream.java | 1 + .../org/spongycastle/asn1/InMemoryRepresentable.java | 1 + .../org/spongycastle/asn1/IndefiniteLengthInputStream.java | 1 + .../org/spongycastle/asn1/LazyConstructionEnumeration.java | 1 + .../org/spongycastle/asn1/LazyEncodedSequence.java | 1 + .../org/spongycastle/asn1/LimitedInputStream.java | 1 + .../org/spongycastle/asn1/OIDTokenizer.java | 1 + .../org/spongycastle/asn1/StreamUtil.java | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/bc | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cmp | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cms | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/crmf | 1 + .../symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cryptopro | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/eac | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/gnu | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/iana | 1 + .../symlinks-for-ant-and-eclipse/org/spongycastle/asn1/isismtt | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/kisa | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/misc | 1 + .../symlinks-for-ant-and-eclipse/org/spongycastle/asn1/mozilla | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/nist | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ntt | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ocsp | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/oiw | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/pkcs | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/sec | 1 + .../symlinks-for-ant-and-eclipse/org/spongycastle/asn1/teletrust | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/tsp | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ua | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/util | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x500 | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x509 | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x9 | 1 + extern/symlinks-for-ant-and-eclipse/org/spongycastle/dvcs | 1 - extern/symlinks-for-ant-and-eclipse/org/spongycastle/eac | 1 - .../symlinks-for-ant-and-eclipse/org/spongycastle/jce/examples | 1 - .../symlinks-for-ant-and-eclipse/org/spongycastle/jce/netscape | 1 - extern/symlinks-for-ant-and-eclipse/org/spongycastle/ocsp | 1 - extern/symlinks-for-ant-and-eclipse/org/spongycastle/openssl | 1 - extern/symlinks-for-ant-and-eclipse/org/spongycastle/tsp | 1 - extern/symlinks-for-ant-and-eclipse/org/spongycastle/voms | 1 - .../symlinks-for-ant-and-eclipse/org/spongycastle/x509/examples | 1 - 128 files changed, 118 insertions(+), 10 deletions(-) delete mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1 create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ApplicationSpecificParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Boolean.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Choice.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Encodable.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1EncodableVector.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Encoding.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Enumerated.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Exception.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1GeneralizedTime.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Generator.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1InputStream.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Integer.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Null.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Object.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ObjectIdentifier.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OctetString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OctetStringParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OutputStream.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ParsingException.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Primitive.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Sequence.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1SequenceParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Set.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1SetParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1StreamParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1String.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1TaggedObject.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1TaggedObjectParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1UTCTime.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERApplicationSpecific.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERApplicationSpecificParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERConstructedOctetString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERFactory.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERGenerator.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetStringGenerator.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetStringParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROutputStream.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequence.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequenceGenerator.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequenceParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSet.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSetParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTaggedObject.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTaggedObjectParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTags.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ConstructedOctetStream.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERApplicationSpecific.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBMPString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBitString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBoolean.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEREncodableVector.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEREnumerated.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERExternal.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERExternalParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERFactory.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGeneralString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGeneralizedTime.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGenerator.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERIA5String.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERInteger.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERNull.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERNumericString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERObjectIdentifier.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROctetString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROctetStringParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROutputStream.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERPrintableString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequence.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequenceGenerator.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequenceParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSet.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSetParser.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERT61String.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERT61UTF8String.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERTaggedObject.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERTags.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUTCTime.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUTF8String.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUniversalString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERVisibleString.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLOutputStream.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLSequence.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLSet.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLTaggedObject.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DefiniteLengthInputStream.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/InMemoryRepresentable.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/IndefiniteLengthInputStream.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LazyConstructionEnumeration.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LazyEncodedSequence.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LimitedInputStream.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/OIDTokenizer.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/StreamUtil.java create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/bc create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cmp create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cms create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/crmf create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cryptopro create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/eac create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/gnu create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/iana create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/isismtt create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/kisa create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/misc create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/mozilla create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/nist create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ntt create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ocsp create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/oiw create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/pkcs create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/sec create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/teletrust create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/tsp create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ua create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/util create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x500 create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x509 create mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x9 delete mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/dvcs delete mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/eac delete mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/examples delete mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/netscape delete mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/ocsp delete mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/openssl delete mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/tsp delete mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/voms delete mode 120000 extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/examples diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1 b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1 deleted file mode 120000 index f86b446de..000000000 --- a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1 +++ /dev/null @@ -1 +0,0 @@ -../../../spongycastle/core/src/main/java/org/spongycastle/asn1 \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ApplicationSpecificParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ApplicationSpecificParser.java new file mode 120000 index 000000000..b80518bc6 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ApplicationSpecificParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1ApplicationSpecificParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Boolean.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Boolean.java new file mode 120000 index 000000000..46914a84a --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Boolean.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Boolean.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Choice.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Choice.java new file mode 120000 index 000000000..aaa8f3e00 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Choice.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Choice.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Encodable.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Encodable.java new file mode 120000 index 000000000..3cebeff2b --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Encodable.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Encodable.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1EncodableVector.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1EncodableVector.java new file mode 120000 index 000000000..939efb240 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1EncodableVector.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1EncodableVector.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Encoding.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Encoding.java new file mode 120000 index 000000000..a3938539c --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Encoding.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Encoding.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Enumerated.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Enumerated.java new file mode 120000 index 000000000..480bac8c7 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Enumerated.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Enumerated.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Exception.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Exception.java new file mode 120000 index 000000000..4779396b3 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Exception.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Exception.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1GeneralizedTime.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1GeneralizedTime.java new file mode 120000 index 000000000..5b9ed8d6b --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1GeneralizedTime.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1GeneralizedTime.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Generator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Generator.java new file mode 120000 index 000000000..996ceffe5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Generator.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Generator.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1InputStream.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1InputStream.java new file mode 120000 index 000000000..712454dd8 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1InputStream.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1InputStream.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Integer.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Integer.java new file mode 120000 index 000000000..fef57beaf --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Integer.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Integer.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Null.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Null.java new file mode 120000 index 000000000..692f63865 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Null.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Null.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Object.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Object.java new file mode 120000 index 000000000..0af6647ae --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Object.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Object.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ObjectIdentifier.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ObjectIdentifier.java new file mode 120000 index 000000000..5fc25c364 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ObjectIdentifier.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1ObjectIdentifier.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OctetString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OctetString.java new file mode 120000 index 000000000..29bae24ee --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OctetString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1OctetString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OctetStringParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OctetStringParser.java new file mode 120000 index 000000000..9db1fdb50 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OctetStringParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1OctetStringParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OutputStream.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OutputStream.java new file mode 120000 index 000000000..9a55b266d --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1OutputStream.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1OutputStream.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ParsingException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ParsingException.java new file mode 120000 index 000000000..0ac9d7087 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1ParsingException.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1ParsingException.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Primitive.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Primitive.java new file mode 120000 index 000000000..7acb00ec6 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Primitive.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Primitive.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Sequence.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Sequence.java new file mode 120000 index 000000000..89629db8d --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Sequence.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Sequence.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1SequenceParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1SequenceParser.java new file mode 120000 index 000000000..368dda3b1 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1SequenceParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1SequenceParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Set.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Set.java new file mode 120000 index 000000000..0237569a5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1Set.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1Set.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1SetParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1SetParser.java new file mode 120000 index 000000000..8044c7a7f --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1SetParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1SetParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1StreamParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1StreamParser.java new file mode 120000 index 000000000..8aef586b8 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1StreamParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1StreamParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1String.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1String.java new file mode 120000 index 000000000..06858eb6b --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1String.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1String.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1TaggedObject.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1TaggedObject.java new file mode 120000 index 000000000..28eb29271 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1TaggedObject.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1TaggedObject.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1TaggedObjectParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1TaggedObjectParser.java new file mode 120000 index 000000000..d7ce7a8f5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1TaggedObjectParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1TaggedObjectParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1UTCTime.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1UTCTime.java new file mode 120000 index 000000000..d311500f1 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ASN1UTCTime.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ASN1UTCTime.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERApplicationSpecific.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERApplicationSpecific.java new file mode 120000 index 000000000..5231df9f3 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERApplicationSpecific.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERApplicationSpecific.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERApplicationSpecificParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERApplicationSpecificParser.java new file mode 120000 index 000000000..0429be0fb --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERApplicationSpecificParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERApplicationSpecificParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERConstructedOctetString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERConstructedOctetString.java new file mode 120000 index 000000000..7923c43fc --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERConstructedOctetString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERConstructedOctetString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERFactory.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERFactory.java new file mode 120000 index 000000000..d19bb6363 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERFactory.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERFactory.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERGenerator.java new file mode 120000 index 000000000..d405e3895 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERGenerator.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERGenerator.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetString.java new file mode 120000 index 000000000..557e55222 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BEROctetString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetStringGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetStringGenerator.java new file mode 120000 index 000000000..eba199ce6 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetStringGenerator.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BEROctetStringGenerator.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetStringParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetStringParser.java new file mode 120000 index 000000000..7f69aa3ee --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROctetStringParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BEROctetStringParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROutputStream.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROutputStream.java new file mode 120000 index 000000000..86cb15cf9 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BEROutputStream.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BEROutputStream.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequence.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequence.java new file mode 120000 index 000000000..454f99966 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequence.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERSequence.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequenceGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequenceGenerator.java new file mode 120000 index 000000000..e08e77993 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequenceGenerator.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERSequenceGenerator.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequenceParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequenceParser.java new file mode 120000 index 000000000..32b0aa14c --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSequenceParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERSequenceParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSet.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSet.java new file mode 120000 index 000000000..9afc5b1e2 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSet.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERSet.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSetParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSetParser.java new file mode 120000 index 000000000..e6830715b --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERSetParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERSetParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTaggedObject.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTaggedObject.java new file mode 120000 index 000000000..4340f7661 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTaggedObject.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERTaggedObject.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTaggedObjectParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTaggedObjectParser.java new file mode 120000 index 000000000..182cd1780 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTaggedObjectParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERTaggedObjectParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTags.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTags.java new file mode 120000 index 000000000..69146a042 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/BERTags.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/BERTags.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ConstructedOctetStream.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ConstructedOctetStream.java new file mode 120000 index 000000000..ff46ce1a9 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ConstructedOctetStream.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ConstructedOctetStream.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERApplicationSpecific.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERApplicationSpecific.java new file mode 120000 index 000000000..2df97223c --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERApplicationSpecific.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERApplicationSpecific.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBMPString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBMPString.java new file mode 120000 index 000000000..ade02fd1e --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBMPString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERBMPString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBitString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBitString.java new file mode 120000 index 000000000..fad6260bc --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBitString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERBitString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBoolean.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBoolean.java new file mode 120000 index 000000000..a8cd6a3e4 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERBoolean.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERBoolean.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEREncodableVector.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEREncodableVector.java new file mode 120000 index 000000000..3fe35aa9e --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEREncodableVector.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DEREncodableVector.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEREnumerated.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEREnumerated.java new file mode 120000 index 000000000..371e110db --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEREnumerated.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DEREnumerated.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERExternal.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERExternal.java new file mode 120000 index 000000000..ae0481a39 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERExternal.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERExternal.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERExternalParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERExternalParser.java new file mode 120000 index 000000000..737118bac --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERExternalParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERExternalParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERFactory.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERFactory.java new file mode 120000 index 000000000..c99b65378 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERFactory.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERFactory.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGeneralString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGeneralString.java new file mode 120000 index 000000000..1e875296c --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGeneralString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERGeneralString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGeneralizedTime.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGeneralizedTime.java new file mode 120000 index 000000000..bcdffffdd --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGeneralizedTime.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERGeneralizedTime.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGenerator.java new file mode 120000 index 000000000..c9c975cb1 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERGenerator.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERGenerator.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERIA5String.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERIA5String.java new file mode 120000 index 000000000..0c6f45042 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERIA5String.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERIA5String.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERInteger.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERInteger.java new file mode 120000 index 000000000..33ff46a26 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERInteger.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERInteger.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERNull.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERNull.java new file mode 120000 index 000000000..6234b0dc5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERNull.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERNull.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERNumericString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERNumericString.java new file mode 120000 index 000000000..3092bd349 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERNumericString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERNumericString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERObjectIdentifier.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERObjectIdentifier.java new file mode 120000 index 000000000..4b29a96ad --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERObjectIdentifier.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERObjectIdentifier.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROctetString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROctetString.java new file mode 120000 index 000000000..3d756aad5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROctetString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DEROctetString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROctetStringParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROctetStringParser.java new file mode 120000 index 000000000..19f2419ae --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROctetStringParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DEROctetStringParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROutputStream.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROutputStream.java new file mode 120000 index 000000000..94d7f2e1f --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DEROutputStream.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DEROutputStream.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERPrintableString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERPrintableString.java new file mode 120000 index 000000000..899e20023 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERPrintableString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERPrintableString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequence.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequence.java new file mode 120000 index 000000000..aa598d9f7 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequence.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERSequence.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequenceGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequenceGenerator.java new file mode 120000 index 000000000..97ecf9512 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequenceGenerator.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERSequenceGenerator.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequenceParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequenceParser.java new file mode 120000 index 000000000..057ddcb58 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSequenceParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERSequenceParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSet.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSet.java new file mode 120000 index 000000000..f3c1436b2 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSet.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERSet.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSetParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSetParser.java new file mode 120000 index 000000000..f0ea0277d --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERSetParser.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERSetParser.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERT61String.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERT61String.java new file mode 120000 index 000000000..70e1b866a --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERT61String.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERT61String.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERT61UTF8String.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERT61UTF8String.java new file mode 120000 index 000000000..d764d2ea3 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERT61UTF8String.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERT61UTF8String.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERTaggedObject.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERTaggedObject.java new file mode 120000 index 000000000..644bc4527 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERTaggedObject.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERTaggedObject.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERTags.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERTags.java new file mode 120000 index 000000000..6d1f73ac7 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERTags.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERTags.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUTCTime.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUTCTime.java new file mode 120000 index 000000000..6b2237a23 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUTCTime.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERUTCTime.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUTF8String.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUTF8String.java new file mode 120000 index 000000000..9238fbf55 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUTF8String.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERUTF8String.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUniversalString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUniversalString.java new file mode 120000 index 000000000..fa8c01e81 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERUniversalString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERUniversalString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERVisibleString.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERVisibleString.java new file mode 120000 index 000000000..262336fd8 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DERVisibleString.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DERVisibleString.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLOutputStream.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLOutputStream.java new file mode 120000 index 000000000..2f25558c2 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLOutputStream.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DLOutputStream.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLSequence.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLSequence.java new file mode 120000 index 000000000..3df51a2d7 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLSequence.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DLSequence.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLSet.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLSet.java new file mode 120000 index 000000000..a49f1e9a0 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLSet.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DLSet.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLTaggedObject.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLTaggedObject.java new file mode 120000 index 000000000..0eacf6481 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DLTaggedObject.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DLTaggedObject.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DefiniteLengthInputStream.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DefiniteLengthInputStream.java new file mode 120000 index 000000000..5fab3db87 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/DefiniteLengthInputStream.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/DefiniteLengthInputStream.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/InMemoryRepresentable.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/InMemoryRepresentable.java new file mode 120000 index 000000000..bd194ba50 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/InMemoryRepresentable.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/InMemoryRepresentable.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/IndefiniteLengthInputStream.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/IndefiniteLengthInputStream.java new file mode 120000 index 000000000..beb53b6d3 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/IndefiniteLengthInputStream.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/IndefiniteLengthInputStream.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LazyConstructionEnumeration.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LazyConstructionEnumeration.java new file mode 120000 index 000000000..fbfe9a040 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LazyConstructionEnumeration.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/LazyConstructionEnumeration.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LazyEncodedSequence.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LazyEncodedSequence.java new file mode 120000 index 000000000..8f8278e82 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LazyEncodedSequence.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/LazyEncodedSequence.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LimitedInputStream.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LimitedInputStream.java new file mode 120000 index 000000000..4bc579862 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/LimitedInputStream.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/LimitedInputStream.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/OIDTokenizer.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/OIDTokenizer.java new file mode 120000 index 000000000..d317d1ada --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/OIDTokenizer.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/OIDTokenizer.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/StreamUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/StreamUtil.java new file mode 120000 index 000000000..c176f3aef --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/StreamUtil.java @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/StreamUtil.java \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/bc b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/bc new file mode 120000 index 000000000..86f58bd50 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/bc @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/bc \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cmp b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cmp new file mode 120000 index 000000000..92373c910 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cmp @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/cmp \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cms b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cms new file mode 120000 index 000000000..ee4340bfa --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cms @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/cms \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/crmf b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/crmf new file mode 120000 index 000000000..94044c39d --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/crmf @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/crmf \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cryptopro b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cryptopro new file mode 120000 index 000000000..082d08ab3 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/cryptopro @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/cryptopro \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/eac b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/eac new file mode 120000 index 000000000..e6d18116d --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/eac @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/eac \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/gnu b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/gnu new file mode 120000 index 000000000..22ba3d2e6 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/gnu @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/gnu \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/iana b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/iana new file mode 120000 index 000000000..285b1090a --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/iana @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/iana \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/isismtt b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/isismtt new file mode 120000 index 000000000..4b6af9ceb --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/isismtt @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/isismtt \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/kisa b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/kisa new file mode 120000 index 000000000..53c8b0126 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/kisa @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/kisa \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/misc b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/misc new file mode 120000 index 000000000..55d904f6b --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/misc @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/misc \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/mozilla b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/mozilla new file mode 120000 index 000000000..07c6741b5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/mozilla @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/mozilla \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/nist b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/nist new file mode 120000 index 000000000..4a44b3191 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/nist @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/nist \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ntt b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ntt new file mode 120000 index 000000000..e4867a9f5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ntt @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ntt \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ocsp b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ocsp new file mode 120000 index 000000000..a815c35d9 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ocsp @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ocsp \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/oiw b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/oiw new file mode 120000 index 000000000..416ef949f --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/oiw @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/oiw \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/pkcs b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/pkcs new file mode 120000 index 000000000..9e681aec3 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/pkcs @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/pkcs \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/sec b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/sec new file mode 120000 index 000000000..c40020273 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/sec @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/sec \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/teletrust b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/teletrust new file mode 120000 index 000000000..2097d01a8 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/teletrust @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/teletrust \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/tsp b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/tsp new file mode 120000 index 000000000..0220060a7 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/tsp @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/tsp \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ua b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ua new file mode 120000 index 000000000..58e986944 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/ua @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/ua \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/util b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/util new file mode 120000 index 000000000..7bc3bb4e1 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/util @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/util \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x500 b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x500 new file mode 120000 index 000000000..c0a09c240 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x500 @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/x500 \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x509 b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x509 new file mode 120000 index 000000000..e79663739 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x509 @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/x509 \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x9 b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x9 new file mode 120000 index 000000000..e80d46d95 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/asn1/x9 @@ -0,0 +1 @@ +../../../../spongycastle/core/src/main/java/org/spongycastle/asn1/x9 \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/dvcs b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/dvcs deleted file mode 120000 index adf252aca..000000000 --- a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/dvcs +++ /dev/null @@ -1 +0,0 @@ -../../../spongycastle/pkix/src/main/java/org/spongycastle/dvcs \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/eac b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/eac deleted file mode 120000 index ea70100c6..000000000 --- a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/eac +++ /dev/null @@ -1 +0,0 @@ -../../../spongycastle/pkix/src/main/java/org/spongycastle/eac \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/examples b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/examples deleted file mode 120000 index 8803907ec..000000000 --- a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/examples +++ /dev/null @@ -1 +0,0 @@ -../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/examples \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/netscape b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/netscape deleted file mode 120000 index 119c75f17..000000000 --- a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/netscape +++ /dev/null @@ -1 +0,0 @@ -../../../../spongycastle/prov/src/main/java/org/spongycastle/jce/netscape \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/ocsp b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/ocsp deleted file mode 120000 index 43c075220..000000000 --- a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/ocsp +++ /dev/null @@ -1 +0,0 @@ -../../../spongycastle/prov/src/main/java/org/spongycastle/ocsp \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/openssl b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/openssl deleted file mode 120000 index a61b58700..000000000 --- a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/openssl +++ /dev/null @@ -1 +0,0 @@ -../../../spongycastle/pkix/src/main/java/org/spongycastle/openssl \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/tsp b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/tsp deleted file mode 120000 index 5a96b7496..000000000 --- a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/tsp +++ /dev/null @@ -1 +0,0 @@ -../../../spongycastle/pkix/src/main/java/org/spongycastle/tsp \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/voms b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/voms deleted file mode 120000 index 977548424..000000000 --- a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/voms +++ /dev/null @@ -1 +0,0 @@ -../../../spongycastle/pkix/src/main/java/org/spongycastle/voms \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/examples b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/examples deleted file mode 120000 index db4a94629..000000000 --- a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/examples +++ /dev/null @@ -1 +0,0 @@ -../../../../spongycastle/prov/src/main/java/org/spongycastle/x509/examples \ No newline at end of file From b7aad893a3d6047ac51e20d0d12e869b498d841d Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 May 2014 20:16:59 -0400 Subject: [PATCH 14/20] convert LocalRepoManager to a proper singleton This gives us lazy initialization that happens the first time an instance is needed. And Peter asked to have this more this way :) --- src/org/fdroid/fdroid/FDroidApp.java | 31 +++---------------- .../fdroid/localrepo/LocalRepoManager.java | 10 +++++- .../fdroid/net/WifiStateChangeService.java | 6 ++-- .../fdroid/views/LocalRepoActivity.java | 18 ++++++----- .../fragments/SelectLocalAppsFragment.java | 4 +-- 5 files changed, 30 insertions(+), 39 deletions(-) diff --git a/src/org/fdroid/fdroid/FDroidApp.java b/src/org/fdroid/fdroid/FDroidApp.java index c344db3c5..e5d8c13fe 100644 --- a/src/org/fdroid/fdroid/FDroidApp.java +++ b/src/org/fdroid/fdroid/FDroidApp.java @@ -23,22 +23,12 @@ import android.app.Activity; import android.app.Application; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothManager; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.content.SharedPreferences; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; +import android.content.*; +import android.content.pm.*; import android.content.pm.PackageManager.NameNotFoundException; -import android.content.pm.ResolveInfo; import android.net.Uri; import android.net.wifi.WifiManager; -import android.os.Build; -import android.os.IBinder; -import android.os.Message; -import android.os.Messenger; -import android.os.RemoteException; +import android.os.*; import android.preference.PreferenceManager; import android.util.Log; import android.widget.Toast; @@ -55,24 +45,16 @@ import org.fdroid.fdroid.compat.PRNGFixes; import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.InstalledAppCacheUpdater; import org.fdroid.fdroid.data.Repo; -import org.fdroid.fdroid.localrepo.LocalRepoManager; import org.fdroid.fdroid.localrepo.LocalRepoService; import org.fdroid.fdroid.net.WifiStateChangeService; import org.thoughtcrime.ssl.pinning.PinningTrustManager; import org.thoughtcrime.ssl.pinning.SystemKeyStore; import java.io.File; -import java.security.KeyManagementException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; +import java.security.*; import java.util.Set; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.TrustManagerFactory; -import javax.net.ssl.X509TrustManager; +import javax.net.ssl.*; public class FDroidApp extends Application { @@ -82,7 +64,6 @@ public class FDroidApp extends Application { public static String ssid = ""; public static String bssid = ""; public static Repo repo = new Repo(); - public static LocalRepoManager localRepo = null; public static Set selectedApps = null; // init in SelectLocalAppsFragment private static Messenger localRepoServiceMessenger = null; @@ -125,8 +106,6 @@ public class FDroidApp extends Application { // Apply the Google PRNG fixes to properly seed SecureRandom PRNGFixes.apply(); - localRepo = new LocalRepoManager(getApplicationContext()); - // Check that the installed app cache hasn't gotten out of sync somehow. // e.g. if we crashed/ran out of battery half way through responding // to a package installed intent. It doesn't really matter where diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java index 29b35fc71..86ab0bcfd 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java @@ -63,7 +63,15 @@ public class LocalRepoManager { public final File repoDir; public final File iconsDir; - public LocalRepoManager(Context c) { + private static LocalRepoManager localRepoManager; + + public static LocalRepoManager get(Context context) { + if(localRepoManager == null) + localRepoManager = new LocalRepoManager(context); + return localRepoManager; + } + + private LocalRepoManager(Context c) { context = c; pm = c.getPackageManager(); assetManager = c.getAssets(); diff --git a/src/org/fdroid/fdroid/net/WifiStateChangeService.java b/src/org/fdroid/fdroid/net/WifiStateChangeService.java index cecfb1c42..e1cdd09a6 100644 --- a/src/org/fdroid/fdroid/net/WifiStateChangeService.java +++ b/src/org/fdroid/fdroid/net/WifiStateChangeService.java @@ -14,6 +14,7 @@ import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.localrepo.LocalRepoKeyStore; +import org.fdroid.fdroid.localrepo.LocalRepoManager; import java.security.cert.Certificate; import java.util.Locale; @@ -66,8 +67,9 @@ public class WifiStateChangeService extends Service { scheme, FDroidApp.ipAddressString, FDroidApp.port); Certificate localCert = LocalRepoKeyStore.get(getApplication()).getCertificate(); FDroidApp.repo.fingerprint = Utils.calcFingerprint(localCert); - FDroidApp.localRepo.setUriString(FDroidApp.repo.address); - FDroidApp.localRepo.writeIndexPage( + LocalRepoManager lrm = LocalRepoManager.get(WifiStateChangeService.this); + lrm.setUriString(FDroidApp.repo.address); + lrm.writeIndexPage( Utils.getSharingUri(WifiStateChangeService.this, FDroidApp.repo).toString()); } catch (InterruptedException e) { e.printStackTrace(); diff --git a/src/org/fdroid/fdroid/views/LocalRepoActivity.java b/src/org/fdroid/fdroid/views/LocalRepoActivity.java index 411caed54..88cf18ea4 100644 --- a/src/org/fdroid/fdroid/views/LocalRepoActivity.java +++ b/src/org/fdroid/fdroid/views/LocalRepoActivity.java @@ -23,6 +23,7 @@ import android.widget.*; import org.fdroid.fdroid.*; import org.fdroid.fdroid.localrepo.LocalRepoKeyStore; +import org.fdroid.fdroid.localrepo.LocalRepoManager; import org.fdroid.fdroid.localrepo.LocalRepoService; import org.fdroid.fdroid.net.WifiStateChangeService; import org.spongycastle.operator.OperatorCreationException; @@ -73,7 +74,7 @@ public class LocalRepoActivity extends Activity { LocalBroadcastManager.getInstance(this).registerReceiver(onLocalRepoChange, new IntentFilter(LocalRepoService.STATE)); // if no local repo exists, create one with only FDroid in it - if (!FDroidApp.localRepo.xmlIndex.exists()) + if (!LocalRepoManager.get(this).xmlIndex.exists()) new UpdateAsyncTask(this, new String[] { getPackageName(), }).execute(); @@ -321,26 +322,27 @@ public class LocalRepoActivity extends Activity { @Override protected Void doInBackground(Void... params) { try { + final LocalRepoManager lrm = LocalRepoManager.get(LocalRepoActivity.this); publishProgress(getString(R.string.deleting_repo)); - FDroidApp.localRepo.deleteRepo(); + lrm.deleteRepo(); for (String app : selectedApps) { publishProgress(String.format(getString(R.string.adding_apks_format), app)); - FDroidApp.localRepo.addApp(getApplicationContext(), app); + lrm.addApp(getApplicationContext(), app); } - FDroidApp.localRepo.writeIndexPage(sharingUri.toString()); + lrm.writeIndexPage(sharingUri.toString()); publishProgress(getString(R.string.writing_index_xml)); - FDroidApp.localRepo.writeIndexXML(); + lrm.writeIndexXML(); publishProgress(getString(R.string.writing_index_jar)); - FDroidApp.localRepo.writeIndexJar(); + lrm.writeIndexJar(); publishProgress(getString(R.string.linking_apks)); - FDroidApp.localRepo.copyApksToRepo(); + lrm.copyApksToRepo(); publishProgress(getString(R.string.copying_icons)); // run the icon copy without progress, its not a blocker new AsyncTask() { @Override protected Void doInBackground(Void... params) { - FDroidApp.localRepo.copyIconsToRepo(); + lrm.copyIconsToRepo(); return null; } }.execute(); diff --git a/src/org/fdroid/fdroid/views/fragments/SelectLocalAppsFragment.java b/src/org/fdroid/fdroid/views/fragments/SelectLocalAppsFragment.java index 24b254cc6..785b9ac25 100644 --- a/src/org/fdroid/fdroid/views/fragments/SelectLocalAppsFragment.java +++ b/src/org/fdroid/fdroid/views/fragments/SelectLocalAppsFragment.java @@ -26,7 +26,6 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; -import android.util.Log; import android.view.ActionMode; import android.view.View; import android.widget.*; @@ -37,6 +36,7 @@ import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.InstalledAppProvider; import org.fdroid.fdroid.data.InstalledAppProvider.DataColumns; +import org.fdroid.fdroid.localrepo.LocalRepoManager; import org.fdroid.fdroid.views.SelectLocalAppsActivity; import java.util.HashSet; @@ -113,7 +113,7 @@ public class SelectLocalAppsFragment extends ListFragment // build list of existing apps from what is on the file system if (FDroidApp.selectedApps == null) { FDroidApp.selectedApps = new HashSet(); - for (String filename : FDroidApp.localRepo.repoDir.list()) { + for (String filename : LocalRepoManager.get(selectLocalAppsActivity).repoDir.list()) { if (filename.matches(".*\\.apk")) { String packageName = filename.substring(0, filename.indexOf("_")); FDroidApp.selectedApps.add(packageName); From d5488fc5f12359e43ea783136f653e7c70f50ea4 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 23 May 2014 16:26:07 -0400 Subject: [PATCH 15/20] LocalRepoKeyStore move all creation logic to the constructor This just makes the code clearer, and the get() method dead simple. --- .../fdroid/localrepo/LocalRepoKeyStore.java | 143 +++++++++--------- 1 file changed, 74 insertions(+), 69 deletions(-) diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java index c81d79a40..ec83f4447 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java @@ -2,6 +2,7 @@ package org.fdroid.fdroid.localrepo; import android.content.Context; +import android.util.Log; import org.fdroid.fdroid.FDroidApp; import org.spongycastle.asn1.ASN1Sequence; @@ -23,7 +24,6 @@ import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.Calendar; import java.util.Date; -import java.util.Formatter; import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; @@ -53,79 +53,84 @@ public class LocalRepoKeyStore { private static LocalRepoKeyStore localRepoKeyStore; private KeyStore keyStore; private KeyManager[] keyManagers; - private File backingFile; + private File keyStoreFile; public static LocalRepoKeyStore get(Context context) { - if (localRepoKeyStore == null) { - File appKeyStoreDir = context.getDir("keystore", Context.MODE_PRIVATE); - File keyStoreFile = new File(appKeyStoreDir, "kerplapp.bks"); - try { - localRepoKeyStore = new LocalRepoKeyStore(keyStoreFile); - } catch (UnrecoverableKeyException e) { - e.printStackTrace(); - } catch (KeyStoreException e) { - e.printStackTrace(); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (CertificateException e) { - e.printStackTrace(); - } catch (OperatorCreationException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } + if (localRepoKeyStore == null) + localRepoKeyStore = new LocalRepoKeyStore(context); return localRepoKeyStore; } - private LocalRepoKeyStore(File backingFile) throws KeyStoreException, NoSuchAlgorithmException, - CertificateException, IOException, OperatorCreationException, UnrecoverableKeyException { - this.backingFile = backingFile; - this.keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + private LocalRepoKeyStore(Context context) { + try { + Log.d(TAG, "generating LocalRepoKeyStore instance"); + File appKeyStoreDir = context.getDir("keystore", Context.MODE_PRIVATE); + this.keyStoreFile = new File(appKeyStoreDir, "kerplapp.bks"); + this.keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); - // If there isn't a persisted BKS keystore on disk we need to - // create a new empty keystore - if (!backingFile.exists()) { - // Init a new keystore with a blank passphrase - keyStore.load(null, "".toCharArray()); - } else { - keyStore.load(new FileInputStream(backingFile), "".toCharArray()); + // If there isn't a persisted BKS keystore on disk we need to + // create a new empty keystore + if (!keyStoreFile.exists()) { + // Init a new keystore with a blank passphrase + keyStore.load(null, "".toCharArray()); + } else { + keyStore.load(new FileInputStream(keyStoreFile), "".toCharArray()); + } + + /* + * If the keystore we loaded doesn't have an INDEX_CERT_ALIAS entry + * we need to generate a new random keypair and a self signed + * certificate for this slot. + */ + if (keyStore.getKey(INDEX_CERT_ALIAS, "".toCharArray()) == null) { + /* + * Generate a random key pair to associate with the + * INDEX_CERT_ALIAS certificate in the keystore. This keypair + * will be used for the HTTPS cert as well. + */ + KeyPair rndKeys = generateRandomKeypair(); + + /* + * Generate a self signed certificate for signing the index.jar + * We can't generate the HTTPS certificate until we know what + * the IP address will be to use for the CN field. + */ + X500Name subject = new X500Name(DEFAULT_INDEX_CERT_INFO); + Certificate indexCert = generateSelfSignedCertChain(rndKeys, subject); + + addToStore(INDEX_CERT_ALIAS, rndKeys, indexCert); + } + + /* + * Kerplapp uses its own KeyManager to to ensure the correct + * keystore alias is used for the correct purpose. With the default + * key manager it is not possible to specify that HTTP_CERT_ALIAS + * should be used for TLS and INDEX_CERT_ALIAS for signing the + * index.jar. + */ + KeyManagerFactory keyManagerFactory = KeyManagerFactory + .getInstance(KeyManagerFactory.getDefaultAlgorithm()); + + keyManagerFactory.init(keyStore, "".toCharArray()); + KeyManager defaultKeyManager = keyManagerFactory.getKeyManagers()[0]; + KeyManager wrappedKeyManager = new KerplappKeyManager( + (X509KeyManager) defaultKeyManager); + keyManagers = new KeyManager[] { + wrappedKeyManager + }; + } catch (UnrecoverableKeyException e) { + e.printStackTrace(); + } catch (KeyStoreException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (CertificateException e) { + e.printStackTrace(); + } catch (OperatorCreationException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); } - - /* - * If the keystore we loaded doesn't have an INDEX_CERT_ALIAS entry we - * need to generate a new random keypair and a self signed certificate - * for this slot. - */ - if (keyStore.getKey(INDEX_CERT_ALIAS, "".toCharArray()) == null) { - // Generate a random key pair to associate with the INDEX_CERT_ALIAS - // certificate in the keystore. This keypair will be used for the - // HTTPS cert as well. - KeyPair rndKeys = generateRandomKeypair(); - - // Generate a self signed certificate for signing the index.jar - // We can't generate the HTTPS certificate until we know what the IP - // address will be to use for the CN field. - X500Name subject = new X500Name(DEFAULT_INDEX_CERT_INFO); - Certificate indexCert = generateSelfSignedCertChain(rndKeys, subject); - - addToStore(INDEX_CERT_ALIAS, rndKeys, indexCert); - } - - // Kerplapp uses its own KeyManager to to ensure the correct keystore - // alias is used for the correct purpose. With the default key manager - // it is not possible to specify that HTTP_CERT_ALIAS should be used for - // TLS and INDEX_CERT_ALIAS for signing the index.jar. - KeyManagerFactory keyManagerFactory = KeyManagerFactory - .getInstance(KeyManagerFactory.getDefaultAlgorithm()); - - keyManagerFactory.init(keyStore, "".toCharArray()); - KeyManager defaultKeyManager = keyManagerFactory.getKeyManagers()[0]; - KeyManager wrappedKeyManager = new KerplappKeyManager( - (X509KeyManager) defaultKeyManager); - keyManagers = new KeyManager[] { - wrappedKeyManager - }; } public void setupHTTPSCertificate() throws CertificateException, @@ -149,7 +154,7 @@ public class LocalRepoKeyStore { } public File getKeyStoreFile() { - return backingFile; + return keyStoreFile; } public KeyStore getKeyStore() { @@ -235,7 +240,7 @@ public class LocalRepoKeyStore { keyStore.setKeyEntry(alias, kp.getPrivate(), "".toCharArray(), chain); - keyStore.store(new FileOutputStream(backingFile), "".toCharArray()); + keyStore.store(new FileOutputStream(keyStoreFile), "".toCharArray()); /* * After adding an entry to the keystore we need to create a fresh From b70986ef168bf17f91e817247e0d7779d33736ce Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 23 May 2014 16:49:48 -0400 Subject: [PATCH 16/20] LocalRepoKeyStore.setupHTTPSCertificate() handles all exceptions itself Since there is nothing happening with the Exceptions anyway, they should be handled in this method so that this method is easy to use elsewhere. --- .../fdroid/localrepo/LocalRepoKeyStore.java | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java index ec83f4447..b48a684e0 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java @@ -133,24 +133,25 @@ public class LocalRepoKeyStore { } } - public void setupHTTPSCertificate() throws CertificateException, - OperatorCreationException, KeyStoreException, NoSuchAlgorithmException, - FileNotFoundException, IOException, UnrecoverableKeyException { - // Get the existing private/public keypair to use for the HTTPS cert - KeyPair kerplappKeypair = getKerplappKeypair(); + public void setupHTTPSCertificate() { + try { + // Get the existing private/public keypair to use for the HTTPS cert + KeyPair kerplappKeypair = getKerplappKeypair(); - /* - * Once we have an IP address, that can be used as the hostname. We can - * generate a self signed cert with a valid CN field to stash into the - * keystore in a predictable place. If the IP address changes we should - * run this method again to stomp old HTTPS_CERT_ALIAS entries. - */ - X500Name subject = new X500Name("CN=" + FDroidApp.ipAddressString); - - Certificate indexCert = generateSelfSignedCertChain(kerplappKeypair, subject, - FDroidApp.ipAddressString); - - addToStore(HTTP_CERT_ALIAS, kerplappKeypair, indexCert); + /* + * Once we have an IP address, that can be used as the hostname. We + * can generate a self signed cert with a valid CN field to stash + * into the keystore in a predictable place. If the IP address + * changes we should run this method again to stomp old + * HTTPS_CERT_ALIAS entries. + */ + X500Name subject = new X500Name("CN=" + FDroidApp.ipAddressString); + Certificate indexCert = generateSelfSignedCertChain(kerplappKeypair, subject, + FDroidApp.ipAddressString); + addToStore(HTTP_CERT_ALIAS, kerplappKeypair, indexCert); + } catch (Exception e) { + e.printStackTrace(); + } } public File getKeyStoreFile() { From 91fc0f53837a7233f1651a7533a423e6c1195e60 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 23 May 2014 16:51:21 -0400 Subject: [PATCH 17/20] generate HTTPS certificate after wifi change Since the HTTPS certificate includes the current IP address in it, it needs to be regenerated each time that the IP address changes. It also can take a long time to run, especially on the first time, since it had to do things like create a key pair and make the certificate. Therefore it should be in a Service/AsyncTask. --- .../fdroid/net/WifiStateChangeService.java | 22 +++++++++++--- .../fdroid/views/LocalRepoActivity.java | 30 ------------------- 2 files changed, 18 insertions(+), 34 deletions(-) diff --git a/src/org/fdroid/fdroid/net/WifiStateChangeService.java b/src/org/fdroid/fdroid/net/WifiStateChangeService.java index e1cdd09a6..c24271ff9 100644 --- a/src/org/fdroid/fdroid/net/WifiStateChangeService.java +++ b/src/org/fdroid/fdroid/net/WifiStateChangeService.java @@ -2,6 +2,7 @@ package org.fdroid.fdroid.net; import android.app.Service; +import android.content.Context; import android.content.Intent; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; @@ -65,12 +66,24 @@ public class WifiStateChangeService extends Service { FDroidApp.repo.name = Preferences.get().getLocalRepoName(); FDroidApp.repo.address = String.format(Locale.ENGLISH, "%s://%s:%d/fdroid/repo", scheme, FDroidApp.ipAddressString, FDroidApp.port); - Certificate localCert = LocalRepoKeyStore.get(getApplication()).getCertificate(); + + Context context = WifiStateChangeService.this.getApplicationContext(); + LocalRepoKeyStore localRepoKeyStore = LocalRepoKeyStore.get(context); + Certificate localCert = localRepoKeyStore.getCertificate(); FDroidApp.repo.fingerprint = Utils.calcFingerprint(localCert); - LocalRepoManager lrm = LocalRepoManager.get(WifiStateChangeService.this); + LocalRepoManager lrm = LocalRepoManager.get(context); lrm.setUriString(FDroidApp.repo.address); - lrm.writeIndexPage( - Utils.getSharingUri(WifiStateChangeService.this, FDroidApp.repo).toString()); + lrm.writeIndexPage(Utils.getSharingUri(context, FDroidApp.repo).toString()); + + /* + * Once the IP address is known we need to generate a self + * signed certificate to use for HTTPS that has a CN field set + * to the ipAddressString. This must be run in the background + * because if this is the first time the singleton is run, it + * can take a while to instantiate. + */ + if (Preferences.get().isLocalRepoHttpsEnabled()) + localRepoKeyStore.setupHTTPSCertificate(); } catch (InterruptedException e) { e.printStackTrace(); } @@ -82,6 +95,7 @@ public class WifiStateChangeService extends Service { Intent intent = new Intent(BROADCAST); LocalBroadcastManager.getInstance(WifiStateChangeService.this).sendBroadcast(intent); WifiStateChangeService.this.stopSelf(); + FDroidApp.restartLocalRepoService(); } } diff --git a/src/org/fdroid/fdroid/views/LocalRepoActivity.java b/src/org/fdroid/fdroid/views/LocalRepoActivity.java index 88cf18ea4..554916b75 100644 --- a/src/org/fdroid/fdroid/views/LocalRepoActivity.java +++ b/src/org/fdroid/fdroid/views/LocalRepoActivity.java @@ -22,18 +22,10 @@ import android.view.*; import android.widget.*; import org.fdroid.fdroid.*; -import org.fdroid.fdroid.localrepo.LocalRepoKeyStore; import org.fdroid.fdroid.localrepo.LocalRepoManager; import org.fdroid.fdroid.localrepo.LocalRepoService; import org.fdroid.fdroid.net.WifiStateChangeService; -import org.spongycastle.operator.OperatorCreationException; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateException; import java.util.Locale; import java.util.Timer; import java.util.TimerTask; @@ -261,28 +253,6 @@ public class LocalRepoActivity extends Activity { fingerprintTextView.setVisibility(View.GONE); } - // Once the IP address is known we need to generate a self signed - // certificate to use for HTTPS that has a CN field set to the - // ipAddressString. We'll generate it even if useHttps is false - // to simplify having to detect when that preference changes. - try { - LocalRepoKeyStore.get(this).setupHTTPSCertificate(); - } catch (UnrecoverableKeyException e) { - e.printStackTrace(); - } catch (CertificateException e) { - e.printStackTrace(); - } catch (OperatorCreationException e) { - e.printStackTrace(); - } catch (KeyStoreException e) { - e.printStackTrace(); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - // the required NFC API was added in 4.0 aka Ice Cream Sandwich if (Build.VERSION.SDK_INT >= 14) { NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); From 0c039a6b5e173f44c206cd4ec16fc9623549c46e Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 23 May 2014 17:01:15 -0400 Subject: [PATCH 18/20] make writeIndexJar() call writeIndexXML(): only create signed repos! There is no longer a reason to expose writeIndexXML() since FDroid should always generate a signed repo. So make writeIndexXML() be called as part of writeIndexJar(). --- res/values/strings.xml | 2 +- .../fdroid/localrepo/LocalRepoManager.java | 19 ++++++++++++++----- .../fdroid/views/LocalRepoActivity.java | 2 -- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 3dbbbd937..f523a3cb5 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -177,8 +177,8 @@ Update Repo Deleting current repo… Adding %s to repo… - Writing raw index file (index.xml)… Writing signed index file (index.jar)… + Failed to create the repo index! Linking APKs into the repo… Copying app icons into the repo… Finished updating local repo diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java index 86ab0bcfd..1aef45b92 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java @@ -15,10 +15,9 @@ import android.graphics.drawable.Drawable; import android.preference.PreferenceManager; import android.text.TextUtils; import android.util.Log; +import android.widget.Toast; -import org.fdroid.fdroid.Hasher; -import org.fdroid.fdroid.Preferences; -import org.fdroid.fdroid.Utils; +import org.fdroid.fdroid.*; import org.fdroid.fdroid.data.App; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -33,7 +32,9 @@ import java.util.jar.JarOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; @@ -66,7 +67,7 @@ public class LocalRepoManager { private static LocalRepoManager localRepoManager; public static LocalRepoManager get(Context context) { - if(localRepoManager == null) + if (localRepoManager == null) localRepoManager = new LocalRepoManager(context); return localRepoManager; } @@ -276,7 +277,7 @@ public class LocalRepoManager { // TODO this needs to be ported to < android-8 @TargetApi(8) - public void writeIndexXML() throws Exception { + private void writeIndexXML() throws TransformerException, ParserConfigurationException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); @@ -436,6 +437,14 @@ public class LocalRepoManager { } public void writeIndexJar() throws IOException { + try { + writeIndexXML(); + } catch (Exception e) { + Toast.makeText(context, R.string.failed_to_create_index, Toast.LENGTH_LONG).show(); + e.printStackTrace(); + return; + } + BufferedOutputStream bo = new BufferedOutputStream( new FileOutputStream(xmlIndexJarUnsigned)); JarOutputStream jo = new JarOutputStream(bo); diff --git a/src/org/fdroid/fdroid/views/LocalRepoActivity.java b/src/org/fdroid/fdroid/views/LocalRepoActivity.java index 554916b75..8bb5582aa 100644 --- a/src/org/fdroid/fdroid/views/LocalRepoActivity.java +++ b/src/org/fdroid/fdroid/views/LocalRepoActivity.java @@ -300,8 +300,6 @@ public class LocalRepoActivity extends Activity { lrm.addApp(getApplicationContext(), app); } lrm.writeIndexPage(sharingUri.toString()); - publishProgress(getString(R.string.writing_index_xml)); - lrm.writeIndexXML(); publishProgress(getString(R.string.writing_index_jar)); lrm.writeIndexJar(); publishProgress(getString(R.string.linking_apks)); From 09fb7969b4cf31f669ca624f3738c80c1c5ef6c8 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 23 May 2014 17:07:41 -0400 Subject: [PATCH 19/20] do not include URL in index.xml because it will get out of date As far as I can tell, the 'url' metadata in index.xml is not used at all by the client. In order to keep it up-to-date in the local repo, it would have to regenerate index.xml and index.jar each time the IP address changed. That would mean a decent amount of work happening in the background, all the update an unused field in index.xml. --- src/org/fdroid/fdroid/localrepo/LocalRepoManager.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java index 1aef45b92..0b8abd410 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java @@ -298,7 +298,6 @@ public class LocalRepoManager { repo.setAttribute("pubkey", Hasher.hex(LocalRepoKeyStore.get(context).getCertificate())); long timestamp = System.currentTimeMillis() / 1000L; repo.setAttribute("timestamp", String.valueOf(timestamp)); - repo.setAttribute("url", uriString); rootElement.appendChild(repo); Element repoDesc = doc.createElement("description"); From 09db3524cf55fb9fc2f30cfc5902e1ed74d909da Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Sun, 25 May 2014 22:46:28 -0400 Subject: [PATCH 20/20] use getApplicationContext() when storing a passed in Context getApplicationContext() returns the Context of the application, which is guaranteed to have the same life as the app itself. Other Contexts, like an Activity, might go away during runtime. --- src/org/fdroid/fdroid/localrepo/LocalRepoManager.java | 2 +- src/org/fdroid/fdroid/net/LocalHTTPD.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java index 0b8abd410..5060b388b 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java @@ -73,7 +73,7 @@ public class LocalRepoManager { } private LocalRepoManager(Context c) { - context = c; + context = c.getApplicationContext(); pm = c.getPackageManager(); assetManager = c.getAssets(); prefs = PreferenceManager.getDefaultSharedPreferences(c); diff --git a/src/org/fdroid/fdroid/net/LocalHTTPD.java b/src/org/fdroid/fdroid/net/LocalHTTPD.java index eea5ef5d9..1eaa2e67d 100644 --- a/src/org/fdroid/fdroid/net/LocalHTTPD.java +++ b/src/org/fdroid/fdroid/net/LocalHTTPD.java @@ -27,7 +27,7 @@ public class LocalHTTPD extends NanoHTTPD { super(FDroidApp.ipAddressString, FDroidApp.port); this.logRequests = false; this.webRoot = webRoot; - this.context = context; + this.context = context.getApplicationContext(); if (useHttps) enableHTTPS(); }