use bouncycastle

This commit is contained in:
5ec1cff
2024-07-12 06:04:40 +08:00
parent 0bbdbef935
commit bc0c499050
3 changed files with 31 additions and 38 deletions

View File

@@ -1,12 +1,12 @@
[versions] [versions]
agp = "8.5.0" agp = "8.5.0"
bcpkix-jdk18on = "1.78.1"
kotlin = "2.0.0" kotlin = "2.0.0"
annotation = "1.8.0" annotation = "1.8.0"
bcpkix-jdk15on = "1.58.0.0"
[libraries] [libraries]
annotation = { module = "androidx.annotation:annotation", version.ref = "annotation" } annotation = { module = "androidx.annotation:annotation", version.ref = "annotation" }
bcpkix-jdk15on = { module = "com.madgag.spongycastle:bcpkix-jdk15on", version.ref = "bcpkix-jdk15on" } bcpkix-jdk18on = { module = "org.bouncycastle:bcpkix-jdk18on", version.ref = "bcpkix-jdk18on" }
[plugins] [plugins]
agp-app = { id = "com.android.application", version.ref = "agp" } agp-app = { id = "com.android.application", version.ref = "agp" }

View File

@@ -1,3 +1,5 @@
import com.android.build.api.dsl.Packaging
plugins { plugins {
alias(libs.plugins.jetbrains.kotlin.android) alias(libs.plugins.jetbrains.kotlin.android)
alias(libs.plugins.agp.app) alias(libs.plugins.agp.app)
@@ -29,10 +31,15 @@ android {
signingConfig = signingConfigs["debug"] signingConfig = signingConfigs["debug"]
} }
} }
packaging {
resources {
excludes += "**"
}
}
} }
dependencies { dependencies {
compileOnly(project(":stub")) compileOnly(project(":stub"))
compileOnly(libs.annotation) compileOnly(libs.annotation)
implementation(libs.bcpkix.jdk15on) implementation(libs.bcpkix.jdk18on)
} }

View File

@@ -4,27 +4,27 @@ import android.os.Build;
import android.security.keystore.KeyProperties; import android.security.keystore.KeyProperties;
import android.util.Log; import android.util.Log;
import org.spongycastle.asn1.ASN1Boolean; import org.bouncycastle.asn1.ASN1Boolean;
import org.spongycastle.asn1.ASN1Encodable; import org.bouncycastle.asn1.ASN1Encodable;
import org.spongycastle.asn1.ASN1EncodableVector; import org.bouncycastle.asn1.ASN1EncodableVector;
import org.spongycastle.asn1.ASN1Enumerated; import org.bouncycastle.asn1.ASN1Enumerated;
import org.spongycastle.asn1.ASN1ObjectIdentifier; import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.spongycastle.asn1.ASN1OctetString; import org.bouncycastle.asn1.ASN1OctetString;
import org.spongycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.ASN1Sequence;
import org.spongycastle.asn1.ASN1TaggedObject; import org.bouncycastle.asn1.ASN1TaggedObject;
import org.spongycastle.asn1.DEROctetString; import org.bouncycastle.asn1.DEROctetString;
import org.spongycastle.asn1.DERSequence; import org.bouncycastle.asn1.DERSequence;
import org.spongycastle.asn1.DERTaggedObject; import org.bouncycastle.asn1.DERTaggedObject;
import org.spongycastle.asn1.x509.Extension; import org.bouncycastle.asn1.x509.Extension;
import org.spongycastle.cert.X509CertificateHolder; import org.bouncycastle.cert.X509CertificateHolder;
import org.spongycastle.cert.X509v3CertificateBuilder; import org.bouncycastle.cert.X509v3CertificateBuilder;
import org.spongycastle.cert.jcajce.JcaX509CertificateConverter; import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter;
import org.spongycastle.openssl.PEMKeyPair; import org.bouncycastle.openssl.PEMKeyPair;
import org.spongycastle.openssl.PEMParser; import org.bouncycastle.openssl.PEMParser;
import org.spongycastle.openssl.jcajce.JcaPEMKeyConverter; import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import org.spongycastle.operator.ContentSigner; import org.bouncycastle.operator.ContentSigner;
import org.spongycastle.operator.jcajce.JcaContentSignerBuilder; import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
import org.spongycastle.util.io.pem.PemReader; import org.bouncycastle.util.io.pem.PemReader;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.StringReader; import java.io.StringReader;
@@ -108,20 +108,6 @@ public final class Android {
} }
} }
private static Field getField(String fieldName) {
Field field = null;
try {
field = Build.class.getDeclaredField(fieldName);
} catch (Throwable ignored) {
try {
field = Build.VERSION.class.getDeclaredField(fieldName);
} catch (Throwable t) {
Log.e(TAG, "Couldn't find field " + fieldName);
}
}
return field;
}
public static Certificate[] engineGetCertificateChain(Certificate[] caList) { public static Certificate[] engineGetCertificateChain(Certificate[] caList) {
if (caList == null) throw new UnsupportedOperationException("caList is null!"); if (caList == null) throw new UnsupportedOperationException("caList is null!");
try { try {