Sha256: be2bb683faeaa42e2715a74f12806d6503b04149d4042fbbdba92d9c55c89a01

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

require 'spec_helper'

describe Ed25519::Engine do
  let(:seed_length) { Ed25519::SECRET_KEY_BYTES }
  let(:message)     { 'foobar' }

  it "generates keypairs" do
    ary = Ed25519::Engine.create_keypair("A" * seed_length)

    ary.length.should eq 2
    pubkey, privkey = ary

    pubkey.should be_a String
    pubkey.length.should eq Ed25519::PUBLIC_KEY_BYTES

    privkey.should be_a String
    privkey.length.should eq Ed25519::SECRET_KEY_BYTES * 2
  end

  it "raises ArgumentError if the seed is not #{Ed25519::SECRET_KEY_BYTES / 2} bytes long" do
    expect { Ed25519::Engine.create_keypair("A" * (seed_length - 1)) }.to raise_exception ArgumentError
    expect { Ed25519::Engine.create_keypair("A" * (seed_length + 1)) }.to raise_exception ArgumentError
  end

  it "signs and verifies messages" do
    verify_key, signing_key = Ed25519::Engine.create_keypair("A" * seed_length)
    signature = Ed25519::Engine.sign(signing_key, message)
    Ed25519::Engine.verify(verify_key, signature, message).should be_true

    bad_signature = signature[0...63] + "X"
    Ed25519::Engine.verify(verify_key, bad_signature, message).should be_false
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
red25519-1.0.0 spec/red25519/engine_spec.rb