self_crypto 0.0.2 → 0.0.7
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/account.c +2 -9
- data/ext/self_crypto/omemo.c +4 -4
- 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_account.rb +10 -0
- data/test/spec/test_util.rb +17 -0
- data/test/unit/test_account_methods.rb +0 -4
- 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: c80522a003146eb903859a9fc2007546dc76ff94e599b3eaceccbe328b753fbb
|
4
|
+
data.tar.gz: a1a7eb743ed6b4c22d0a9b70c33f9aba491d6bf88a02bba32dbbb4659c570621
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8bf46420a38dda34c0574ecbc9ee785290dd2d3bcd94db3513547e65fe750c9cec0c835da24043224fb3d08bb318b47263e5753ff43d6ab55569cafd8ae4f3b
|
7
|
+
data.tar.gz: 785ee198c7345c1fa6ead3df9211181de418045cc33979c414b2f150d73f43b8303edc0be6469179c3f03e4acbe262d33834be3fcec5ba371fee41fada314ef7
|
data/ext/self_crypto/account.c
CHANGED
@@ -46,24 +46,17 @@ static VALUE initialize(int argc, VALUE *argv, VALUE self)
|
|
46
46
|
}
|
47
47
|
|
48
48
|
if(pickle != Qnil){
|
49
|
-
|
50
49
|
if(olm_unpickle_account(this, RSTRING_PTR(password), RSTRING_LEN(password), RSTRING_PTR(dup_string(pickle)), RSTRING_LEN(pickle)) == olm_error()){
|
51
|
-
|
52
50
|
raise_olm_error(olm_account_last_error(this));
|
53
51
|
}
|
54
|
-
}
|
55
|
-
if(seed != Qnil){
|
52
|
+
} else if(seed != Qnil){
|
56
53
|
if(olm_create_account_derrived_keys(this, RSTRING_PTR(seed), RSTRING_LEN(seed)) == olm_error()){
|
57
|
-
|
58
54
|
raise_olm_error(olm_account_last_error(this));
|
59
55
|
}
|
60
|
-
}
|
61
|
-
else{
|
62
|
-
|
56
|
+
} else {
|
63
57
|
size = olm_create_account_random_length(this);
|
64
58
|
|
65
59
|
if(olm_create_account(this, RSTRING_PTR(get_random(size)), size) == olm_error()){
|
66
|
-
|
67
60
|
raise_olm_error(olm_account_last_error(this));
|
68
61
|
}
|
69
62
|
}
|
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
|
}
|
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
data/test/spec/test_account.rb
CHANGED
@@ -95,6 +95,16 @@ describe "Account" do
|
|
95
95
|
|
96
96
|
end
|
97
97
|
|
98
|
+
describe "#inbound_session from pickled account" do
|
99
|
+
|
100
|
+
let(:remote_session){ remote.outbound_session(account.ik['curve25519'], account.otk['curve25519'].values.first) }
|
101
|
+
let(:remote_message){ remote_session.encrypt("hello") }
|
102
|
+
let(:pickled_account){ account.to_pickle("test") }
|
103
|
+
let(:unpickled_account){ SelfCrypto::Account.from_pickle(pickled_account, "test") }
|
104
|
+
it("creates session") { _(unpickled_account.inbound_session(remote_message, remote.ik['curve25519'])).must_be_kind_of SelfCrypto::Session }
|
105
|
+
|
106
|
+
end
|
107
|
+
|
98
108
|
end
|
99
109
|
|
100
110
|
end
|
@@ -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
|
@@ -25,10 +25,6 @@ class TestAccount < Minitest::Test
|
|
25
25
|
assert_equal OlmError::SUCCESS, @state.last_error
|
26
26
|
end
|
27
27
|
|
28
|
-
def test_sign
|
29
|
-
assert_instance_of String, @state.sign("hello")
|
30
|
-
end
|
31
|
-
|
32
28
|
def test_mark_keys_as_published
|
33
29
|
assert_equal @state, @state.mark_keys_as_published
|
34
30
|
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.7
|
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-21 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
|