Class: DUKPT::Decrypter
- Inherits:
-
Object
- Object
- DUKPT::Decrypter
- Includes:
- Encryption
- Defined in:
- lib/dukpt/decrypter.rb
Constant Summary
Constants included from Encryption
Encryption::DEK_MASK, Encryption::KEY_MASK, Encryption::KSN_MASK, Encryption::LS16_MASK, Encryption::MS16_MASK, Encryption::PEK_MASK, Encryption::REG3_MASK, Encryption::REG8_MASK, Encryption::SHIFT_REG_MASK
Instance Attribute Summary collapse
-
#bdk ⇒ Object
readonly
Returns the value of attribute bdk.
Instance Method Summary collapse
- #decrypt(cryptogram, ksn) ⇒ Object
- #decrypt_data_block(cryptogram, ksn) ⇒ Object
- #decrypt_pin_block(cryptogram, ksn) ⇒ Object
-
#initialize(bdk, mode = nil) ⇒ Decrypter
constructor
A new instance of Decrypter.
Methods included from Encryption
#aes_decrypt, #cipher_mode=, #dek_from_key, #derive_DEK, #derive_IPEK, #derive_PEK, #derive_key, #des_encrypt, #keygen, #pek_from_key, #triple_des_decrypt, #triple_des_encrypt
Constructor Details
#initialize(bdk, mode = nil) ⇒ Decrypter
Returns a new instance of Decrypter.
7 8 9 10 |
# File 'lib/dukpt/decrypter.rb', line 7 def initialize(bdk, mode=nil) @bdk = bdk self.cipher_mode = mode.nil? ? 'cbc' : mode end |
Instance Attribute Details
#bdk ⇒ Object (readonly)
Returns the value of attribute bdk.
5 6 7 |
# File 'lib/dukpt/decrypter.rb', line 5 def bdk @bdk end |
Instance Method Details
#decrypt(cryptogram, ksn) ⇒ Object
12 13 14 15 16 17 |
# File 'lib/dukpt/decrypter.rb', line 12 def decrypt(cryptogram, ksn) ipek = derive_IPEK(bdk, ksn) pek = derive_PEK(ipek, ksn) decrypted_cryptogram = triple_des_decrypt(pek, cryptogram) [decrypted_cryptogram].pack('H*') end |
#decrypt_data_block(cryptogram, ksn) ⇒ Object
23 24 25 26 27 28 |
# File 'lib/dukpt/decrypter.rb', line 23 def decrypt_data_block(cryptogram, ksn) ipek = derive_IPEK(bdk, ksn) dek = derive_DEK(ipek, ksn) decrypted_cryptogram = triple_des_decrypt(dek, cryptogram) [decrypted_cryptogram].pack('H*') end |
#decrypt_pin_block(cryptogram, ksn) ⇒ Object
19 20 21 |
# File 'lib/dukpt/decrypter.rb', line 19 def decrypt_pin_block(cryptogram, ksn) decrypt(cryptogram, ksn) end |