最近,我一直在尝试构建一个Java库来解释和验证NZ Covid传递。在签名验证之前(这个过程中稍微重要的一部分),我已经让代码变得更好或更坏。完整的代码可以在这里找到,但是仍然很粗糙。
验证器本身在这里可用,有一个配套测试。新冠通行证的技术规范在这里。至少有一个相关部分。
在与另一个开发人员合作后,我想我已经确定了解释提供的公钥。下面的代码(删除了调试输出)。公钥详细信息来自这里
private PublicKey extractPublicKey(PublicKeysDetails publicKeyDetails) throws NoSuchAlgorithmException, InvalidParameterSpecException, InvalidKeySpecException {
byte[] xBytes = Base64.getDecoder().decode(publicKeyDetails.x().replace('-', '+').replace('_', '/'));
byte[] yBytes = Base64.getDecoder().decode(publicKeyDetails.y().replace('-', '+').replace('_', '/'));
BigInteger x = new BigInteger(xBytes);
BigInteger y = new BigInteger(yBytes);
ECPoint ecPoint = new ECPoint(x, y);
ECGenParameterSpec parameterSpec = new ECGenParameterSpec("secp256r1");//publicKeyDetails.crv() Should always come from the endpoint as "P-256", java wants to know exactly secp256r1, or NIST P-256
AlgorithmParameters parameters = AlgorithmParameters.getInstance("EC");//publicKeyDetails.kty() Should always come from the endpoint as "EC"
parameters.init(parameterSpec);
ECParameterSpec ecParameters = parameters.getParameterSpec(ECParameterSpec.class);
ECPublicKeySpec pubSpec = new ECPublicKeySpec(ecPoint, ecParameters);
KeyFactory kf = KeyFactory.getInstance("EC");
return kf.generatePublic(pubSpec);
}
该错误可能存在于该文件的其他地方,但我现在对它可能是什么感到非常困惑。
请帮我堆满你我唯一的希望?
几天来,我的问题特别出在将字节处理成大整数上。
BigInteger x = new BigInteger(xBytes);
BigInteger y = new BigInteger(yBytes);
本该如此
BigInteger x = new BigInteger(1, xBytes);
BigInteger y = new BigInteger(1, yBytes);
这说明该数字应该是正数。
问题内容: 我正在尝试以编程方式验证jar文件是否未被明显篡改。我有2个要防止的用例。1)修改现有类2)在罐子中添加新类 我使用jarsigner签名了罐子。当我用jarsigner验证以上两种情况之一时,它的工作方式就与我期望的一样。 当我尝试使用如何以编程方式验证用jarsigner签名的jar 或如何通过自签名的jar验证签名中的示例以编程方式进行操作时 ?但是,我没有任何SecurityE
我正在恩智浦J3D081卡上编写Java卡3.0.2应用程序。我让它使用ALG_ECDSA_SHA_256对签名进行签名和验证。我的测试应用程序已经把钥匙写到卡上了。如果我对32字节的数据进行签名并将签名传回卡,验证码将成功地验证签名。如果我用私钥在Bouncy Castle中签名32个字节,并传递到卡上的验证,它就成功地验证了签名。bouncy castle验证代码成功验证从bouncy cas
我有字节数组格式的公钥。在我的数据库里。像这样 在此处输入图像描述 总是suc=false。我确信bytetoverify的值与方法符号中的输入值相同。 我不知道我用这种方式生成公钥是问题还是符号有问题。在符号方法中,我使用sh1和pkcs1,但在验证中,我只找到sh1。 每个人都能帮我吗?
我试图实现PDFS的签名验证。这是一个很大的主题,所以我一步一步地进行,首先,我试图在我自己签名的PDF中实际返回一个正值,使用当前Acrobat的所有默认值--对于摘要,应该是SHA256和PKCS7分离签名。因此,我破解了openssl,通过读取PDF中给出的字节范围并调用函数,我得到了一个哈希值来进行比较。因此,现在我需要读取证书数据等,并使用函数。这个看起来就是我想要的: 如文档中所示。除
Commits 验证 首先导入签名者的 GPG 公钥,然后执行以下任意命令来获得 Good signature 消息: ❯ git show HEAD --show-signature ❯ git log --show-signature ❯ git verify-commit HEAD
Tags 验证 首先导入签名者的 GPG 公钥,然后执行以下任意命令来获得 Good signature 消息: ❯ git tag -v 1.0.0 ❯ git cat-file -p 1.0.0 ❯ git verify-tag 1.0.0