Class: DUKPT::Decrypter

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#bdkObject (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