class GostMagma::MagmaKeyExpImp

Public Class Methods

export(key, key_mac, key_enc, iv) click to toggle source
# File lib/gost_magma/magma_key_exp_imp.rb, line 3
def self.export(key, key_mac, key_enc, iv)
  mac = MagmaOmac.new(key_mac, BlockLengthInBytes).update(iv+key).final
  ctr = MagmaCtr.new(key_enc, iv, BlockLengthInBytes)
  encr_key = ctr.encrypt(key)
  encr_mac = ctr.encrypt(mac)
  encr_key += encr_mac
end
import(encr_key, key_mac, key_enc, iv) click to toggle source
# File lib/gost_magma/magma_key_exp_imp.rb, line 11
def self.import(encr_key, key_mac, key_enc, iv)
  buf = MagmaCtr.new(key_enc, iv, BlockLengthInBytes).decrypt(encr_key)
  decr_key = buf[0...-BlockLengthInBytes]
  decr_mac = buf[decr_key.length..-1]
  mac = MagmaOmac.new(key_mac, BlockLengthInBytes).update(iv+decr_key).final
  if mac != decr_mac then
    decr_key = nil
  end
  decr_key
end