Sha256: b89435696a81ed50b74244ea191fb28e243213cfb903928fd0eb96b25e8a27b4

Contents?: true

Size: 681 Bytes

Versions: 1

Compression:

Stored size: 681 Bytes

Contents

require "base64"
require "json"
require "jose"

module JsonJws::Verify
  def verify_signature(jwk, b64_payload, jws_json_signature)
    verify_hash = {
      "payload" => b64_payload,
      "protected" => jws_json_signature["protected"],
      "signature" => jws_json_signature["signature"],
    }

    JOSE::JWS.verify(jwk, verify_hash).first
  end

  def verify(jws, jwks)

    # verify payload is base64 encoded
    begin
      Base64.urlsafe_decode64(jws["payload"])
    rescue
      return false
    end

    jws["signatures"].each_with_index do |signature, index|
      return false unless verify_signature(jwks[index], jws["payload"], signature)
    end

    true
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
json_jws-0.1.0 lib/json_jws/verify.rb