首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用EVP_Sign函数计算签名

如何使用EVP_Sign函数计算签名
EN

Stack Overflow用户
提问于 2012-11-29 15:51:57
回答 1查看 773关注 0票数 0

我用C语言编写了以下代码,java代码位于openssl digest different in c compared to java

代码语言:javascript
复制
EVP_MD_CTX md_ctx;
unsigned char sig_buf[4096];
/* Do the signature */
int err;
unsigned int sig_len;
String testSign = "c14N string ";
EVP_SignInit(&md_ctx, EVP_sha256());
EVP_SignUpdate(&md_ctx, testSign.c_str(), testSign.size());
sig_len = sizeof(sig_buf);
err = EVP_SignFinal(&md_ctx, sig_buf, &sig_len, privKey);
if (err != 1) {
    perror("Error While generating Signature for Security Token");
    return "Null Signature";
}
return calculateBase64(sig_buf,sig_len);

我面临的问题是,由java计算出来的签名不同于C。这必须使用私钥完成,我有来自OpenSSL的SSL对象可用。

另外,只需添加以下命令行即可生成匹配的签名

代码语言:javascript
复制
echo -n "String here" | openssl dgst -dss1 -sha256 -sign client.key |openssl base64

在这方面的任何方向都将是有帮助的,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-11-29 19:45:53

替换了以下内容,并获得了正确的结果。

代码语言:javascript
复制
EVP_MD_CTX_init(&md_ctx);
EVP_SignInit_ex(&md_ctx, EVP_sha256(),NULL);
EVP_MD_CTX_cleanup(&md_ctx);

参考:http://www.nlnetlabs.nl/downloads/publications/hsm/hsm_node22.html

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

https://stackoverflow.com/questions/13621137

复制
相关文章

相似问题

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