ffi-libsodium 0.0.7 → 0.0.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 809b5a363af975be25d1bece0bf14d70fffacd36
4
- data.tar.gz: 52789ce07fa6173a7eb8f7602ededd02dc74f720
3
+ metadata.gz: 58327f2bb9c42be2df97ac8335ea4ed62d0cdc09
4
+ data.tar.gz: aaa7cfd98b775901e0c1e8cb767df222b3727d13
5
5
  SHA512:
6
- metadata.gz: 33ac72f615ac5b7eda4407b28588321aa74d2274a1dcac5455986cb68511c8d786451ad01fdbe5160a8ad06a8762d95043646ec87b45a4b809f16efc0e11c6a4
7
- data.tar.gz: bdd464b328937b41f9f2f5f9300fd734758462f96310ae4fa84c906343a277e54ecc76c0835519d8cedecc08184c490182434d93abf4660c9bb1cf746582b3fa
6
+ metadata.gz: 21c89d5597a816816f311aa56bbd47312f10c086c9376b287049a596117a9020cde9401ab3741c10fa6b8747c7cf2825b5e2f2a5c98e7746fa0b1abf914b902d
7
+ data.tar.gz: 00fde23905b545079a29cd981d7e6267a0e02cfa1650155cc4b87bc2b66fd143229c855f893852236d5775a990f16fbbf36fc9cdc8a632f6852339a5e04cf5d4
@@ -1,7 +1,9 @@
1
- require_relative '../../sodium'
1
+ require 'ffi'
2
2
  require_relative '../../sodium/utils'
3
- require_relative '../../sodium/secret_buffer'
4
3
  require_relative '../../random_bytes'
4
+ require_relative '../../sodium/buffer'
5
+ require_relative '../../sodium/secret_buffer'
6
+ require_relative '../../sodium'
5
7
 
6
8
  module Crypto
7
9
  module AEAD
data/lib/crypto/auth.rb CHANGED
@@ -1,4 +1,4 @@
1
- require_relative '../sodium'
1
+ require 'ffi'
2
2
  require_relative '../sodium/utils'
3
3
  require_relative '../sodium/buffer'
4
4
  require_relative '../sodium/secret_buffer'
data/lib/crypto/box.rb CHANGED
@@ -1,8 +1,9 @@
1
- require_relative '../sodium'
1
+ require 'ffi'
2
2
  require_relative '../sodium/utils'
3
+ require_relative '../random_bytes'
3
4
  require_relative '../sodium/buffer'
4
5
  require_relative '../sodium/secret_buffer'
5
- require_relative '../random_bytes'
6
+ require_relative '../sodium'
6
7
 
7
8
  module Crypto
8
9
  module Box
@@ -58,7 +59,7 @@ module Crypto
58
59
  seed.readonly if seed.is_a?(Sodium::SecretBuffer)
59
60
  crypto_box_seed_keypair(public_key, secret_key, seed)
60
61
  seed.noaccess if seed.is_a?(Sodium::SecretBuffer)
61
-
62
+
62
63
  [public_key, secret_key]
63
64
  end
64
65
 
@@ -1,5 +1,6 @@
1
- require_relative '../sodium'
1
+ require 'ffi'
2
2
  require_relative '../sodium/utils'
3
+ require_relative '../sodium'
3
4
  require_relative '../sodium/buffer'
4
5
  require_relative '../sodium/secret_buffer'
5
6
 
@@ -1,4 +1,4 @@
1
- require_relative '../sodium'
1
+ require 'ffi'
2
2
  require_relative '../sodium/utils'
3
3
  require_relative '../sodium/buffer'
4
4
  require_relative '../sodium/secret_buffer'
@@ -1,8 +1,8 @@
1
- require_relative '../../sodium'
1
+ require 'ffi'
2
2
  require_relative '../../sodium/utils'
3
- require_relative '../../sodium/buffer'
4
- require_relative '../../sodium/secret_buffer'
5
3
  require_relative '../../random_bytes'
4
+ require_relative '../../sodium'
5
+ require_relative '../../sodium/secret_buffer'
6
6
 
7
7
  module Crypto
8
8
  module PwHash
@@ -1,8 +1,7 @@
1
- require_relative '../sodium'
1
+ require 'ffi'
2
2
  require_relative '../sodium/utils'
3
3
  require_relative '../sodium/buffer'
4
4
  require_relative '../sodium/secret_buffer'
5
- require_relative '../random_bytes'
6
5
 
7
6
  module Crypto
8
7
  module ScalarMult
@@ -1,8 +1,9 @@
1
- require_relative '../sodium'
1
+ require 'ffi'
2
2
  require_relative '../sodium/utils'
3
+ require_relative '../random_bytes'
3
4
  require_relative '../sodium/buffer'
4
5
  require_relative '../sodium/secret_buffer'
5
- require_relative '../random_bytes'
6
+ require_relative '../sodium'
6
7
 
7
8
  module Crypto
8
9
  module SecretBox
@@ -1,4 +1,4 @@
1
- require_relative '../sodium'
1
+ require 'ffi'
2
2
  require_relative '../sodium/utils'
3
3
  require_relative '../sodium/buffer'
4
4
  require_relative '../sodium/secret_buffer'
