ed-precompiled_ed25519 1.4.0-arm64-darwin
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/CHANGES.md +88 -0
- data/LICENSE +22 -0
- data/README.md +181 -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 +7 -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/3.0/ed25519_ref10.bundle +0 -0
- data/lib/3.1/ed25519_ref10.bundle +0 -0
- data/lib/3.2/ed25519_ref10.bundle +0 -0
- data/lib/3.3/ed25519_ref10.bundle +0 -0
- data/lib/3.4/ed25519_ref10.bundle +0 -0
- data/lib/ed25519/signing_key.rb +60 -0
- data/lib/ed25519/verify_key.rb +45 -0
- data/lib/ed25519/version.rb +5 -0
- data/lib/ed25519.rb +77 -0
- metadata +133 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
{ 25967493,-14356035,29566456,3660896,-12694345,4014787,27544626,-11754271,-6079156,2047605 },
|
|
3
|
+
{ -12545711,934262,-2722910,3049990,-727428,9406986,12720692,5043384,19500929,-15469378 },
|
|
4
|
+
{ -8738181,4489570,9688441,-14785194,10184609,-12363380,29287919,11864899,-24514362,-4438546 },
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
{ 15636291,-9688557,24204773,-7912398,616977,-16685262,27787600,-14772189,28944400,-1550024 },
|
|
8
|
+
{ 16568933,4717097,-11556148,-1102322,15682896,-11807043,16354577,-11775962,7689662,11199574 },
|
|
9
|
+
{ 30464156,-5976125,-11779434,-15670865,23220365,15915852,7512774,10017326,-17749093,-9920357 },
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
{ 10861363,11473154,27284546,1981175,-30064349,12577861,32867885,14515107,-15438304,10819380 },
|
|
13
|
+
{ 4708026,6336745,20377586,9066809,-11272109,6594696,-25653668,12483688,-12668491,5581306 },
|
|
14
|
+
{ 19563160,16186464,-29386857,4097519,10237984,-4348115,28542350,13850243,-23678021,-15815942 },
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
{ 5153746,9909285,1723747,-2777874,30523605,5516873,19480852,5230134,-23952439,-15175766 },
|
|
18
|
+
{ -30269007,-3463509,7665486,10083793,28475525,1649722,20654025,16520125,30598449,7715701 },
|
|
19
|
+
{ 28881845,14381568,9657904,3680757,-20181635,7843316,-31400660,1370708,29794553,-1409300 },
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
{ -22518993,-6692182,14201702,-8745502,-23510406,8844726,18474211,-1361450,-13062696,13821877 },
|
|
23
|
+
{ -6455177,-7839871,3374702,-4740862,-27098617,-10571707,31655028,-7212327,18853322,-14220951 },
|
|
24
|
+
{ 4566830,-12963868,-28974889,-12240689,-7602672,-2830569,-8514358,-10431137,2207753,-3209784 },
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
{ -25154831,-4185821,29681144,7868801,-6854661,-9423865,-12437364,-663000,-31111463,-16132436 },
|
|
28
|
+
{ 25576264,-2703214,7349804,-11814844,16472782,9300885,3844789,15725684,171356,6466918 },
|
|
29
|
+
{ 23103977,13316479,9739013,-16149481,817875,-15038942,8965339,-14088058,-30714912,16193877 },
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
{ -33521811,3180713,-2394130,14003687,-16903474,-16270840,17238398,4729455,-18074513,9256800 },
|
|
33
|
+
{ -25182317,-4174131,32336398,5036987,-21236817,11360617,22616405,9761698,-19827198,630305 },
|
|
34
|
+
{ -13720693,2639453,-24237460,-7406481,9494427,-5774029,-6554551,-15960994,-2449256,-14291300 },
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
{ -3151181,-5046075,9282714,6866145,-31907062,-863023,-18940575,15033784,25105118,-7894876 },
|
|
38
|
+
{ -24326370,15950226,-31801215,-14592823,-11662737,-5090925,1573892,-2625887,2198790,-15804619 },
|
|
39
|
+
{ -3099351,10324967,-2241613,7453183,-5446979,-2735503,-13812022,-16236442,-32461234,-12290683 },
|
|
40
|
+
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
-10913610,13857413,-15372611,6949391,114729,-8787816,-6275908,-3247719,-18696448,-12055116
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
-21827239,-5839606,-30745221,13898782,229458,15978800,-12551817,-6495438,29715968,9444199
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#include "ruby.h"
|
|
2
|
+
#include "ed25519_ref10.h"
|
|
3
|
+
|
|
4
|
+
static VALUE mEd25519 = Qnil;
|
|
5
|
+
static VALUE mEd25519_Provider = Qnil;
|
|
6
|
+
static VALUE mEd25519_Provider_Ref10 = Qnil;
|
|
7
|
+
|
|
8
|
+
static VALUE mEd25519_Provider_Ref10_create_keypair(VALUE self, VALUE seed);
|
|
9
|
+
static VALUE mEd25519_Provider_Ref10_sign(VALUE self, VALUE signing_key, VALUE msg);
|
|
10
|
+
static VALUE mEd25519_Provider_Ref10_verify(VALUE self, VALUE verify_key, VALUE signature, VALUE msg);
|
|
11
|
+
|
|
12
|
+
void Init_ed25519_ref10()
|
|
13
|
+
{
|
|
14
|
+
mEd25519 = rb_define_module("Ed25519");
|
|
15
|
+
mEd25519_Provider = rb_define_module_under(mEd25519, "Provider");
|
|
16
|
+
mEd25519_Provider_Ref10 = rb_define_module_under(mEd25519_Provider, "Ref10");
|
|
17
|
+
|
|
18
|
+
rb_define_singleton_method(mEd25519_Provider_Ref10, "create_keypair", mEd25519_Provider_Ref10_create_keypair, 1);
|
|
19
|
+
rb_define_singleton_method(mEd25519_Provider_Ref10, "sign", mEd25519_Provider_Ref10_sign, 2);
|
|
20
|
+
rb_define_singleton_method(mEd25519_Provider_Ref10, "verify", mEd25519_Provider_Ref10_verify, 3);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static VALUE mEd25519_Provider_Ref10_create_keypair(VALUE self, VALUE seed)
|
|
24
|
+
{
|
|
25
|
+
uint8_t verify_key[PUBLICKEYBYTES];
|
|
26
|
+
uint8_t keypair[SECRETKEYBYTES];
|
|
27
|
+
|
|
28
|
+
StringValue(seed);
|
|
29
|
+
|
|
30
|
+
if(RSTRING_LEN(seed) != SECRETKEYBYTES / 2) {
|
|
31
|
+
rb_raise(rb_eArgError, "seed must be exactly %d bytes", SECRETKEYBYTES / 2);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
crypto_sign_ed25519_ref10_seed_keypair(verify_key, keypair, (uint8_t *)RSTRING_PTR(seed));
|
|
35
|
+
|
|
36
|
+
return rb_str_new((const char *)keypair, SECRETKEYBYTES);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static VALUE mEd25519_Provider_Ref10_sign(VALUE self, VALUE signing_key, VALUE msg)
|
|
40
|
+
{
|
|
41
|
+
uint8_t *sig_and_msg;
|
|
42
|
+
uint64_t sig_and_msg_len;
|
|
43
|
+
VALUE result;
|
|
44
|
+
|
|
45
|
+
StringValue(signing_key);
|
|
46
|
+
StringValue(msg);
|
|
47
|
+
|
|
48
|
+
if(RSTRING_LEN(signing_key) != SECRETKEYBYTES) {
|
|
49
|
+
rb_raise(rb_eArgError, "private signing keys must be %d bytes", SECRETKEYBYTES);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
sig_and_msg = (uint8_t *)xmalloc(SIGNATUREBYTES + RSTRING_LEN(msg));
|
|
53
|
+
crypto_sign_ed25519_ref10(
|
|
54
|
+
sig_and_msg, &sig_and_msg_len,
|
|
55
|
+
(uint8_t *)RSTRING_PTR(msg), RSTRING_LEN(msg),
|
|
56
|
+
(uint8_t *)RSTRING_PTR(signing_key)
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
result = rb_str_new((const char *)sig_and_msg, SIGNATUREBYTES);
|
|
60
|
+
xfree(sig_and_msg);
|
|
61
|
+
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static VALUE mEd25519_Provider_Ref10_verify(VALUE self, VALUE verify_key, VALUE signature, VALUE msg)
|
|
66
|
+
{
|
|
67
|
+
uint8_t *sig_and_msg, *buffer;
|
|
68
|
+
uint64_t sig_and_msg_len, buffer_len;
|
|
69
|
+
int result;
|
|
70
|
+
|
|
71
|
+
StringValue(verify_key);
|
|
72
|
+
StringValue(signature);
|
|
73
|
+
StringValue(msg);
|
|
74
|
+
|
|
75
|
+
if(RSTRING_LEN(verify_key) != PUBLICKEYBYTES) {
|
|
76
|
+
rb_raise(rb_eArgError, "public verify keys must be %d bytes", PUBLICKEYBYTES);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if(RSTRING_LEN(signature) != SIGNATUREBYTES) {
|
|
80
|
+
rb_raise(rb_eArgError, "signatures must be %d bytes", SIGNATUREBYTES);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
sig_and_msg_len = SIGNATUREBYTES + RSTRING_LEN(msg);
|
|
84
|
+
sig_and_msg = (unsigned char *)xmalloc(sig_and_msg_len);
|
|
85
|
+
buffer = (unsigned char *)xmalloc(sig_and_msg_len);
|
|
86
|
+
memcpy(sig_and_msg, RSTRING_PTR(signature), SIGNATUREBYTES);
|
|
87
|
+
memcpy(sig_and_msg + SIGNATUREBYTES, RSTRING_PTR(msg), RSTRING_LEN(msg));
|
|
88
|
+
|
|
89
|
+
result = crypto_sign_open_ed25519_ref10(
|
|
90
|
+
buffer, &buffer_len,
|
|
91
|
+
sig_and_msg, sig_and_msg_len,
|
|
92
|
+
(uint8_t *)RSTRING_PTR(verify_key)
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
xfree(sig_and_msg);
|
|
96
|
+
xfree(buffer);
|
|
97
|
+
|
|
98
|
+
return result == 0 ? Qtrue : Qfalse;
|
|
99
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#ifndef ED25519_REF10_H
|
|
2
|
+
#define ED25519_REF10_H
|
|
3
|
+
|
|
4
|
+
#include <stdint.h>
|
|
5
|
+
|
|
6
|
+
#define SECRETKEYBYTES 64
|
|
7
|
+
#define PUBLICKEYBYTES 32
|
|
8
|
+
#define SIGNATUREBYTES 64
|
|
9
|
+
|
|
10
|
+
#define ED25519_KEYSIZE_BYTES 32
|
|
11
|
+
typedef uint8_t ED25519_KEY[ED25519_KEYSIZE_BYTES];
|
|
12
|
+
|
|
13
|
+
/* Generate an Ed25519 keypair from a seed value */
|
|
14
|
+
int crypto_sign_ed25519_ref10_seed_keypair(uint8_t *pk, uint8_t *sk, const uint8_t *seed);
|
|
15
|
+
|
|
16
|
+
/* Compute an Ed25519 signature over the given message */
|
|
17
|
+
int crypto_sign_ed25519_ref10(
|
|
18
|
+
uint8_t *sm, uint64_t *smlen,
|
|
19
|
+
const uint8_t *m, uint64_t mlen,
|
|
20
|
+
const uint8_t *sk
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
/* Verify the given signature is authentic */
|
|
24
|
+
int crypto_sign_open_ed25519_ref10(
|
|
25
|
+
uint8_t *m, uint64_t *mlen,
|
|
26
|
+
const uint8_t *sm, uint64_t smlen,
|
|
27
|
+
const uint8_t *pk
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
/* Constant-time comparison function */
|
|
31
|
+
int crypto_verify_32(const uint8_t *x,const uint8_t *y);
|
|
32
|
+
|
|
33
|
+
#endif /* ED25519_REF10_H */
|