首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于OpenSSL的GOST数字签名验证

基于OpenSSL的GOST数字签名验证
EN

Stack Overflow用户
提问于 2014-04-14 21:38:29
回答 1查看 1.4K关注 0票数 2

我有我的证书,源文件,Base64格式的独立签名。CryptoARM程序中由UEC (通用电子卡-俄罗斯智能卡项目)创建的签名(我认为是使用GOST散列函数)。

我正在使用Ubuntu13.10并安装了OpenSSL 1.0.1e (默认情况下包含GOST支持)。

我已经在Ubuntu CA商店中安装了UEC CA服务器:

代码语言:javascript
复制
sudo cp ~/uec/uec.cer /usr/local/share/ca-certificates/uec.crt
sudo update-ca-certificates

控制台验证成功(如果文件未被更改,则确定):

代码语言:javascript
复制
$ openssl smime -verify -engine gost -inform DER -in ~/uec/to_be.txt.sig -content ~/uec/to_be.txt 
engine "gost" set.
Verification successful
Original file contents goes here

因此,我试图在Ruby2.0.0和2.1.0中进行验证,正如在这个问题中所指出的:基于OpenSSL的数字签名验证

代码语言:javascript
复制
require 'openssl'
OpenSSL::Engine.load
engine = OpenSSL::Engine.by_id('gost')

cert_store = OpenSSL::X509::Store.new
cert_store.set_default_paths
my_cert = File.read('/home/envek/uec/envek-b64.cer')
data = File.read('/home/envek/uec/to_be.txt')
signature = OpenSSL::PKCS7.new(File.read('/home/envek/uec/to_be.txt.der.sig'))

signature.verify([my_cert], cert_store, data, OpenSSL::PKCS7::DETACHED || OpenSSL::PKCS7::NOVERIFY)
# => false
signature
# => #<OpenSSL::PKCS7:0x00000002168918 @data="\xEF\xBB\xBF\xD0\xAD\xD1\x82\xD0\xBE \xD1\x84\xD0\xB0\xD0\xB9\xD0\xBB, \xD0\xBA\xD0\xBE\xD1\x82\xD0\xBE\xD1\x80\xD1\x8B\xD0\xB9 \xD1\x8F \xD0\xBF\xD0\xBE\xD0\xB4\xD0\xBF\xD0\xB8\xD1\x88\xD1\x83", @error_string="unsupported algorithm">

所以,我真的不知道为什么它只是返回假,我的引擎负荷是否有任何影响。如何说PKCS7#verify使用正确的算法,由GOST引擎提供?

有什么想法吗?

文件:

要使OpenSSL正常工作,需要采取以下步骤(找到这里):

这个字符串最多应该添加到/etc/ssl/openssl.cnf的顶部

代码语言:javascript
复制
openssl_conf = openssl_def

这些字符串最多应该添加到/etc/ssl/openssl.cnf的底部。

代码语言:javascript
复制
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
default_algorithms = ALL
engine_id = gost

在此之后,下一个命令应该显示下一个输出:

代码语言:javascript
复制
$ openssl ciphers | tr ":" "\n" | grep GOST
GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89
EN

回答 1

Stack Overflow用户

发布于 2014-04-14 21:57:07

奇怪的是,我只是尝试调用具有0xFFFF值的0xFFFF方法。只是:

代码语言:javascript
复制
engine.set_default(0xFFFF)

而且有效!

文档对此完全不清楚。它所做的是什么,它作为价值所收到的标志是什么?任何人,请解释我。

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

https://stackoverflow.com/questions/23070936

复制
相关文章

相似问题

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