1e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom#
2e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom# Copyright (C) 2010 The Android Open Source Project
3e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom#
4e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom# Licensed under the Apache License, Version 2.0 (the "License");
5e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom# you may not use this file except in compliance with the License.
6e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom# You may obtain a copy of the License at
7e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom#
8e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom#      http://www.apache.org/licenses/LICENSE-2.0
9e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom#
10e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom# Unless required by applicable law or agreed to in writing, software
11e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom# distributed under the License is distributed on an "AS IS" BASIS,
12e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom# See the License for the specific language governing permissions and
14e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom# limitations under the License.
15e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom#
16e143538c27e395546132cbbad0093efd319b190cBrian CarlstromLOCAL_PATH := $(call my-dir)
17e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom
18e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromall_bcprov_src_files := $(call all-java-files-under,bcprov/src/main/java)
19e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
20e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromandroid_bcprov_src_files := $(filter-out \
21e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom bcprov/src/main/java/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java, \
22e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom $(all_bcprov_src_files))
23e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
24e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromri_bcprov_src_files := $(filter-out \
25e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom bcprov/src/main/java/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java \
26e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom bcprov/src/main/java/org/bouncycastle/crypto/digests/OpenSSLDigest.java, \
27e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom $(all_bcprov_src_files))
288436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilson
29e143538c27e395546132cbbad0093efd319b190cBrian Carlstrominclude $(CLEAR_VARS)
30e143538c27e395546132cbbad0093efd319b190cBrian CarlstromLOCAL_MODULE := bouncycastle
31fa0f9bd8b89584a58337208fe2a0c3ce890e76a1Jesse WilsonLOCAL_MODULE_TAGS := optional
32e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_SRC_FILES := $(android_bcprov_src_files)
33c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian CarlstromLOCAL_JAVACFLAGS := -encoding UTF-8
3410261d9785b26fbcfe273b7b8119907fda09a999Brian CarlstromLOCAL_JAVA_LIBRARIES := core
3510261d9785b26fbcfe273b7b8119907fda09a999Brian CarlstromLOCAL_NO_STANDARD_LIBRARIES := true
36434fc78f07ab056c9206e34abc6d5d4f832adfecBrian CarlstromLOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
3710261d9785b26fbcfe273b7b8119907fda09a999Brian Carlstrominclude $(BUILD_JAVA_LIBRARY)
38e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom
398436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilson# This is used to generate a list of what is unused so it can be removed when bouncycastle is updated.
40e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom# Based on "Finding dead code" example in ProGuard manual at http://proguard.sourceforge.net/
41e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom.PHONY: bouncycastle-proguard-deadcode
42e143538c27e395546132cbbad0093efd319b190cBrian Carlstrombouncycastle-proguard-deadcode: $(full_classes_compiled_jar) $(full_java_libs)
43e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom	$(PROGUARD) \
44e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-injars $(full_classes_compiled_jar) \
45e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-libraryjars "$(call normalize-path-list,$(addsuffix (!org/bouncycastle/**.class,!org/apache/harmony/xnet/provider/jsse/OpenSSLMessageDigest.class),$(full_java_libs)))" \
46e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-dontoptimize \
47e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-dontobfuscate \
48e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-dontpreverify \
49e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-ignorewarnings \
50e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-printusage \
51e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-keep class org.bouncycastle.jce.provider.BouncyCastleProvider "{ public protected *; }" \
52e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-keep class org.bouncycastle.jce.provider.symmetric.AESMappings "{ public protected *; }" \
53e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-keep class org.bouncycastle.asn1.ASN1TaggedObject "{ public protected *; }" \
54e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-keep class org.bouncycastle.asn1.x509.CertificateList "{ public protected *; }" \
55e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-keep class org.bouncycastle.crypto.AsymmetricBlockCipher "{ public protected *; }" \
56e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-keep class org.bouncycastle.x509.ExtendedPKIXBuilderParameters "{ public protected *; }" \
57e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		`(find $(LOCAL_PATH) -name '*.java' | xargs grep '"org.bouncycastle' | egrep '  (put|add)' | sed -e 's/");//' -e 's/.*"//'; \
58e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		  find $(LOCAL_PATH) -name '*.java' | xargs grep '  addHMACAlgorithm' | sed 's/"org.bouncycastle/\norg.bouncycastle/g' | grep ^org.bouncycastle | sed 's/".*//'; \
59e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom                  find . -name '*.java' | xargs grep 'import org.bouncycastle' | grep -v /bouncycastle/ | sed -e 's/.*:import //' -e 's/;//') \
60e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		  | sed -e 's/^/-keep class /' -e 's/$$/ { public protected \*; } /' | sort | uniq` \
61e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-keepclassmembers "class * { \
62e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		    static final %                *; \
63e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		    static final java.lang.String *; \
64e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		}" \
65e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-keepclassmembers "class * implements java.io.Serializable { \
66e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		    private static final java.io.ObjectStreamField[] serialPersistentFields; \
67e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		    private void writeObject(java.io.ObjectOutputStream); \
68e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		    private void readObject(java.io.ObjectInputStream); \
69e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		    java.lang.Object writeReplace(); \
70e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		    java.lang.Object readResolve(); \
71e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		}" \
72e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-keepclassmembers "interface org.bouncycastle.crypto.paddings.BlockCipherPadding { \
73e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		    abstract public java.lang.String getPaddingName(); \
74e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		}" \
75e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		-keepclassmembers "class * implements org.bouncycastle.crypto.paddings.BlockCipherPadding { \
76e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		    public java.lang.String getPaddingName(); \
77e143538c27e395546132cbbad0093efd319b190cBrian Carlstrom		}"
788436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilson
798436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilsonifeq ($(WITH_HOST_DALVIK),true)
808436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilson    include $(CLEAR_VARS)
818436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilson    LOCAL_MODULE := bouncycastle-hostdex
82fa0f9bd8b89584a58337208fe2a0c3ce890e76a1Jesse Wilson    LOCAL_MODULE_TAGS := optional
83e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    LOCAL_SRC_FILES := $(android_bcprov_src_files)
848436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilson    LOCAL_JAVACFLAGS := -encoding UTF-8
858436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilson    LOCAL_JAVA_LIBRARIES := core-hostdex
868436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilson    LOCAL_NO_STANDARD_LIBRARIES := true
878436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilson    LOCAL_BUILD_HOST_DEX := true
880ccea25f543c1cae4ebf0962c1714f317979c1a7Jean-Baptiste Queru    LOCAL_MODULE_TAGS := optional
89434fc78f07ab056c9206e34abc6d5d4f832adfecBrian Carlstrom    LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
908436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilson    include $(BUILD_HOST_JAVA_LIBRARY)
918436e1610cc0f5d2821b0235523be105f4f5e7e3Jesse Wilsonendif
92e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
93e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrominclude $(CLEAR_VARS)
94e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_MODULE := bouncycastle-host
95e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_MODULE_TAGS := optional
96e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_SRC_FILES := $(ri_bcprov_src_files)
97e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_JAVACFLAGS := -encoding UTF-8
98e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_MODULE_TAGS := optional
99e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrominclude $(BUILD_HOST_JAVA_LIBRARY)
100e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
101e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrominclude $(CLEAR_VARS)
102e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_MODULE := bouncycastle-bcpkix-host
103e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_MODULE_TAGS := optional
104e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_SRC_FILES := $(call all-java-files-under,bcpkix/src/main/java)
105e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_JAVACFLAGS := -encoding UTF-8
106e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_MODULE_TAGS := optional
107e6bf3e8dfa2804891a82075cb469b736321b4827Brian CarlstromLOCAL_JAVA_LIBRARIES := bouncycastle-host
108e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrominclude $(BUILD_HOST_JAVA_LIBRARY)
109