9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/tinkoff_client/payout/encrypt_data.rb', line 9
def encrypt_data(keys)
pkey = OpenSSL::PKey::RSA.new File.read(TinkoffClient.configuration.payout_private_key)
cert = OpenSSL::X509::Certificate.new File.read(TinkoffClient.configuration.payout_certificate)
x509_serial_number = cert.serial.to_s
context_keys = { :TerminalKey => TinkoffClient.configuration.payout_terminal_key, **keys }
concatenated = context_keys.sort.transpose[1].join
digest = OpenSSL::Digest::SHA256.new concatenated
signed_bytes = pkey.sign "SHA256", digest.digest
signature_value = Base64::strict_encode64 signed_bytes
digest_value = Base64::strict_encode64 digest.digest
result = { signature_value: signature_value, digest_value: digest_value, x509_serial_number: x509_serial_number }
end
|