lib/opentoken.rb in opentoken-1.2.1 vs lib/opentoken.rb in opentoken-1.2.2
- old
+ new
@@ -37,11 +37,11 @@
mac = []
mac << "0x01".hex.chr # OTK version
mac << cipher.suite.chr
mac << iv
- mac << serialized
+ mac << force_encoding(serialized, 'BINARY')
hash = OpenSSL::HMAC.digest(OpenToken::PasswordKeyGenerator::SHA1_DIGEST, key, mac.join)
token_string = ""
token_string = "OTK" + 1.chr + cipher.suite.chr
token_string += hash
@@ -112,11 +112,11 @@
verify payload_hmac == hash, "HMAC for payload was #{hash} and expected to be #{payload_hmac}"
end
unescaped_payload = CGI::unescapeHTML(unparsed_payload)
puts 'UNESCAPED PAYLOAD', unescaped_payload if debug?
- token = OpenToken::KeyValueSerializer.deserialize unescaped_payload
+ token = OpenToken::KeyValueSerializer.deserialize force_encoding(unescaped_payload, 'UTF-8')
puts token.inspect if debug?
token.validate!
token
end
@@ -168,9 +168,12 @@
index = 0
string.each_byte do |b|
puts "#{index}: #{b} => #{b.chr}"
index += 1
end
+ end
+ def force_encoding(string, encoding)
+ string.respond_to?(:force_encoding) ? string.force_encoding(encoding) : string
end
end
end
# intialize defaults