首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓:找不到org.spongycastle.util.io.pem.PemReader

安卓:找不到org.spongycastle.util.io.pem.PemReader
EN

Stack Overflow用户
提问于 2016-06-30 07:50:08
回答 1查看 1.5K关注 0票数 0

我在我的android代码中使用海绵城堡。在android 5和android 6中,代码运行良好,但在android 4中,代码显示了错误:

代码语言:javascript
复制
java.lang.NoClassDefFoundError: org.spongycastle.util.io.pem.PemReader

它在初始化以下代码中的PemReader时失败:

代码语言:javascript
复制
    private PublicKey getPublicKey(AssetManager manager, String keyPath) {
    PublicKey key = null;
    try {
        final KeyFactory keyFactory = KeyFactory.getInstance(TicketVerifier.ENCRYPTION_ALGORITHM);
        InputStream stream = manager.open(keyPath);
        final PemReader reader = new PemReader(new InputStreamReader(stream));
        final byte[] pubKey = reader.readPemObject().getContent();
        reader.close();
        final X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(pubKey);
        key = keyFactory.generatePublic(publicKeySpec);
    } catch (IOException e) {
        Log.e(TAG, "error verifying ticket", e);
    } catch (NoSuchAlgorithmException e) {
        Log.e(TAG, "error verifying ticket", e);
    } catch (InvalidKeySpecException e) {
        Log.e(TAG, "error verifying ticket", e);
    }
    return key;
} 

build.gradle

代码语言:javascript
复制
apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
useLibrary 'org.apache.http.legacy'
defaultConfig {
    applicationId "com.xx.xx.android"
    minSdkVersion 17
    targetSdkVersion 23
    versionCode 22
    versionName "5.0.0.22"
    multiDexEnabled true
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
testCompile 'org.robolectric:robolectric:3.0'
compile 'com.android.support:appcompat-v7:23.3.0'
compile ('com.viewpagerindicator:library:2.4.1'){
    exclude group: 'com.android.support', module: 'support-v4'
    exclude group: 'com.google.guava'
}
compile 'com.google.zxing:android-integration:2.2'
compile 'com.google.zxing:core:2.3.0'
compile ('com.google.android.gms:play-services:4.2.42@aar'){
    exclude group: 'com.android.support', module: 'support-v4'
    exclude group: 'com.google.guava'
}
compile 'com.google.guava:guava:17.0'
compile 'org.altbeacon:android-beacon-library:2.1.3'
compile 'com.fasterxml.jackson.core:jackson-core:2.2.3'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.2.3'
compile 'com.madgag:scprov-jdk15on:1.47.0.3'
compile 'net.oauth.core:oauth:20100527'
compile 'org.jsoup:jsoup:1.8.3'
compile 'com.android.support:support-v4:23.3.0'
}

有人能告诉我怎么处理吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-26 14:31:06

海绵堡被分成几个包裹。PemReader不是基本包的一部分。因此,请确保添加所有依赖项:

代码语言:javascript
复制
dependencies {
     ....
    compile 'com.madgag.spongycastle:core:1.54.0.0'
    compile 'com.madgag.spongycastle:prov:1.54.0.0'
    compile 'com.madgag.spongycastle:pkix:1.54.0.0'
    compile 'com.madgag.spongycastle:pg:1.54.0.0'

    }

不要忘记将它作为安全提供者插入到应用程序中。

代码语言:javascript
复制
static {
    Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38117007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档