148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
# File 'lib/jose/jws.rb', line 148
def self.verify(key, signed)
if signed.is_a?(String)
signed = JOSE::JWS.expand(signed)
end
if signed.is_a?(Hash)
signed = JOSE::SignedMap.new(signed)
end
if signed.is_a?(JOSE::Map) and signed['payload'].is_a?(String) and signed['protected'].is_a?(String) and signed['signature'].is_a?(String)
jws = from_binary(JOSE.urlsafe_decode64(signed['protected']))
signature = JOSE.urlsafe_decode64(signed['signature'])
plain_text = JOSE.urlsafe_decode64(signed['payload'])
return jws.verify(key, plain_text, signature, signed['protected'])
else
raise ArgumentError, "'signed' is not a valid signed String, Hash, or JOSE::Map"
end
end
|