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