Sha256: 8f0c762a239676ed869d16940616ac5a9595ee12af1ac7adc102847bd0a20846
Contents?: true
Size: 761 Bytes
Versions: 51
Compression:
Stored size: 761 Bytes
Contents
module RubySMB module Crypto module KDF def self.counter_mode(ki, label, context, length: 128) digest = OpenSSL::Digest.new('SHA256') r = 32 n = length / 256 n = 1 if n == 0 raise ArgumentError if n > 2**r - 1 result = "" n.times do |i| input = [i + 1].pack('L>') input << label input << "\x00" input << context input << [length].pack('L>') k = OpenSSL::HMAC.digest(digest, ki, input) result << k end return result[0...(length / 8)] rescue OpenSSL::OpenSSLError => e raise RubySMB::Error::EncryptionError, "Crypto::KDF.counter_mode OpenSSL error: #{e.message}" end end end end
Version data entries
51 entries across 51 versions & 1 rubygems