【问题标题】:2C2P PKC7 decryption from PHP -> Ruby2C2P PKC7 从 PHP 解密 -> Ruby
【发布时间】:2019-03-17 19:50:15
【问题描述】:

我正在尝试将一些 PHP 代码转换为 Ruby。代码 sn-p 位于此处:https://developer.2c2p.com/docs/read-payment-response-1(位于页面底部),我试图了解如何在 Ruby 中实现它。据我所知:

      payment_response = params.dig(:paymentResponse)
      cert_store = OpenSSL::X509::Store.new
      my_cert =  OpenSSL::X509::Certificate.new(File.read('config/twoctwop_keys/demo2.crt'))
      signature = OpenSSL::PKCS7.new(File.read('config/twoctwop_keys/demo2.pem'))
      signature.verify([my_cert], cert_store, payment_response, OpenSSL::PKCS7::NOVERIFY)
      signature.data

但是上面我似乎得到了以下错误:

ArgumentError: 无法解析 PKCS7: 嵌套 asn1 错误

来自以下行:

OpenSSL::PKCS7.new(File.read('config/twoctwop_keys/demo2.pem'))

如果不粘贴demo2.pem 文件的内容,它似乎包含多个证书,因为我可以看到:

Bag Attributes
    Microsoft Local Key set: <No Values>
    localKeyID: 01 00 00 00
    friendlyName: omitted
    Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
Key Attributes
    X509v3 Key Usage: 10
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,3A2DD8162BC67378
   ..... key......
-----END RSA PRIVATE KEY-----
Bag Attributes
    localKeyID: 01 00 00 00
    friendlyName: demo2.2c2p.com
subject=/C=SG/ST=Singapore/L=Singapore/O=xx Pte Ltd./OU=xxx IT/CN=xxx
issuer=xxxx
-----BEGIN CERTIFICATE-----
   ....key....
-----END CERTIFICATE-----
Bag Attributes: <Empty Attributes>
subject=/CN=SinaptIQ CA
issuer=/CN=SinaptIQ CA
-----BEGIN CERTIFICATE-----
  ....key....
-----END CERTIFICATE-----

这里有什么我不明白的地方。

【问题讨论】:

    标签: php ruby ssl


    【解决方案1】:

    就这么简单:

    payment_response = params.dig(:paymentResponse)
    certificate = OpenSSL::X509::Certificate.new(File.read('config/twoctwop_keys/demo2.crt'))
    private_key = OpenSSL::PKey::RSA.new(File.read('config/twoctwop_keys/demo2.pem'), <passphrase>)
    body = OpenSSL::PKCS7.new(Base64.strict_decode64(payment_response))
    Hashie::Mash.new(Hash.from_xml(@body.decrypt(@private_key, @certificate))['PaymentResponse'])
    
    

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 2014-07-07
      • 2014-02-24
      • 2015-12-18
      • 2021-12-24
      • 2012-04-22
      • 1970-01-01
      • 2018-01-13
      • 2012-10-05
      相关资源
      最近更新 更多