Sha256: 1d3bd19715accaf978c59285607cdccb6368d848110de548824041d949a36e2f

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

begin
  gem "ed25519", ">= 1.0.0"
  require "ed25519"
rescue LoadError
  warn "OpenSSL::SignatureAlgorithm::EdDSA requires the ed25519 gem, version 1.0 or higher. "\
        "Please add it to your Gemfile: `gem \"ed25519\", \"~> 1.0\"`"
  raise
end

require "openssl/signature_algorithm/base"

module OpenSSL
  module SignatureAlgorithm
    class EdDSA < Base
      class SigningKey < ::Ed25519::SigningKey
        def verify_key
          VerifyKey.new(keypair[32, 32])
        end
      end

      class VerifyKey < ::Ed25519::VerifyKey
        def self.deserialize(key_bytes)
          new(key_bytes)
        end

        def serialize
          to_bytes
        end
      end

      def generate_signing_key
        @signing_key = SigningKey.generate
      end

      def sign(data)
        signing_key.sign(data)
      end

      def verify(signature, verification_data)
        verify_key.verify(signature, verification_data)
      rescue ::Ed25519::VerifyError
        raise(OpenSSL::SignatureAlgorithm::SignatureVerificationError, "Signature verification failed")
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
openssl-signature_algorithm-1.3.0 lib/openssl/signature_algorithm/eddsa.rb
openssl-signature_algorithm-1.2.1 lib/openssl/signature_algorithm/eddsa.rb
openssl-signature_algorithm-1.1.1 lib/openssl/signature_algorithm/eddsa.rb
openssl-signature_algorithm-1.1.0 lib/openssl/signature_algorithm/eddsa.rb