ed25519 1.2.4-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.rspec +5 -0
- data/.rubocop.yml +35 -0
- data/.travis.yml +26 -0
- data/CHANGES.md +70 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +12 -0
- data/LICENSE +22 -0
- data/README.md +170 -0
- data/Rakefile +27 -0
- data/appveyor.yml +21 -0
- data/ed25519.gemspec +32 -0
- data/ed25519.png +0 -0
- data/ext/ed25519_jruby/LICENSE.txt +123 -0
- data/ext/ed25519_jruby/README.md +77 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/EdDSAEngine.java +491 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/EdDSAKey.java +31 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/EdDSAPrivateKey.java +338 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/EdDSAPublicKey.java +275 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/EdDSASecurityProvider.java +59 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/KeyFactory.java +75 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/KeyPairGenerator.java +97 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/Utils.java +103 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/Constants.java +23 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/Curve.java +100 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/Encoding.java +54 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/Field.java +99 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/FieldElement.java +76 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/GroupElement.java +1034 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/ScalarOps.java +34 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/bigint/BigIntegerFieldElement.java +131 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/bigint/BigIntegerLittleEndianEncoding.java +102 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/bigint/BigIntegerScalarOps.java +37 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/bigint/package.html +6 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/ed25519/Ed25519FieldElement.java +988 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/ed25519/Ed25519LittleEndianEncoding.java +256 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/math/ed25519/Ed25519ScalarOps.java +693 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAGenParameterSpec.java +32 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSANamedCurveSpec.java +35 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSANamedCurveTable.java +71 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAParameterSpec.java +97 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPrivateKeySpec.java +133 -0
- data/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java +61 -0
- data/ext/ed25519_jruby/org/cryptorb/Ed25519Provider.java +95 -0
- data/ext/ed25519_ref10/api.h +4 -0
- data/ext/ed25519_ref10/base.h +1344 -0
- data/ext/ed25519_ref10/base2.h +40 -0
- data/ext/ed25519_ref10/d.h +1 -0
- data/ext/ed25519_ref10/d2.h +1 -0
- data/ext/ed25519_ref10/ed25519_ref10.c +99 -0
- data/ext/ed25519_ref10/ed25519_ref10.h +33 -0
- data/ext/ed25519_ref10/extconf.rb +9 -0
- data/ext/ed25519_ref10/fe.c +1085 -0
- data/ext/ed25519_ref10/fe.h +56 -0
- data/ext/ed25519_ref10/ge.c +407 -0
- data/ext/ed25519_ref10/ge.h +95 -0
- data/ext/ed25519_ref10/ge_add.h +97 -0
- data/ext/ed25519_ref10/ge_madd.h +88 -0
- data/ext/ed25519_ref10/ge_msub.h +88 -0
- data/ext/ed25519_ref10/ge_p2_dbl.h +73 -0
- data/ext/ed25519_ref10/ge_sub.h +97 -0
- data/ext/ed25519_ref10/keypair.c +22 -0
- data/ext/ed25519_ref10/open.c +47 -0
- data/ext/ed25519_ref10/pow22523.h +160 -0
- data/ext/ed25519_ref10/pow225521.h +160 -0
- data/ext/ed25519_ref10/sc.h +17 -0
- data/ext/ed25519_ref10/sc_muladd.c +366 -0
- data/ext/ed25519_ref10/sc_reduce.c +272 -0
- data/ext/ed25519_ref10/sha512.c +304 -0
- data/ext/ed25519_ref10/sha512.h +8 -0
- data/ext/ed25519_ref10/sign.c +41 -0
- data/ext/ed25519_ref10/sqrtm1.h +1 -0
- data/ext/ed25519_ref10/verify.c +40 -0
- data/lib/ed25519.rb +72 -0
- data/lib/ed25519/signing_key.rb +60 -0
- data/lib/ed25519/verify_key.rb +44 -0
- data/lib/ed25519/version.rb +5 -0
- metadata +137 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
#include <string.h>
|
2
|
+
#include "ed25519_ref10.h"
|
3
|
+
#include "sha512.h"
|
4
|
+
#include "ge.h"
|
5
|
+
#include "sc.h"
|
6
|
+
|
7
|
+
int crypto_sign_ed25519_ref10(
|
8
|
+
uint8_t *sm, uint64_t *smlen,
|
9
|
+
const uint8_t *m, uint64_t mlen,
|
10
|
+
const uint8_t *sk
|
11
|
+
)
|
12
|
+
{
|
13
|
+
unsigned char pk[32];
|
14
|
+
unsigned char az[64];
|
15
|
+
unsigned char nonce[64];
|
16
|
+
unsigned char hram[64];
|
17
|
+
ge_p3 R;
|
18
|
+
|
19
|
+
memmove(pk,sk + 32,32);
|
20
|
+
|
21
|
+
crypto_hash_sha512(az,sk,32);
|
22
|
+
az[0] &= 248;
|
23
|
+
az[31] &= 63;
|
24
|
+
az[31] |= 64;
|
25
|
+
|
26
|
+
*smlen = mlen + 64;
|
27
|
+
memmove(sm + 64,m,mlen);
|
28
|
+
memmove(sm + 32,az + 32,32);
|
29
|
+
crypto_hash_sha512(nonce,sm + 32,mlen + 32);
|
30
|
+
memmove(sm + 32,pk,32);
|
31
|
+
|
32
|
+
sc_reduce(nonce);
|
33
|
+
ge_scalarmult_base(&R,nonce);
|
34
|
+
ge_p3_tobytes(sm,&R);
|
35
|
+
|
36
|
+
crypto_hash_sha512(hram,sm,mlen + 64);
|
37
|
+
sc_reduce(hram);
|
38
|
+
sc_muladd(sm + 32,hram,az,nonce);
|
39
|
+
|
40
|
+
return 0;
|
41
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
-32595792,-7943725,9377950,3500415,12389472,-272473,-25146209,-2005654,326686,11406482
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#include "ed25519_ref10.h"
|
2
|
+
|
3
|
+
int crypto_verify_32(const uint8_t *x,const uint8_t *y)
|
4
|
+
{
|
5
|
+
unsigned int differentbits = 0;
|
6
|
+
#define F(i) differentbits |= x[i] ^ y[i];
|
7
|
+
F(0)
|
8
|
+
F(1)
|
9
|
+
F(2)
|
10
|
+
F(3)
|
11
|
+
F(4)
|
12
|
+
F(5)
|
13
|
+
F(6)
|
14
|
+
F(7)
|
15
|
+
F(8)
|
16
|
+
F(9)
|
17
|
+
F(10)
|
18
|
+
F(11)
|
19
|
+
F(12)
|
20
|
+
F(13)
|
21
|
+
F(14)
|
22
|
+
F(15)
|
23
|
+
F(16)
|
24
|
+
F(17)
|
25
|
+
F(18)
|
26
|
+
F(19)
|
27
|
+
F(20)
|
28
|
+
F(21)
|
29
|
+
F(22)
|
30
|
+
F(23)
|
31
|
+
F(24)
|
32
|
+
F(25)
|
33
|
+
F(26)
|
34
|
+
F(27)
|
35
|
+
F(28)
|
36
|
+
F(29)
|
37
|
+
F(30)
|
38
|
+
F(31)
|
39
|
+
return (1 & ((differentbits - 1) >> 8)) - 1;
|
40
|
+
}
|
data/lib/ed25519.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "ed25519/version"
|
4
|
+
require "ed25519/signing_key"
|
5
|
+
require "ed25519/verify_key"
|
6
|
+
|
7
|
+
# The Ed25519 digital signatre algorithm
|
8
|
+
# rubocop:disable Metrics/LineLength
|
9
|
+
module Ed25519
|
10
|
+
module_function
|
11
|
+
|
12
|
+
# Size of an Ed25519 key (public or private) in bytes
|
13
|
+
KEY_SIZE = 32
|
14
|
+
|
15
|
+
# Size of an Ed25519 signature in bytes
|
16
|
+
SIGNATURE_SIZE = 64
|
17
|
+
|
18
|
+
# Raised when a signature fails to verify
|
19
|
+
VerifyError = Class.new(StandardError)
|
20
|
+
|
21
|
+
# Raised when the built-in self-test fails
|
22
|
+
SelfTestFailure = Class.new(StandardError)
|
23
|
+
|
24
|
+
class << self
|
25
|
+
# Obtain the backend provider module used to perform signatures
|
26
|
+
attr_accessor :provider
|
27
|
+
end
|
28
|
+
|
29
|
+
# Select the Ed25519::Provider to use based on the current environment
|
30
|
+
if defined? JRUBY_VERSION
|
31
|
+
require "ed25519_jruby"
|
32
|
+
self.provider = org.cryptorb.Ed25519Provider.createEd25519Module(JRuby.runtime)
|
33
|
+
else
|
34
|
+
require "ed25519_ref10"
|
35
|
+
self.provider = Ed25519::Provider::Ref10
|
36
|
+
end
|
37
|
+
|
38
|
+
# Ensure a serialized key meets the requirements
|
39
|
+
def validate_key_bytes(key_bytes)
|
40
|
+
raise TypeError, "expected String, got #{key_bytes.class}" unless key_bytes.is_a?(String)
|
41
|
+
return true if key_bytes.bytesize == KEY_SIZE
|
42
|
+
raise ArgumentError, "expected #{KEY_SIZE}-byte String, got #{key_bytes.bytesize}"
|
43
|
+
end
|
44
|
+
|
45
|
+
# Perform a self-test to ensure the selected provider is working
|
46
|
+
def self_test
|
47
|
+
signature_key = Ed25519::SigningKey.new("A" * 32)
|
48
|
+
raise SelfTestFailure, "failed to generate verify key correctly" unless signature_key.verify_key.to_bytes.unpack("H*").first == "db995fe25169d141cab9bbba92baa01f9f2e1ece7df4cb2ac05190f37fcc1f9d"
|
49
|
+
|
50
|
+
message = "crypto libraries should self-test on boot"
|
51
|
+
signature = signature_key.sign(message)
|
52
|
+
raise SelfTestFailure, "failed to generate correct signature" unless signature.unpack("H*").first == "c62c12a3a6cbfa04800d4be81468ef8aecd152a6a26a81d91257baecef13ba209531fe905a843e833c8b71cee04400fa2af3a29fef1152ece470421848758d0a"
|
53
|
+
|
54
|
+
verify_key = signature_key.verify_key
|
55
|
+
raise SelfTestFailure, "failed to verify a valid signature" unless verify_key.verify(signature, message)
|
56
|
+
|
57
|
+
bad_signature = signature[0...63] + "X"
|
58
|
+
ex = nil
|
59
|
+
|
60
|
+
# rubocop:disable Lint/HandleExceptions
|
61
|
+
begin
|
62
|
+
verify_key.verify(bad_signature, message)
|
63
|
+
rescue Ed25519::VerifyError => ex
|
64
|
+
end
|
65
|
+
# rubocop:enable Lint/HandleExceptions
|
66
|
+
|
67
|
+
raise SelfTestFailure, "failed to detect an invalid signature" unless ex.is_a?(Ed25519::VerifyError)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# Automatically run self-test when library loads
|
72
|
+
Ed25519.self_test
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "securerandom"
|
4
|
+
|
5
|
+
module Ed25519
|
6
|
+
# Private key for producing digital signatures
|
7
|
+
class SigningKey
|
8
|
+
attr_reader :seed, :keypair, :verify_key
|
9
|
+
|
10
|
+
# Generate a random Ed25519 signing key (i.e. private scalar)
|
11
|
+
def self.generate
|
12
|
+
new SecureRandom.random_bytes(Ed25519::KEY_SIZE)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Create a SigningKey from a 64-byte Ed25519 keypair (i.e. public + private)
|
16
|
+
#
|
17
|
+
# @param keypair [String] 64-byte keypair value containing both seed + public key
|
18
|
+
def self.from_keypair(keypair)
|
19
|
+
raise TypeError, "expected String, got #{keypair.class}" unless keypair.is_a?(String)
|
20
|
+
raise ArgumentError, "expected 64-byte String, got #{keypair.bytesize}" unless keypair.bytesize == 64
|
21
|
+
|
22
|
+
new(keypair[0, KEY_SIZE]).tap do |key|
|
23
|
+
raise ArgumentError, "corrupt keypair" unless keypair[KEY_SIZE, KEY_SIZE] == key.verify_key.to_bytes
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Create a new Ed25519::SigningKey from the given seed value
|
28
|
+
#
|
29
|
+
# @param seed [String] 32-byte seed value from which the key should be derived
|
30
|
+
def initialize(seed)
|
31
|
+
Ed25519.validate_key_bytes(seed)
|
32
|
+
|
33
|
+
@seed = seed
|
34
|
+
@keypair = Ed25519.provider.create_keypair(seed)
|
35
|
+
@verify_key = VerifyKey.new(@keypair[32, 32])
|
36
|
+
end
|
37
|
+
|
38
|
+
# Sign the given message, returning an Ed25519 signature
|
39
|
+
#
|
40
|
+
# @param message [String] message to be signed
|
41
|
+
#
|
42
|
+
# @return [String] 64-byte Ed25519 signature
|
43
|
+
def sign(message)
|
44
|
+
Ed25519.provider.sign(@keypair, message)
|
45
|
+
end
|
46
|
+
|
47
|
+
# String inspection that does not leak secret values
|
48
|
+
def inspect
|
49
|
+
to_s
|
50
|
+
end
|
51
|
+
|
52
|
+
# Return a bytestring representation of this signing key
|
53
|
+
#
|
54
|
+
# @return [String] signing key converted to a bytestring
|
55
|
+
def to_bytes
|
56
|
+
seed
|
57
|
+
end
|
58
|
+
alias to_str to_bytes
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ed25519
|
4
|
+
# Public key for verifying digital signatures
|
5
|
+
class VerifyKey
|
6
|
+
# Create a Ed25519::VerifyKey from its serialized Twisted Edwards representation
|
7
|
+
#
|
8
|
+
# @param key [String] 32-byte string representing a serialized public key
|
9
|
+
def initialize(key)
|
10
|
+
Ed25519.validate_key_bytes(key)
|
11
|
+
@key_bytes = key
|
12
|
+
end
|
13
|
+
|
14
|
+
# Verify an Ed25519 signature against the message
|
15
|
+
#
|
16
|
+
# @param signature [String] 64-byte string containing an Ed25519 signature
|
17
|
+
# @param message [String] string containing message to be verified
|
18
|
+
#
|
19
|
+
# @raise Ed25519::VerifyError signature verification failed
|
20
|
+
#
|
21
|
+
# @return [true] message verified successfully
|
22
|
+
def verify(signature, message)
|
23
|
+
if signature.length != SIGNATURE_SIZE
|
24
|
+
raise ArgumentError, "expected #{SIGNATURE_SIZE} byte signature, got #{signature.length}"
|
25
|
+
end
|
26
|
+
|
27
|
+
return true if Ed25519.provider.verify(@key_bytes, signature, message)
|
28
|
+
raise VerifyError, "signature verification failed!"
|
29
|
+
end
|
30
|
+
|
31
|
+
# Return a compressed twisted Edwards coordinate representing the public key
|
32
|
+
#
|
33
|
+
# @return [String] bytestring serialization of this public key
|
34
|
+
def to_bytes
|
35
|
+
@key_bytes
|
36
|
+
end
|
37
|
+
alias to_str to_bytes
|
38
|
+
|
39
|
+
# Show hex representation of serialized coordinate in string inspection
|
40
|
+
def inspect
|
41
|
+
"#<#{self.class}:#{@key_bytes.unpack('H*').first}>"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
metadata
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ed25519
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.4
|
5
|
+
platform: java
|
6
|
+
authors:
|
7
|
+
- Tony Arcieri
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-01-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '1.16'
|
19
|
+
name: bundler
|
20
|
+
prerelease: false
|
21
|
+
type: :development
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.16'
|
27
|
+
description: A Ruby binding to the Ed25519 elliptic curve public-key signature system
|
28
|
+
described in RFC 8032.
|
29
|
+
email:
|
30
|
+
- tony.arcieri@gmail.com
|
31
|
+
executables: []
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- ".gitignore"
|
36
|
+
- ".rspec"
|
37
|
+
- ".rubocop.yml"
|
38
|
+
- ".travis.yml"
|
39
|
+
- CHANGES.md
|
40
|
+
- CODE_OF_CONDUCT.md
|
41
|
+
- Gemfile
|
42
|
+
- LICENSE
|
43
|
+
- README.md
|
44
|
+
- Rakefile
|
45
|
+
- appveyor.yml
|
46
|
+
- ed25519.gemspec
|
47
|
+
- ed25519.png
|
48
|
+
- ext/ed25519_jruby/LICENSE.txt
|
49
|
+
- ext/ed25519_jruby/README.md
|
50
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/EdDSAEngine.java
|
51
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/EdDSAKey.java
|
52
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/EdDSAPrivateKey.java
|
53
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/EdDSAPublicKey.java
|
54
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/EdDSASecurityProvider.java
|
55
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/KeyFactory.java
|
56
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/KeyPairGenerator.java
|
57
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/Utils.java
|
58
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/Constants.java
|
59
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/Curve.java
|
60
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/Encoding.java
|
61
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/Field.java
|
62
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/FieldElement.java
|
63
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/GroupElement.java
|
64
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/ScalarOps.java
|
65
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/bigint/BigIntegerFieldElement.java
|
66
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/bigint/BigIntegerLittleEndianEncoding.java
|
67
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/bigint/BigIntegerScalarOps.java
|
68
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/bigint/package.html
|
69
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/ed25519/Ed25519FieldElement.java
|
70
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/ed25519/Ed25519LittleEndianEncoding.java
|
71
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/math/ed25519/Ed25519ScalarOps.java
|
72
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAGenParameterSpec.java
|
73
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSANamedCurveSpec.java
|
74
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSANamedCurveTable.java
|
75
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAParameterSpec.java
|
76
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPrivateKeySpec.java
|
77
|
+
- ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
|
78
|
+
- ext/ed25519_jruby/org/cryptorb/Ed25519Provider.java
|
79
|
+
- ext/ed25519_ref10/api.h
|
80
|
+
- ext/ed25519_ref10/base.h
|
81
|
+
- ext/ed25519_ref10/base2.h
|
82
|
+
- ext/ed25519_ref10/d.h
|
83
|
+
- ext/ed25519_ref10/d2.h
|
84
|
+
- ext/ed25519_ref10/ed25519_ref10.c
|
85
|
+
- ext/ed25519_ref10/ed25519_ref10.h
|
86
|
+
- ext/ed25519_ref10/extconf.rb
|
87
|
+
- ext/ed25519_ref10/fe.c
|
88
|
+
- ext/ed25519_ref10/fe.h
|
89
|
+
- ext/ed25519_ref10/ge.c
|
90
|
+
- ext/ed25519_ref10/ge.h
|
91
|
+
- ext/ed25519_ref10/ge_add.h
|
92
|
+
- ext/ed25519_ref10/ge_madd.h
|
93
|
+
- ext/ed25519_ref10/ge_msub.h
|
94
|
+
- ext/ed25519_ref10/ge_p2_dbl.h
|
95
|
+
- ext/ed25519_ref10/ge_sub.h
|
96
|
+
- ext/ed25519_ref10/keypair.c
|
97
|
+
- ext/ed25519_ref10/open.c
|
98
|
+
- ext/ed25519_ref10/pow22523.h
|
99
|
+
- ext/ed25519_ref10/pow225521.h
|
100
|
+
- ext/ed25519_ref10/sc.h
|
101
|
+
- ext/ed25519_ref10/sc_muladd.c
|
102
|
+
- ext/ed25519_ref10/sc_reduce.c
|
103
|
+
- ext/ed25519_ref10/sha512.c
|
104
|
+
- ext/ed25519_ref10/sha512.h
|
105
|
+
- ext/ed25519_ref10/sign.c
|
106
|
+
- ext/ed25519_ref10/sqrtm1.h
|
107
|
+
- ext/ed25519_ref10/verify.c
|
108
|
+
- lib/ed25519.rb
|
109
|
+
- lib/ed25519/signing_key.rb
|
110
|
+
- lib/ed25519/verify_key.rb
|
111
|
+
- lib/ed25519/version.rb
|
112
|
+
- lib/ed25519_jruby.jar
|
113
|
+
homepage: https://github.com/crypto-rb/ed25519
|
114
|
+
licenses:
|
115
|
+
- MIT
|
116
|
+
metadata: {}
|
117
|
+
post_install_message:
|
118
|
+
rdoc_options: []
|
119
|
+
require_paths:
|
120
|
+
- lib
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 2.0.0
|
126
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
requirements: []
|
132
|
+
rubyforge_project:
|
133
|
+
rubygems_version: 2.7.4
|
134
|
+
signing_key:
|
135
|
+
specification_version: 4
|
136
|
+
summary: An efficient digital signature library providing the Ed25519 algorithm
|
137
|
+
test_files: []
|