class HuaweiCloudSass::Parse
Public Instance Methods
decode(data)
click to toggle source
# File lib/huawei_cloud_sass/parse.rb, line 4 def decode(data) cipher = OpenSSL::Cipher::AES.new(128, :CBC) cipher.decrypt cipher.key = sha1prng cipher.iv = data[0..15] cipher.update(Base64.decode64(data[16..-1])) << cipher.final end
encode(data)
click to toggle source
# File lib/huawei_cloud_sass/parse.rb, line 12 def encode(data) cipher = OpenSSL::Cipher::AES.new(128, :CBC) cipher.encrypt cipher.key = sha1prng iv = SecureRandom.hex(8) cipher.iv = iv content = cipher.update(data) << cipher.final iv + Base64.strict_encode64(content) end
sha1prng()
click to toggle source
# File lib/huawei_cloud_sass/parse.rb, line 22 def sha1prng key = OpenSSL::Digest.digest("SHA1", @key) key_bytes = OpenSSL::Digest.digest("SHA1", key).bytes[0..15] for i in 0...key_bytes.size if key_bytes[i] > 128 key_bytes[i] = key_bytes[i] - 256 end end key_bytes.pack('c*').force_encoding("UTF-8") end
sign_body(body)
click to toggle source
# File lib/huawei_cloud_sass/parse.rb, line 35 def sign_body(body) digest = OpenSSL::Digest.new('sha256') Base64.strict_encode64 OpenSSL::HMAC.digest(digest, @key, body.to_json) end