Sha256: bb37f184a42d91cfa7c055459dfff7317b69f6d6f0a3ec0e2c3cc909531e0590

Contents?: true

Size: 915 Bytes

Versions: 1

Compression:

Stored size: 915 Bytes

Contents

# frozen_string_literal: true

require "java"

module Ed25519
  # Core functionality provided by an Ed25519 library
  module Engine
    module_function

    def create_keypair(seed)
      raise ArgumentError, "seed must be 32 bytes long" unless seed.length == 32

      verify_key = org.cryptosphere.ed25519.publickey(seed.to_java_bytes)
      verify_key = String.from_java_bytes(verify_key)
      [verify_key, seed + verify_key]
    end

    def sign(signing_key, message)
      verify_key  = signing_key[32...64].to_java_bytes
      signing_key = signing_key[0...32].to_java_bytes

      signature = org.cryptosphere.ed25519.signature(message.to_java_bytes, signing_key, verify_key)
      String.from_java_bytes(signature)
    end

    def verify(verify_key, signature, message)
      org.cryptosphere.ed25519.checkvalid(signature.to_java_bytes, message.to_java_bytes, verify_key.to_java_bytes)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ed25519-0.1.0 lib/ed25519/jruby_engine.rb