Sha256: 8ddc5676116708e3ca241295e43e664892a047945b2d81f56d0f33437dff790f

Contents?: true

Size: 958 Bytes

Versions: 9

Compression:

Stored size: 958 Bytes

Contents

# frozen_string_literal: true

module Linzer
  module Common
    def signature_base(message, components, parameters)
      signature_base = components.each_with_object(+"") do |component, base|
        base << "\"#{component}\": #{message[component]}\n"
      end

      signature_params =
        Starry.serialize([Starry::InnerList.new(components, parameters)])

      signature_base << "\"@signature-params\": #{signature_params}"
      signature_base
    end

    def validate_components(message, components)
      if components.include?("@signature-params")
        raise Error.new "Invalid component in signature input"
      end
      msg = "Cannot verify signature. Missing component in message: %s"
      components.each { |c| raise Error.new msg % "\"#{c}\"" unless message.field?(c)  }
      msg = "Invalid signature. Duplicated component in signature input."
      raise Error.new msg if components.size != components.uniq.size
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
linzer-0.6.0 lib/linzer/common.rb
linzer-0.5.2 lib/linzer/common.rb
linzer-0.5.1 lib/linzer/common.rb
linzer-0.5.0 lib/linzer/common.rb
linzer-0.4.1 lib/linzer/common.rb
linzer-0.4.0 lib/linzer/common.rb
linzer-0.3.2 lib/linzer/common.rb
linzer-0.3.1 lib/linzer/common.rb
linzer-0.3.0 lib/linzer/common.rb