self_crypto 0.0.1 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/self_crypto/omemo.c +4 -4
- data/ext/self_crypto/self_crypto.c +18 -2
- data/ext/self_crypto/session.c +4 -4
- data/ext/self_crypto/utility.c +3 -3
- data/lib/self_crypto/version.rb +1 -1
- data/test/spec/test_util.rb +17 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73eca72eccdafd451e608539b1b3ca79e344ff359f6b4665ccb400bcd8228a96
|
4
|
+
data.tar.gz: 80b460665fb84005612a6236eca92dc99c640c1750f0cce282c31ff5acdafce9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85eeecb3fc6132ce712648f4490513ce4ee03e833c6eeeb6ae90211158bb6d576492c931f3f67f863fdd682f99a02a89709966c5ab4dfd34ea917bf9cc803efc
|
7
|
+
data.tar.gz: 1a6bd6df98128d36ce74225fcb83c17db9e3eb19a315ad0570760a2835248ecbea876e6d4408ecfd5940290829ea2f0c24311514aa7b36e7fd5ee6cf4fc7f4b7
|
data/ext/self_crypto/omemo.c
CHANGED
@@ -48,7 +48,7 @@ static VALUE add_participant(VALUE self, VALUE identity, VALUE session)
|
|
48
48
|
return identity;
|
49
49
|
}
|
50
50
|
|
51
|
-
static VALUE
|
51
|
+
static VALUE group_encrypt(VALUE self, VALUE plaintext)
|
52
52
|
{
|
53
53
|
GroupSession *this;
|
54
54
|
VALUE ciphertext;
|
@@ -91,7 +91,7 @@ static VALUE encrypt(VALUE self, VALUE plaintext)
|
|
91
91
|
return ciphertext;
|
92
92
|
}
|
93
93
|
|
94
|
-
static VALUE
|
94
|
+
static VALUE group_decrypt(VALUE self, VALUE sender, VALUE ciphertext)
|
95
95
|
{
|
96
96
|
GroupSession *this;
|
97
97
|
VALUE plaintext;
|
@@ -165,6 +165,6 @@ void group_session_init()
|
|
165
165
|
|
166
166
|
rb_define_method(cGroupSession, "initialize", initialize, -1);
|
167
167
|
rb_define_method(cGroupSession, "add_participant", add_participant, 2);
|
168
|
-
rb_define_method(cGroupSession, "encrypt",
|
169
|
-
rb_define_method(cGroupSession, "decrypt",
|
168
|
+
rb_define_method(cGroupSession, "encrypt", group_encrypt, 1);
|
169
|
+
rb_define_method(cGroupSession, "decrypt", group_decrypt, 2);
|
170
170
|
}
|
@@ -30,7 +30,6 @@ static VALUE get_olm_version(VALUE self)
|
|
30
30
|
|
31
31
|
void Init_self_crypto(void)
|
32
32
|
{
|
33
|
-
rb_require("openssl");
|
34
33
|
rb_require("json");
|
35
34
|
rb_require("self_crypto/olm_error");
|
36
35
|
|
@@ -51,7 +50,24 @@ void raise_olm_error(const char *error)
|
|
51
50
|
|
52
51
|
VALUE get_random(size_t size)
|
53
52
|
{
|
54
|
-
|
53
|
+
VALUE rand;
|
54
|
+
void *ptr;
|
55
|
+
|
56
|
+
if (sodium_init() == -1) {
|
57
|
+
rb_raise(rb_eNoMemError, "%s()", __FUNCTION__);
|
58
|
+
}
|
59
|
+
|
60
|
+
if ((ptr = malloc(size)) == NULL){
|
61
|
+
rb_raise(rb_eNoMemError, "%s()", __FUNCTION__);
|
62
|
+
}
|
63
|
+
|
64
|
+
randombytes_buf(ptr, size);
|
65
|
+
|
66
|
+
rand = rb_str_new(ptr, size);
|
67
|
+
|
68
|
+
free(ptr);
|
69
|
+
|
70
|
+
return rand;
|
55
71
|
}
|
56
72
|
|
57
73
|
VALUE dup_string(VALUE str)
|
data/ext/self_crypto/session.c
CHANGED
@@ -205,7 +205,7 @@ static VALUE message_type(VALUE self)
|
|
205
205
|
return retval;
|
206
206
|
}
|
207
207
|
|
208
|
-
static VALUE
|
208
|
+
static VALUE session_encrypt(VALUE self, VALUE plain)
|
209
209
|
{
|
210
210
|
size_t cipher_size, random_size;
|
211
211
|
void *ptr;
|
@@ -238,7 +238,7 @@ static VALUE encrypt(VALUE self, VALUE plain)
|
|
238
238
|
return retval;
|
239
239
|
}
|
240
240
|
|
241
|
-
static VALUE
|
241
|
+
static VALUE session_decrypt(VALUE self, VALUE cipher)
|
242
242
|
{
|
243
243
|
size_t plain_size, plain_max, type;
|
244
244
|
void *ptr;
|
@@ -356,8 +356,8 @@ void session_init(void)
|
|
356
356
|
rb_define_method(cSession, "id", get_session_id, 0);
|
357
357
|
rb_define_method(cSession, "last_error", last_error, 0);
|
358
358
|
rb_define_method(cSession, "has_received_message", has_received_message, 0);
|
359
|
-
rb_define_method(cSession, "encrypt",
|
360
|
-
rb_define_method(cSession, "decrypt",
|
359
|
+
rb_define_method(cSession, "encrypt", session_encrypt, 1);
|
360
|
+
rb_define_method(cSession, "decrypt", session_decrypt, 1);
|
361
361
|
rb_define_method(cSession, "to_pickle", to_pickle, -1);
|
362
362
|
rb_define_method(cSession, "will_receive?", will_receive, -1);
|
363
363
|
}
|
data/ext/self_crypto/utility.c
CHANGED
@@ -48,12 +48,12 @@ static VALUE ed25519_pk_to_curve25519(VALUE self, VALUE ed25519_pk)
|
|
48
48
|
NULL,
|
49
49
|
&dec_sz,
|
50
50
|
NULL,
|
51
|
-
|
51
|
+
sodium_base64_VARIANT_URLSAFE_NO_PADDING
|
52
52
|
);
|
53
53
|
|
54
54
|
if(success != 0) {
|
55
55
|
free(dec_ptr);
|
56
|
-
rb_raise(rb_eTypeError, "could not
|
56
|
+
rb_raise(rb_eTypeError, "could not decode ed25519 public key");
|
57
57
|
}
|
58
58
|
|
59
59
|
if((pk_ptr = malloc(pk_sz)) == NULL){
|
@@ -88,7 +88,7 @@ static VALUE ed25519_pk_to_curve25519(VALUE self, VALUE ed25519_pk)
|
|
88
88
|
|
89
89
|
free(pk_ptr);
|
90
90
|
|
91
|
-
curve25519_sk =
|
91
|
+
curve25519_sk = rb_str_new_cstr(enc_ptr);
|
92
92
|
|
93
93
|
free(enc_ptr);
|
94
94
|
|
data/lib/self_crypto/version.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest/reporters'
|
3
|
+
require 'self_crypto'
|
4
|
+
|
5
|
+
reporter_options = { color: true }
|
6
|
+
Minitest::Reporters.use! [Minitest::Reporters::DefaultReporter.new(reporter_options)]
|
7
|
+
|
8
|
+
describe "Util" do
|
9
|
+
|
10
|
+
describe "ed25519_pk_to_curve25519" do
|
11
|
+
account = SelfCrypto::Account.from_seed("pA0H92i1hsp1/egmS/tuEho5PpsAaQYrBd0Tj7bvAPI")
|
12
|
+
ed25519_pk = Base64.urlsafe_encode64(Base64.decode64(account.ik['ed25519']), padding: false)
|
13
|
+
curve25519_pk = SelfCrypto::Util.ed25519_pk_to_curve25519(ed25519_pk)
|
14
|
+
it("should convert"){ _(account.ik['curve25519']).must_equal curve25519_pk }
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: self_crypto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Bevan
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-10-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|
@@ -103,6 +103,7 @@ files:
|
|
103
103
|
- test/examples/test_bob_no_answer.rb
|
104
104
|
- test/examples/test_exchange.rb
|
105
105
|
- test/spec/test_account.rb
|
106
|
+
- test/spec/test_util.rb
|
106
107
|
- test/unit/test_account_methods.rb
|
107
108
|
homepage: https://github.com/aldgate-ventures/self-crypto-ruby
|
108
109
|
licenses:
|
@@ -131,4 +132,5 @@ test_files:
|
|
131
132
|
- test/unit/test_account_methods.rb
|
132
133
|
- test/examples/test_exchange.rb
|
133
134
|
- test/examples/test_bob_no_answer.rb
|
135
|
+
- test/spec/test_util.rb
|
134
136
|
- test/spec/test_account.rb
|