lib/eventq/eventq_base/signature_providers/sha256_signature_provider.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module EventQ
  module SignatureProviders
    class Sha256SignatureProvider

      def initialize
        require 'openssl'
        require 'base64'
        @serializer = serialization_provider_manager.get_provider(EventQ::Configuration.serialization_provider)
      end

      #This method is called to create a signature for a message
      def write(message:, secret:)
        json = @serializer.serialize(message.content)
        hash = OpenSSL::HMAC.digest('sha256', secret, json)
        Base64.encode64(hash)
      end

      #This method is called to validate a message signature
      def valid?(message:, secret:)
        signature = write(message: message, secret: secret)
        message.signature == signature
      end

      private

      def serialization_provider_manager
        EventQ::SerializationProviders::Manager.new
      end
    end
  end
end