首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Crypto++获取ECDSA签名

使用Crypto++获取ECDSA签名
EN

Stack Overflow用户
提问于 2014-01-09 23:31:13
回答 1查看 1.2K关注 0票数 0

我必须使用Crypto++在变量中获取ECDSA签名。

我试着在启动SignMessage之后拿到它,但是签名是空的。

我怎么才能得到它呢?

EN

回答 1

Stack Overflow用户

发布于 2014-01-10 12:38:24

你有没有看过Crypto++维基?Elliptic Curve Digital Signature Algorithm上有很多东西。

不太清楚你在做什么,或者哪里出了问题,所以这里有一个来自wiki的拷贝和粘贴:

签名:

代码语言:javascript
复制
ECDSA<ECP, SHA1>::PrivateKey privateKey;
privateKey.Load(...);

AutoSeededRandomPool prng;
string message = "Yoda said, Do or do not. There is no try.";
string signature;

StringSource ss1( message, true /*pump all*/,
    new SignerFilter( prng,
        ECDSA<ECP,SHA1>::Signer( privateKey ),
        new StringSink( signature )
    ) // SignerFilter
); // StringSource

验证:

代码语言:javascript
复制
ECDSA<ECP, SHA1>::PublicKey publicKey;
publicKey.Load(...);

// Result of the verification process
bool result = false;

// Exactly what was signed in the previous step
string message = ...;
// Output from the signing operation in the previous step
string signature = ...;

StringSource ss2( signature+message, true /*pump all*/,
    new SignatureVerificationFilter(
        ECDSA<ECP,SHA1>::Verifier(publicKey),
        new ArraySink( (byte*)&result, sizeof(result) )
    ) // SignatureVerificationFilter
);

// Verification failure?
if( !result ) {...}

如果您希望验证抛出失败,请尝试:

代码语言:javascript
复制
static const int VERIFICATION_FLAGS = SIGNATURE_AT_BEGIN | THROW_EXCEPTION;
StringSource ss3( signature+message, true /*pump all*/,
    new SignatureVerificationFilter(
        ECDSA<ECP,SHA1>::Verifier(publicKey),
        NULL, /* No need for attached filter */
        VERIFICATION_FLAGS
    ) // SignatureVerificationFilter
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21024399

复制
相关文章

相似问题

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