diff --git a/.classpath b/.classpath index 82469dc51..fadbb9f4b 100644 --- a/.classpath +++ b/.classpath @@ -4,8 +4,7 @@ - - + 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 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/symlinks-for-ant-and-eclipse/kellinwood b/extern/symlinks-for-ant-and-eclipse/kellinwood new file mode 120000 index 000000000..443258ed6 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/kellinwood @@ -0,0 +1 @@ +../zipsigner/src/main/java/kellinwood \ 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/cert b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/cert new file mode 120000 index 000000000..72ff90805 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/cert @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/cert \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/cms b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/cms new file mode 120000 index 000000000..d5222f6c5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/cms @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/cms \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/crypto b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/crypto new file mode 120000 index 000000000..73c1163b2 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/crypto @@ -0,0 +1 @@ +../../../spongycastle/core/src/main/java/org/spongycastle/crypto \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/i18n b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/i18n new file mode 120000 index 000000000..af504fb4a --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/i18n @@ -0,0 +1 @@ +../../../spongycastle/core/src/main/java/org/spongycastle/i18n \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jcajce b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jcajce new file mode 120000 index 000000000..aeb7c4c59 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jcajce @@ -0,0 +1 @@ +../../../spongycastle/prov/src/main/java/org/spongycastle/jcajce \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECGOST3410NamedCurveTable.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECGOST3410NamedCurveTable.java new file mode 120000 index 000000000..85a167493 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECKeyUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECKeyUtil.java new file mode 120000 index 000000000..247a8b7a5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECNamedCurveTable.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECNamedCurveTable.java new file mode 120000 index 000000000..1c70aaf03 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECPointUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/ECPointUtil.java new file mode 120000 index 000000000..4ee1c0b51 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/MultiCertStoreParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/MultiCertStoreParameters.java new file mode 120000 index 000000000..82e03628a --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PKCS10CertificationRequest.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PKCS10CertificationRequest.java new file mode 120000 index 000000000..595c7b9fa --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PKCS12Util.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PKCS12Util.java new file mode 120000 index 000000000..1c65f4081 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PrincipalUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/PrincipalUtil.java new file mode 120000 index 000000000..a6352af2e --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509KeyUsage.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509KeyUsage.java new file mode 120000 index 000000000..6f7a30366 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509LDAPCertStoreParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509LDAPCertStoreParameters.java new file mode 120000 index 000000000..69b78a6bc --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509Principal.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/X509Principal.java new file mode 120000 index 000000000..9e93b34ee --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/exception b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/exception new file mode 120000 index 000000000..18723f8d3 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/interfaces b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/interfaces new file mode 120000 index 000000000..2e12d5422 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/AnnotatedException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/AnnotatedException.java new file mode 120000 index 000000000..a17cc1a5b --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BouncyCastleProvider.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BouncyCastleProvider.java new file mode 120000 index 000000000..19b9993ff --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BouncyCastleProviderConfiguration.java new file mode 120000 index 000000000..6186311d7 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenJCEBlockCipher.java new file mode 120000 index 000000000..80ab322c4 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenKDF2BytesGenerator.java new file mode 120000 index 000000000..ed461e38a --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenPBE.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/BrokenPBE.java new file mode 120000 index 000000000..dedf6d02d --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertPathValidatorUtilities.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertPathValidatorUtilities.java new file mode 120000 index 000000000..0b15e047f --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertStatus.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertStatus.java new file mode 120000 index 000000000..0f700b517 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertStoreCollectionSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/CertStoreCollectionSpi.java new file mode 120000 index 000000000..d57bc96c2 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/DHUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/DHUtil.java new file mode 120000 index 000000000..0a5db15e8 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/ExtCRLException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/ExtCRLException.java new file mode 120000 index 000000000..9e8263158 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEDHPrivateKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEDHPrivateKey.java new file mode 120000 index 000000000..03684ee5e --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEDHPublicKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEDHPublicKey.java new file mode 120000 index 000000000..9803a0249 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEECPrivateKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEECPrivateKey.java new file mode 120000 index 000000000..7e16440c1 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEECPublicKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEECPublicKey.java new file mode 120000 index 000000000..90f4a70c7 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEElGamalPrivateKey.java new file mode 120000 index 000000000..84866b855 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEElGamalPublicKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEElGamalPublicKey.java new file mode 120000 index 000000000..f7291294d --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPrivateCrtKey.java new file mode 120000 index 000000000..ebebdb693 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPrivateKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPrivateKey.java new file mode 120000 index 000000000..06ae733fc --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPublicKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCERSAPublicKey.java new file mode 120000 index 000000000..fe29ccd3d --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEStreamCipher.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JCEStreamCipher.java new file mode 120000 index 000000000..a72744fd9 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKDSAPrivateKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKDSAPrivateKey.java new file mode 120000 index 000000000..9c81bd9d6 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKDSAPublicKey.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKDSAPublicKey.java new file mode 120000 index 000000000..d7f2b4792 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/JDKPKCS12StoreParameter.java new file mode 120000 index 000000000..75e6cf659 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/MultiCertStoreSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/MultiCertStoreSpi.java new file mode 120000 index 000000000..e37877c27 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PEMUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PEMUtil.java new file mode 120000 index 000000000..a8d3b6b50 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXAttrCertPathBuilderSpi.java new file mode 120000 index 000000000..d25de9aa8 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXAttrCertPathValidatorSpi.java new file mode 120000 index 000000000..bcf9c6677 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCRLUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCRLUtil.java new file mode 120000 index 000000000..b15fdd33e --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCertPathBuilderSpi.java new file mode 120000 index 000000000..389434741 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXCertPathValidatorSpi.java new file mode 120000 index 000000000..dbab12bb9 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXNameConstraintValidator.java new file mode 120000 index 000000000..870e97815 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXNameConstraintValidatorException.java new file mode 120000 index 000000000..b2b022602 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXPolicyNode.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/PKIXPolicyNode.java new file mode 120000 index 000000000..f135d82f9 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/RFC3280CertPathUtilities.java new file mode 120000 index 000000000..b1545f960 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/RFC3281CertPathUtilities.java new file mode 120000 index 000000000..9bf137403 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/ReasonsMask.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/ReasonsMask.java new file mode 120000 index 000000000..69ea8ebf5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509AttrCertParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509AttrCertParser.java new file mode 120000 index 000000000..af1537def --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLEntryObject.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLEntryObject.java new file mode 120000 index 000000000..e5b5192ec --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLObject.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLObject.java new file mode 120000 index 000000000..9f6d01eb2 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CRLParser.java new file mode 120000 index 000000000..9ae15edbe --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertPairParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertPairParser.java new file mode 120000 index 000000000..b5b0129a3 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertParser.java new file mode 120000 index 000000000..98fed98e6 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertificateObject.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509CertificateObject.java new file mode 120000 index 000000000..21e2f213c --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509SignatureUtil.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509SignatureUtil.java new file mode 120000 index 000000000..b89b84852 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreAttrCertCollection.java new file mode 120000 index 000000000..f7b93deab --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCRLCollection.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCRLCollection.java new file mode 120000 index 000000000..c3b1afe9f --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCertCollection.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCertCollection.java new file mode 120000 index 000000000..66ee054e2 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCertPairCollection.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/provider/X509StoreCertPairCollection.java new file mode 120000 index 000000000..3821264c3 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/jce/spec b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/jce/spec new file mode 120000 index 000000000..a57149cc8 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/math b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/math new file mode 120000 index 000000000..879523869 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/math @@ -0,0 +1 @@ +../../../spongycastle/core/src/main/java/org/spongycastle/math \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/mozilla b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/mozilla new file mode 120000 index 000000000..023e32f6e --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/mozilla @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/mozilla \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/operator b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/operator new file mode 120000 index 000000000..7307766ea --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/operator @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/operator \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pkcs b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pkcs new file mode 120000 index 000000000..20235a46a --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pkcs @@ -0,0 +1 @@ +../../../spongycastle/pkix/src/main/java/org/spongycastle/pkcs \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/asn1 b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/asn1 new file mode 120000 index 000000000..882f32de4 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/crypto b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/crypto new file mode 120000 index 000000000..f68dc7d37 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/jcajce b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/jcajce new file mode 120000 index 000000000..f7ee4db36 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/math b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/pqc/math new file mode 120000 index 000000000..c54bddb65 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/util b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/util new file mode 120000 index 000000000..26566a804 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/util @@ -0,0 +1 @@ +../../../spongycastle/core/src/main/java/org/spongycastle/util \ No newline at end of file diff --git a/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/AttributeCertificateHolder.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/AttributeCertificateHolder.java new file mode 120000 index 000000000..449cbc84c --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/AttributeCertificateIssuer.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/AttributeCertificateIssuer.java new file mode 120000 index 000000000..e95b91120 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/CertPathReviewerException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/CertPathReviewerException.java new file mode 120000 index 000000000..328857ece --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtCertificateEncodingException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtCertificateEncodingException.java new file mode 120000 index 000000000..a4ebd94d6 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtendedPKIXBuilderParameters.java new file mode 120000 index 000000000..91138abcd --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtendedPKIXParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/ExtendedPKIXParameters.java new file mode 120000 index 000000000..8e8b5d3a5 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/NoSuchParserException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/NoSuchParserException.java new file mode 120000 index 000000000..5f1d75cc8 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/NoSuchStoreException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/NoSuchStoreException.java new file mode 120000 index 000000000..c30100a98 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/PKIXAttrCertChecker.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/PKIXAttrCertChecker.java new file mode 120000 index 000000000..f756fae9f --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/PKIXCertPathReviewer.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/PKIXCertPathReviewer.java new file mode 120000 index 000000000..4dde00db4 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Attribute.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Attribute.java new file mode 120000 index 000000000..00d7d88b2 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509AttributeCertStoreSelector.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509AttributeCertStoreSelector.java new file mode 120000 index 000000000..2325963d3 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509AttributeCertificate.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509AttributeCertificate.java new file mode 120000 index 000000000..d7c7d4487 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CRLStoreSelector.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CRLStoreSelector.java new file mode 120000 index 000000000..f89602f11 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertPairStoreSelector.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertPairStoreSelector.java new file mode 120000 index 000000000..2ab1dc1f8 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertStoreSelector.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertStoreSelector.java new file mode 120000 index 000000000..32e539801 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertificatePair.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CertificatePair.java new file mode 120000 index 000000000..f77f16468 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CollectionStoreParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509CollectionStoreParameters.java new file mode 120000 index 000000000..06f1e6e1b --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Store.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Store.java new file mode 120000 index 000000000..c6b2546ec --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StoreParameters.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StoreParameters.java new file mode 120000 index 000000000..d88eba314 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StoreSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StoreSpi.java new file mode 120000 index 000000000..bec53a9d6 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StreamParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StreamParser.java new file mode 120000 index 000000000..6434dae4a --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StreamParserSpi.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509StreamParserSpi.java new file mode 120000 index 000000000..9826a7183 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Util.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509Util.java new file mode 120000 index 000000000..e5ce6324b --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V1CertificateGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V1CertificateGenerator.java new file mode 120000 index 000000000..0f9c09f01 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2AttributeCertificate.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2AttributeCertificate.java new file mode 120000 index 000000000..4189c2d78 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2AttributeCertificateGenerator.java new file mode 120000 index 000000000..1179a0fd8 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2CRLGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V2CRLGenerator.java new file mode 120000 index 000000000..494902bd6 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V3CertificateGenerator.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/X509V3CertificateGenerator.java new file mode 120000 index 000000000..a53b0b38b --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/extension b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/extension new file mode 120000 index 000000000..493af5f83 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/util/StreamParser.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/util/StreamParser.java new file mode 120000 index 000000000..c92a26626 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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/symlinks-for-ant-and-eclipse/org/spongycastle/x509/util/StreamParsingException.java b/extern/symlinks-for-ant-and-eclipse/org/spongycastle/x509/util/StreamParsingException.java new file mode 120000 index 000000000..2f2fa9862 --- /dev/null +++ b/extern/symlinks-for-ant-and-eclipse/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 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 diff --git a/res/values/strings.xml b/res/values/strings.xml index 179619796..f523a3cb5 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 @@ -174,7 +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/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 @@ + 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/Preferences.java b/src/org/fdroid/fdroid/Preferences.java index 0355395f9..ca6d750fd 100644 --- a/src/org/fdroid/fdroid/Preferences.java +++ b/src/org/fdroid/fdroid/Preferences.java @@ -46,6 +46,7 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi public static final String PREF_SYSTEM_INSTALLER = "systemInstaller"; public static final String PREF_LOCAL_REPO_BONJOUR = "localRepoBonjour"; public static final String PREF_LOCAL_REPO_NAME = "localRepoName"; + public static final String PREF_LOCAL_REPO_HTTPS = "localRepoHttps"; private static final boolean DEFAULT_COMPACT_LAYOUT = false; private static final boolean DEFAULT_ROOTED = true; @@ -53,6 +54,7 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi private static final boolean DEFAULT_ROOT_INSTALLER = false; private static final boolean DEFAULT_SYSTEM_INSTALLER = false; private static final boolean DEFAULT_LOCAL_REPO_BONJOUR = true; + private static final boolean DEFAULT_LOCAL_REPO_HTTPS = false; private boolean compactLayout = DEFAULT_COMPACT_LAYOUT; private boolean filterAppsRequiringRoot = DEFAULT_ROOTED; @@ -64,6 +66,7 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi private List 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/LocalRepoKeyStore.java b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java new file mode 100644 index 000000000..b48a684e0 --- /dev/null +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java @@ -0,0 +1,354 @@ + +package org.fdroid.fdroid.localrepo; + +import android.content.Context; +import android.util.Log; + +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 javax.net.ssl.KeyManager; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.X509KeyManager; + +import kellinwood.security.zipsigner.ZipSigner; + +// TODO Address exception handling in a uniform way throughout + +public class LocalRepoKeyStore { + private static final String TAG = "KerplappKeyStore"; + + static { + Security.insertProviderAt( + new org.spongycastle.jce.provider.BouncyCastleProvider(), 1); + } + + 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 static LocalRepoKeyStore localRepoKeyStore; + private KeyStore keyStore; + private KeyManager[] keyManagers; + private File keyStoreFile; + + public static LocalRepoKeyStore get(Context context) { + if (localRepoKeyStore == null) + localRepoKeyStore = new LocalRepoKeyStore(context); + return localRepoKeyStore; + } + + 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 (!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(); + } + } + + 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); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public File getKeyStoreFile() { + return keyStoreFile; + } + + 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; + } + + 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(keyStoreFile), "".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)); + 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); + } + } + +} diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java b/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java index 21108edd1..5060b388b 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.Preferences; -import org.fdroid.fdroid.Utils; -import org.fdroid.fdroid.data.Apk; +import org.fdroid.fdroid.*; import org.fdroid.fdroid.data.App; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -28,10 +27,14 @@ 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; +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; @@ -42,6 +45,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 +57,23 @@ 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) { + 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.getApplicationContext(); pm = c.getPackageManager(); assetManager = c.getAssets(); prefs = PreferenceManager.getDefaultSharedPreferences(c); @@ -70,6 +85,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()) @@ -260,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(); @@ -278,9 +295,9 @@ 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); rootElement.appendChild(repo); Element repoDesc = doc.createElement("description"); @@ -417,4 +434,38 @@ public class LocalRepoManager { transformer.transform(domSource, result); } + + 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); + + 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..fc182352d 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,29 @@ 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()); + if (localHttpd == null) { + Log.e(TAG, "localHttpd == null!"); + return; + } Looper.prepare(); // must be run before creating a Handler webServerThreadHandler = new Handler() { @@ -200,11 +220,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); + values.put("fingerprint", FDroidApp.repo.fingerprint); + 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..1eaa2e67d 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.getApplicationContext(); 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/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(); } diff --git a/src/org/fdroid/fdroid/net/WifiStateChangeService.java b/src/org/fdroid/fdroid/net/WifiStateChangeService.java index 78b35abe6..c24271ff9 100644 --- a/src/org/fdroid/fdroid/net/WifiStateChangeService.java +++ b/src/org/fdroid/fdroid/net/WifiStateChangeService.java @@ -4,19 +4,20 @@ 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; 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; 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; public class WifiStateChangeService extends Service { @@ -58,18 +59,31 @@ 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"; FDroidApp.repo.name = Preferences.get().getLocalRepoName(); FDroidApp.repo.address = String.format(Locale.ENGLISH, "%s://%s:%d/fdroid/repo", scheme, FDroidApp.ipAddressString, FDroidApp.port); - FDroidApp.localRepo.setUriString(FDroidApp.repo.address); - FDroidApp.localRepo.writeIndexPage( - Utils.getSharingUri(WifiStateChangeService.this, FDroidApp.repo).toString()); + + Context context = WifiStateChangeService.this.getApplicationContext(); + LocalRepoKeyStore localRepoKeyStore = LocalRepoKeyStore.get(context); + Certificate localCert = localRepoKeyStore.getCertificate(); + FDroidApp.repo.fingerprint = Utils.calcFingerprint(localCert); + LocalRepoManager lrm = LocalRepoManager.get(context); + lrm.setUriString(FDroidApp.repo.address); + 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(); } @@ -81,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 b7d4e3f21..8bb5582aa 100644 --- a/src/org/fdroid/fdroid/views/LocalRepoActivity.java +++ b/src/org/fdroid/fdroid/views/LocalRepoActivity.java @@ -22,6 +22,7 @@ import android.view.*; import android.widget.*; import org.fdroid.fdroid.*; +import org.fdroid.fdroid.localrepo.LocalRepoManager; import org.fdroid.fdroid.localrepo.LocalRepoService; import org.fdroid.fdroid.net.WifiStateChangeService; @@ -65,7 +66,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(); @@ -291,24 +292,25 @@ 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()); - publishProgress(getString(R.string.writing_index_xml)); - FDroidApp.localRepo.writeIndexXML(); + lrm.writeIndexPage(sharingUri.toString()); + publishProgress(getString(R.string.writing_index_jar)); + 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/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"; 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")); } }); 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);