- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 pkcs11 USB token 中生成 ECDSA key 对。之后想用私钥签署CSR,但遇到异常“无效签名”。
Mechanism keyPairGenerationMechanism = Mechanism.get(PKCS11Constants.CKM_EC_KEY_PAIR_GEN);
ECDSAPrivateKey ecdsaPrivateKeyTemplate = new ECDSAPrivateKey();
ecdsaPrivateKeyTemplate.getLabel().setCharArrayValue(keyAlias.toCharArray());
ecdsaPrivateKeyTemplate.getId().setByteArrayValue(keyAlias.getBytes());
ecdsaPrivateKeyTemplate.getSign().setBooleanValue(Boolean.TRUE);
ecdsaPrivateKeyTemplate.getDecrypt().setBooleanValue(Boolean.TRUE);
ecdsaPrivateKeyTemplate.getToken().setBooleanValue(Boolean.TRUE);
ecdsaPrivateKeyTemplate.getPrivate().setBooleanValue(Boolean.TRUE);
ecdsaPrivateKeyTemplate.getSensitive().setBooleanValue(Boolean.TRUE);
ecdsaPrivateKeyTemplate.getExtractable().setBooleanValue(Boolean.FALSE);
ecdsaPrivateKeyTemplate.getKeyType().setLongValue(PKCS11Constants.CKK_EC); ECDSAPublicKey ecdsaPublicKeyTemplate = new ECDSAPublicKey(); ecdsaPublicKeyTemplate.getLabel().setCharArrayValue(keyAlias.toCharArray());
ecdsaPublicKeyTemplate.getId().setByteArrayValue(keyAlias.getBytes());
ecdsaPublicKeyTemplate.getEncrypt().setBooleanValue(Boolean.TRUE);
ecdsaPublicKeyTemplate.getPrivate().setBooleanValue(Boolean.FALSE);
ecdsaPublicKeyTemplate.getVerify().setBooleanValue(Boolean.TRUE);
ecdsaPublicKeyTemplate.getToken().setBooleanValue(Boolean.TRUE);
ecdsaPublicKeyTemplate.getKeyType().setLongValue(PKCS11Constants.CKK_EC);
ecdsaPublicKeyTemplate.getModifiable().setBooleanValue(Boolean.TRUE);
ASN1ObjectIdentifier curveId = getCurveId((getEcdsaParamsOID(256)));
X962Parameters x962 = new X962Parameters(curveId);
byte[] paramsBytes = x962.getEncoded();
ecdsaPublicKeyTemplate.getEcdsaParams().setByteArrayValue(paramsBytes);
KeyPair generatedKeyPair = m_objSession.generateKeyPair(keyPairGenerationMechanism,ecdsaPublicKeyTemplate, ecdsaPrivateKeyTemplate);
ECDSAPublicKey publicKey = (ECDSAPublicKey) generatedKeyPair.getPublicKey();
ECDSAPrivateKey privateKey = (ECDSAPrivateKey) generatedKeyPair.getPrivateKey();
byte[] pubPoint = publicKey.getEcPoint().getByteArrayValue();
DEROctetString os = (DEROctetString) DEROctetString.fromByteArray(pubPoint);
AlgorithmIdentifier keyAlgID = new AlgorithmIdentifier(
X9ObjectIdentifiers.id_ecPublicKey, curveId);
SubjectPublicKeyInfo pkInfo = new SubjectPublicKeyInfo(keyAlgID, os.getOctets());
<小时/>
从评论中签名代码:
ECDSAPrivateKey signatureKey = this.getECDSAPrivateKey(a_strKeyId,m_objSession);
MessageDigest digestEngine = MessageDigest.getInstance("SHA-256");
digestEngine.update(bUnsignedData);
byte[] digest = digestEngine.digest();
Mechanism signatureMechanism = Mechanism.get(PKCS11Constants.CKM_ECDSA);
m_objSession.signInit(signatureMechanism, signatureKey);
DigestInfo digestInfoEngine = new DigestInfo(a_objAlgorithmIdentifier, digest);
byte[] digestInfo = digestInfoEngine.getEncoded();
byte[] signatureValue = m_objSession.sign(digestInfo);
最佳答案
对于 ECDSA,您不需要 DigestInfo
,摘要值(以字节为单位)直接签名。 RSA 可能需要 DigestInfo
。
关于java - 如何使用 pkcs11 包装器 ECDSA key 签署 CSR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55728760/
我需要创建由“根”证书(自签名,ECDSA)签名的“客户端”ECDSA 证书。“根”证书是按照 Translating Elliptic Curve parameters (BC to MS) 中的描
理论上,如果拥有公钥、签名和已签名的数据并且哈希算法已知,则应该可以验证一段数据的签名。 我有二进制格式的所有这些组件。有人知道验证此签名的最简单方法吗?打开SSL? Python?一个例子会很棒。不
我正在使用ECC证书来观察TLS是如何工作的,谁能帮我区分ECDH-ECDSA-AES128-SHA256和 ECDHE-ECDSA-AES128-SHA256 . 使用时ECDHE-ECDSA-AE
我在执行以下操作时遇到问题: 使用 Python 为 ECDSA SECP256k1 曲线创建公私钥对,并将其打印在终端上。 在 Python 脚本和 visual studio(使用 micro-e
我正在尝试生成用于加密芯片的“原始”、未编码的 ECDSA 签名。目标是在主机 pc 上签署某些内容,然后将其发送到芯片进行验证。但是,我遇到了一个小问题。我的理解是 ECDSA 签名应该是 64 个
我需要使用 ECDSA 算法对消息进行签名并在 java 中发送给接收者。然后,接收方应验证发送方的签名。 因此,为此,接收方拥有发送方的公钥,但在通过以下命令将 java.security.Publ
我正在使用创建 key 对 ECDSA::Signer signer; signer.AccessKey().Initialize(randomGeneratorM, ASN1::secp160r1(
我只需要为 ECDSA 获取私钥和公钥对。 Stanford Javascript Crypto Library 以非标准方式 ( https://groups.google.com/forum/
我一直在为以太坊交易管理器编写签名者服务,我需要使用 Google KMS Golang APIs 签署以太坊交易。 .我将在下面尝试总结我面临的问题。 Ethereum 在 R 中需要紧凑的 RLP
我使用以下两行来生成 ECDSA 私钥的十六进制: openssl ecparam -genkey -name secp256k1 -out data.pem openssl ec -in data.
我正在使用 python 和 cryptography.io 来签署和验证消息。我可以通过以下方式获得签名的 DER 编码字节表示: cryptography_priv_key.sign(messag
是否有为 JWK 创建指纹(又名指纹)的标准规范方法? 从我阅读的内容来看,该标准似乎没有定义 kid应该指定,我觉得很奇怪。对我来说,它是最重要的,因为它是一个确定性的值,而不是一个需要查找表的值,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
我想知道ECDSA签名和公钥的数据格式是什么规范(或标准)定义的? 我正在 java 卡上测试 ECDSA 签名。我发现签名和公钥值中有一个TLV格式。 * Public key (TV format
我正在尝试创建一个数字证书,该证书将使用 EC key 而不是来自 RSA 的 key 进行自签名,并遵循这些 SO link1和 link2 。我将 link1 中给出的 RSA 签名算法替换为 E
我正在尝试创建一个数字证书,该证书将使用 EC key 而不是来自 RSA 的 key 进行自签名,并遵循这些 SO link1和 link2 。我将 link1 中给出的 RSA 签名算法替换为 E
以下网站经常被引用,我认为是准确的: https://gobittest.appspot.com/Address 我正在尝试在 Golang 中重现这些步骤,但第一步失败:-( 有人可以向我提供一个
我试图从私钥生成公共(public) ECDSA key ,但我没有在互联网上找到关于如何执行此操作的太多帮助。几乎一切都是为了从公钥规范生成公钥,但我不知道如何获得它。到目前为止,这是我整理的内容:
是否有任何库支持从 javascript(前端)的私钥派生 ecdsa 公钥? (有了私钥,我们就可以生成对应的公钥) 我研究了localethereum white paper ,我想实现加密层。
来自OpenSSL documentation 使用命名曲线 prime256v1(又名 P-256)创建给定 SHA-256 哈希值的 ECDSA 签名。 第二步:使用 ECDSA_do_sign(
我是一名优秀的程序员,十分优秀!