我正在尝试使用Crypto++签名器,并使用来自维基的以下代码:
现在,我想知道如何覆盖SHA256以直接指定要传递给签名算法的摘要值。
我已经查看了wiki和doxygen documentation,但没有成功。起初,我以为NullHash可以帮助解决问题,但根据源代码,它只是零哈希。我也对PK_MessageAccumulator抱有一些希望,但它似乎并没有按照我的期望工作。
那么,是否有一种继承自HashTransformation类的“身份”函数完全错过了?如果没有,您将如何构建允许直接指定要签名的摘要的东西?
ECDSA<ECP, SHA256>::PrivateKey privateKey;
const Integer D(string("8964e19c5ae38669db3047f6b460863f5dc6c4510d3427e33545caf9527aafcf").c_str());
privateKey.Initialize(CryptoPP::ASN1::secp256r1(), D);
if (!privateKey.Validate(rng, 3)) {
cerr << "ECDSA privateKey key validation failed after setting private parameter." << endl;
return 1;
}
ECDSA<ECP,SHA256>::Signer signer(privateKey);
StringSource ss1(message, true,
new SignerFilter(rng, signer,
new HexEncoder(new StringSink(signature), false)
) // SignerFilter
); // StringSource
int slen = signature.length() / 2;
// since it's IEEE P1363 format to display r and s:
cout << signature.substr(0, slen) << "\n"
<< signature.substr(slen, slen) << endl;
现在,我想知道如何覆盖SHA256以直接指定要传递给签名算法的摘要值。
我已经查看了wiki和doxygen documentation,但没有成功。起初,我以为NullHash可以帮助解决问题,但根据源代码,它只是零哈希。我也对PK_MessageAccumulator抱有一些希望,但它似乎并没有按照我的期望工作。
那么,是否有一种继承自HashTransformation类的“身份”函数完全错过了?如果没有,您将如何构建允许直接指定要签名的摘要的东西?