Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 脱机验证已签名的数据vault_Ruby_Elixir_Hashicorp Vault - Fatal编程技术网

Ruby 脱机验证已签名的数据vault

Ruby 脱机验证已签名的数据vault,ruby,elixir,hashicorp-vault,Ruby,Elixir,Hashicorp Vault,我正在向客户发送一个公钥和一个有效负载加上一个签名 我正在尝试使用公钥和有效负载验证客户端上的签名,但找不到验证数据的方法。无论我在做什么,每次我都会收到错误的回复 我在用保险库签有效载荷 def sign(box_identifier, data) do Vaultex.Client.write("transit/sign/#{box_identifier}", %{ input: d

我正在向客户发送一个公钥和一个有效负载加上一个签名

我正在尝试使用公钥和有效负载验证客户端上的签名,但找不到验证数据的方法。无论我在做什么,每次我都会收到错误的回复

我在用保险库签有效载荷

  def sign(box_identifier, data) do
       Vaultex.Client.write("transit/sign/#{box_identifier}",
                     %{ 
                        input: data,
                        hash_algorithm: "sha2-256"
                      },
                     @authentication_strategy,
                     {@token})
  end

  Vault.Transit.sign("coucou", Base.encode64("test"))

   _____________________________________________________________
   digest = OpenSSL::Digest::SHA256.new
   key = OpenSSL::PKey::RSA.new File.read 'key.pem'       

   key.public_key.verify digest, signature, "test"


-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzj0qLxEc0Qu9g9nxdMRe
jBaUD0+GuQITiAPEDOrjScJTznJrR9hXqO14BqepuEmcz4irv4hEkBEBfqZ1XnP9
2fc9zG4A20lepqDRwPhkEdI4D71KRPSxv/a+O2HrAhTYH17NbsYDtpkFCdepC6FC
01aso679d3kAZiZ+GD2OLDWifreBVPE2aXacJYXZZ4kTkchsevY3PnAcOG4LmM6b
kUoF1qfP6tJ/VItJXyqSC2PI9Io28zFhwOf6cPLEQCBCTNCNwHunqHW8olcE/Xfn
b2toym0/UvW3kH/P4h+TE1ZoCV5FWwcx9hcAy1TC0zm4D5Xwt0/4Pgj1GiXFGOY4
WKGyuDK8gs7QsSDqu+B5p0xiDg7226bpplVxR/P87CohYTtYZj/lO03G2ZEj3pCr
/juxThdzTgO5xUcPV5GFbPjlK1TIIb5XVZZzW6+sviB6cYZ5T/Xp9dtbR8G9Zt9n
gLlaKU7U/DDQxRv2uiCZy5U/DUpfxY56r4Y73Ir2YgmZY1PKLC2a5/w3wScVZILN
fnxnVYOzSPPaKxAJWbZsZjxXJS0veE8RgGFHgWfe8+qPCEnx81Jf2NzupQHO1KIk
UnlYGcPESk/90psDNsmISSdtF2D6j4k28k0ncViTu2eMKBX81W8TgTeHtQa3zR0S
upN2o25b3Wi2oQU14kTdOCcCAwEAAQ==
-----END PUBLIC KEY-----

当签名由vault签名时,我是否能够脱机验证签名?

是的,可以脱机验证签名。我的回答将提到一些Ruby的细节,因为直到我开始进一步研究之后,我才注意到这是长生不老药

默认情况下,使用RSA密钥签名时,Vault将使用算法进行签名。
OpenSSL::PKey::PKey
上的
verify
方法是预期的。关于这两种方法的优点和缺点的一些有用信息

除此算法差异外,还需要从vault返回的签名中删除
vault:v1:

下面是一些要签名然后验证签名的示例Ruby代码:

transit\u key=“test\u key”
message=“测试”
#返回如下内容:
#保险库:v1:B3reNpf8e/WYAYZYWZ3OSUM。。。
签名=Vault.logical.write(
“运输/标志/#{transit_key}/sha2-256”,
输入:Base64.encode64(消息),
签名算法:“pkcs1v15”
).数据[:签名]
签名=签名。拆分(“:”[2]
#给我们PEM编码的公钥
#----开始公钥-----
# ...
public_key=Vault.logical.read(“transit/keys/{transit_key}”)。数据[:keys][:“1”][:public_key]
public_key=OpenSSL::PKey::RSA.new(public_key)
digest=OpenSSL::digest::SHA256.new
放入公钥。验证(摘要、Base64.decode64(签名)、消息)#返回true
放入公钥。验证(摘要,Base64.decode64(签名),消息+“修改”)#返回false
从Ruby 2.5开始,有一个新的

signature=Vault.logical.write(
“运输/标志/#{transit_key}/sha2-256”,
输入:Base64.encode64(消息),
签名算法:“pss”
).data[:签名].split(“:”[2]
放入公钥。验证pss(摘要,Base64.decode64(签名),消息,salt长度::auto,mgf1_散列:“SHA256”)#返回true
放入公钥。验证pss(摘要,Base64.decode64(签名),消息+“已修改”,salt长度::auto,mgf1_散列:“SHA256”)#返回false

是的,可以脱机验证签名。我的回答将提到一些Ruby的细节,因为直到我开始进一步研究之后,我才注意到这是长生不老药

默认情况下,使用RSA密钥签名时,Vault将使用算法进行签名。
OpenSSL::PKey::PKey
上的
verify
方法是预期的。关于这两种方法的优点和缺点的一些有用信息

除此算法差异外,还需要从vault返回的签名中删除
vault:v1:

下面是一些要签名然后验证签名的示例Ruby代码:

transit\u key=“test\u key”
message=“测试”
#返回如下内容:
#保险库:v1:B3reNpf8e/WYAYZYWZ3OSUM。。。
签名=Vault.logical.write(
“运输/标志/#{transit_key}/sha2-256”,
输入:Base64.encode64(消息),
签名算法:“pkcs1v15”
).数据[:签名]
签名=签名。拆分(“:”[2]
#给我们PEM编码的公钥
#----开始公钥-----
# ...
public_key=Vault.logical.read(“transit/keys/{transit_key}”)。数据[:keys][:“1”][:public_key]
public_key=OpenSSL::PKey::RSA.new(public_key)
digest=OpenSSL::digest::SHA256.new
放入公钥。验证(摘要、Base64.decode64(签名)、消息)#返回true
放入公钥。验证(摘要,Base64.decode64(签名),消息+“修改”)#返回false
从Ruby 2.5开始,有一个新的

signature=Vault.logical.write(
“运输/标志/#{transit_key}/sha2-256”,
输入:Base64.encode64(消息),
签名算法:“pss”
).data[:签名].split(“:”[2]
放入公钥。验证pss(摘要,Base64.decode64(签名),消息,salt长度::auto,mgf1_散列:“SHA256”)#返回true
放入公钥。验证pss(摘要,Base64.decode64(签名),消息+“已修改”,salt长度::auto,mgf1_散列:“SHA256”)#返回false