Class: VisaNetUy::Signer

Inherits:
Object
  • Object
show all
Includes:
Encoder
Defined in:
lib/visa_net_uy/signer.rb

Constant Summary collapse

DIGEST_ALGORITHM =
'SHA1'

Instance Method Summary collapse

Methods included from Encoder

#custom_base64_urlsafe_decode, #custom_base64_urlsafe_encode

Instance Method Details

#generate_urlsafe_base64_signature(data, private_key) ⇒ Object

Generates an urlsafe_base64_signature



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/visa_net_uy/signer.rb', line 10

def generate_urlsafe_base64_signature(data, private_key)
  # Load Keys
  pkey = OpenSSL::PKey::RSA.new(private_key, nil)
  raise 'Invalid private key.' unless pkey.private?

  # Create Digester
  digest = OpenSSL::Digest.new(DIGEST_ALGORITHM)

  # Generate Signature
  signature = pkey.sign(digest, data)
  raise 'RSA signing unsuccessful.' unless signature

  # Encode Signature with custom Encoder
  custom_base64_urlsafe_encode(signature)
end

#verify_urlsafe_base64_signature(data, urlsafe_base64_signature, public_key) ⇒ Object

Verifies an urlsafe_base64_signature



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/visa_net_uy/signer.rb', line 27

def verify_urlsafe_base64_signature(data, urlsafe_base64_signature, public_key)
  # Load Key
  pkey = OpenSSL::PKey::RSA.new(public_key, nil)
  raise 'Invalid public key.' unless pkey.public?

  # Decode Signature with custom decoding
  signature = custom_base64_urlsafe_decode(urlsafe_base64_signature)

  # Create Digester
  digest = OpenSSL::Digest.new(DIGEST_ALGORITHM)

  # Vefify Signature
  pkey.public_key.verify(digest, signature, data)
end