首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于创建非对称密钥对的Bouncy Castle API

用于创建非对称密钥对的Bouncy Castle API
EN

Stack Overflow用户
提问于 2018-08-07 03:02:26
回答 1查看 564关注 0票数 0

我正在使用Bouncy Castle API创建密钥对,但我遇到了两个错误,可能是:

代码语言:javascript
复制
DER length more than 4 bytes: XXX

或者类似这样的东西:

代码语言:javascript
复制
DEF length __ object truncated by __

以下是我的代码,我正在尝试使用Google Pay的token中的临时公钥创建一个AsymmetricKeyParameter

代码语言:javascript
复制
// Decode and convert to Byte Array
byte[] ephemeralPublicKeyBytes = Base64.Decode(signedMessage["ephemeralPublicKey"]);
// Drop first byte for formatting (0x04)
ephemeralPublicKeyBytes = ephemeralPublicKeyBytes.Skip(1).ToArray();
//Create AsymmetricKeyParamter (ERROR)
AsymmetricKeyParameter pubAKP = PublicKeyFactory.CreateKey(ephemeralPublicKeyBytes);

我不太确定出了什么问题。我使用的是iTextsharper,它包含Bouncy Castle的5.5.11.0API

EN

回答 1

Stack Overflow用户

发布于 2018-08-07 22:13:01

您正在调用的方法从SubjectPublicKeyInfo结构创建一个键。这是X.509证书中的一种结构(类似于浏览器中用于HTTPS的证书)。不幸的是,这不是你所拥有的。

第一个04很可能是未压缩指针格式的指示符字节,之后xy跟随为两个连接的、静态大小的、无符号的、公钥的大端坐标。因此,在这种情况下,您需要检索特定曲线的参数,然后使用这些参数来解析该点。

原则上,04也可以是八位字节字符串指示符。在这种情况下,您还需要跳过它后面的长度字节。或者,您可以将其解析为ASN.1八位字节字符串并请求该值。

关于如何在Java / BC中做到这一点的一些想法-愉快的移植,我没有时间。

代码语言:javascript
复制
public static ECPublicKeyParameters parseECPublicKeyPoint(String curveName, byte[] point) throws Exception {

    X9ECParameters curveParams = ECNamedCurveTable.getByName(curveName);

    ECCurve curve = curveParams.getCurve();

    // the point will be validated so it should be on the curve... if the right curve was chosen anyway
    ECPoint decodePoint = curve.decodePoint(point);

    // stupid conversion still needed for some inexplicable reason
    ECDomainParameters domainParams = new ECDomainParameters(curve, curveParams.getG(), curveParams.getN(), curveParams.getH());
    ECPublicKeyParameters ecPublicKeyParameters = new ECPublicKeyParameters(decodePoint, domainParams);

    return ecPublicKeyParameters;
}

请注意,Bouncy Castle的Java /实现通常遵循C#实现,因此移植应该主要是将函数调用的第一个字母大写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51714081

复制
相关文章

相似问题

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