Sha256: afbfba38327700b638e446e551c71357b9a11c2aedd356eea7813d6c9150a9e0

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

module Sidetree
  module Util
    module JWK
      module_function

      # Parse jwk hash object.
      # The returned jwk does not include the kid.
      # @param [Hash] params
      # @return [JSON::JWK]
      def parse(params)
        jwk = JSON::JWK.new(params)
        jwk.delete("kid")
        jwk
      end

      # Validate jwk object as sidetree jwk.
      # @param [JSON::JWK] jwk
      # @raise [Sidetree::Error]
      def validate!(jwk)
        raise Sidetree::Error unless jwk.is_a?(JSON::JWK)
        jwk.keys.each do |k|
          unless %w[kty crv x y].include?(k)
            raise Sidetree::Error, "JWK Es256k has unknown property"
          end
        end
        unless jwk[:kty] == "EC"
          raise Sidetree::Error, "JWK Es256k missing or invalid kty"
        end
        unless jwk[:crv] == "secp256k1"
          raise Sidetree::Error, "JWK Es256k missing or invalid crv"
        end
        unless jwk[:x].is_a?(String)
          raise Sidetree::Error, "JWK Es256k missing or invalid type x"
        end
        unless jwk[:y].is_a?(String)
          raise Sidetree::Error, "JWK Es256k missing or invalid type y"
        end
        unless jwk[:x].length == 43
          raise Sidetree::Error, "JWK Es256k has incorrect length of x"
        end
        unless jwk[:y].length == 43
          raise Sidetree::Error, "JWK Es256k has incorrect length of y"
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sidetree-0.1.5 lib/sidetree/util/jwk.rb
sidetree-0.1.4 lib/sidetree/util/jwk.rb
sidetree-0.1.3 lib/sidetree/util/jwk.rb