安卓X.509证书认证

3

关于我的项目,先简单介绍一下:

我正在使用 Android(BouncyCastle)实现一个使用 ECDH 进行短信加密的程序,需要通过短信发送我的公钥。在功能方面,一切都正常工作,但我对我所实现的 X.509 代码有些怀疑。

发送方代码如下:

        byte[] pubEnc = aKeyPair.getPublic().getEncoded();
        X509EncodedKeySpec  pubX509 = new X509EncodedKeySpec(pubEnc);

pubX509先编码成Base64格式,然后通过短信发送。

接收方需要进行以下操作:

        KeyFactory          keyFac = KeyFactory.getInstance("ECDH", "SC");
        X509EncodedKeySpec  pubX509 = new X509EncodedKeySpec(SharedS);
        ECPublicKey         pubKey = (ECPublicKey)keyFac.generatePublic(pubX509);

接收到的值进行Base64解码,得到SharedS,将其转换为新的pubX509。

实现方面来说,这段代码似乎没问题,但我想知道我是否正确地实现了X509。

任何建议都将不胜感激。


如果它正常工作,那你还有什么问题要问的呢? - President James K. Polk
想知道这是否是正确实现 X509 的方法。我对 X509 进行了一些阅读,提到需要一个 CA。由于我没有指定任何内容,这是否由设备自动生成? - Caulibeam
1个回答

3
Sun(现在是Oracle)称其为X509EncodedKeySpec,只是因为公钥使用了在更大的X.509证书标准中指定的格式进行编码。对于互联网,X.509证书的适当实现在RFC 5280中指定。正如您所见,这个RFC超过140页。在整个文档中,以下3行描述了如何表示公钥:
   SubjectPublicKeyInfo  ::=  SEQUENCE  {
        algorithm            AlgorithmIdentifier,
        subjectPublicKey     BIT STRING  }

这是由Java类X509EncodedKeySpec生成的格式。您可以忽略X509标准的其余部分,无需使用证书。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接