data/lib/crypto/sign.rb CHANGED
@@ -1,8 +1,8 @@
1
- require_relative '../sodium'
1
+ require 'ffi'
2
2
  require_relative '../sodium/utils'
3
3
  require_relative '../sodium/buffer'
4
4
  require_relative '../sodium/secret_buffer'
5
- require_relative '../random_bytes'
5
+ require_relative '../sodium'
6
6
 
7
7
  module Crypto
8
8
  module Sign
@@ -0,0 +1,57 @@
1
+ require 'ffi'
2
+ require_relative '../../sodium/utils'
3
+ require_relative '../scalar_mult'
4
+ require_relative '../../sodium/buffer'
5
+ require_relative '../../sodium/secret_buffer'
6
+
7
+ module Crypto
8
+ module Sign
9
+ module Ed25519
10
+ PRIMITIVE = 'ed25519'.freeze
11
+ extend FFI::Library
12
+ extend Sodium::Utils
13
+
14
+ ffi_lib :libsodium
15
+
16
+ class << self
17
+ def crypto_sign_ed25519_primitive
18
+ PRIMITIVE
19
+ end
20
+
21
+ alias_method :primitive, :crypto_sign_ed25519_primitive
22
+ end
23
+
24
+ attach_function :publickeybytes, :crypto_sign_ed25519_publickeybytes, [], :size_t
25
+ attach_function :secretkeybytes, :crypto_sign_ed25519_secretkeybytes, [], :size_t
26
+
27
+ PUBLICKEYBYTES = publickeybytes.freeze
28
+ SECRETKEYBYTES = secretkeybytes.freeze
29
+
30
+ attach_function :crypto_sign_ed25519_pk_to_curve25519, [:buffer_out, :buffer_in], :int
31
+ attach_function :crypto_sign_ed25519_sk_to_curve25519, [:buffer_out, :buffer_in], :int
32
+
33
+ module_function
34
+
35
+ def pk_to_curve25519(public_key)
36
+ check_length(public_key, PUBLICKEYBYTES, :PublicKey)
37
+
38
+ curve25519_pk = Sodium::Buffer.new(:uchar, ScalarMult::BYTES)
39
+ crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, public_key)
40
+
41
+ curve25519_pk
42
+ end
43
+
44
+ def sk_to_curve25519(secret_key)
45
+ check_length(secret_key, SECRETKEYBYTES, :SecretKey)
46
+
47
+ curve25519_sk = Sodium::SecretBuffer.new(ScalarMult::BYTES)
48
+ secret_key.readonly if secret_key.is_a?(Sodium::SecretBuffer)
49
+ crypto_sign_ed25519_sk_to_curve25519(curve25519_sk, secret_key)
50
+ secret_key.noaccess if secret_key.is_a?(Sodium::SecretBuffer)
51
+ curve25519_sk.noaccess
52
+
53
+ curve25519_sk
54
+ end
55
+ end
56
+ end
57
+ end
data/lib/libsodium.rb CHANGED
@@ -13,6 +13,7 @@ require_relative 'crypto/short_hash'
13
13
  require_relative 'crypto/pw_hash/scrypt_salsa208_sha256'
14
14
  require_relative 'crypto/one_time_auth'
15
15
  require_relative 'crypto/scalar_mult'
16
+ require_relative 'crypto/sign/ed25519'
16
17
 
17
18
  Thread.exclusive do
18
19
  if Sodium.init == -1
data/lib/random_bytes.rb CHANGED
@@ -1,4 +1,5 @@
1
- require_relative 'sodium/buffer'
1
+ require 'ffi'
2
+ require_relative 'sodium/buffer'
2
3
 
3
4
  module RandomBytes
4
5
  extend FFI::Library
@@ -1,4 +1,7 @@
1
- require_relative '../sodium'
1
+ require 'forwardable'
2
+ require_relative 'utils'
3
+ require_relative '../sodium'
4
+ require 'ffi'
2
5
 
3
6
  module Sodium
4
7
  class SecretBuffer
data/lib/sodium/utils.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require_relative '../sodium'
2
+ require 'ffi'
2
3
 
3
4
  module Sodium
4
5
  module Utils
@@ -69,5 +70,15 @@ module Sodium
69
70
  def zeros(n)
70
71
  ZERO * n
71
72
  end
73
+
74
+ HEXY = 'H*'.freeze
75
+
76
+ def bin2hex(bytes)
77
+ bytes.to_str.unpack(HEXY).first
78
+ end
79
+
80
+ def hex2bin(hex)
81
+ [hex].pack(HEXY)
82
+ end
72
83
  end
73
84
  end
@@ -1,3 +1,3 @@
1
1
  module Sodium
2
- VERSION = '0.0.7'.freeze
2
+ VERSION = '0.0.8'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-libsodium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hendrik Beskow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-06 00:00:00.000000000 Z
11
+ date: 2014-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -56,6 +56,7 @@ files:
56
56
  - lib/crypto/secret_box.rb
57
57
  - lib/crypto/short_hash.rb
58
58
  - lib/crypto/sign.rb
59
+ - lib/crypto/sign/ed25519.rb
59
60
  - lib/libsodium.rb
60
61
  - lib/random_bytes.rb
61
62
  - lib/sodium.rb