从PEM文件获取密钥

时间:2019-03-05 13:22:26

标签: android pem spongycastle

我正在尝试使用以下代码从pem文件中获取密钥:

protected boolean configureKey() {
    try {
        Security.addProvider(new BouncyCastleProvider());
        PEMParser reader = new PEMParser(new InputStreamReader(getAssets().open(PUBLIC_KEY_FILE)));
        Object obj;
        PublicKey publicKey = null;
        while (((obj = reader.readObject()) != null) && (publicKey == null)) {
            if (obj instanceof SubjectPublicKeyInfo) {
                JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
                publicKey = converter.getPublicKey((SubjectPublicKeyInfo) obj);

            } else {
                if (obj instanceof PublicKey) {
                    publicKey = (PublicKey) obj;
                }
            }
        }
        if (publicKey != null) {
            return true;
        }
        return false;
    } catch (IOException e) {
        return false;
    }
}

此代码之前已经起作用,但是这次失败了,因为该对象不是SubjectPublicKeyInfo或PublicKey的实例,而是X509CertificateHolder。

请牢记这一点,我确定问题出在这个特定的pem文件中(因为此代码在读取密钥之前已经起作用),但是我无法弄清楚为什么该对象是该类的实例。它应该具有其他格式或结构吗?我需要在文件中进行哪些更改以获取SubjectPublicKeyInfo实例?

0 个答案:

没有答案