ccrypto-ruby 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19d85394d769795021b692546a1b3373f207245170fdb3643fe0cae3f61de767
4
- data.tar.gz: 8801b56e4104f29d75c149b4cde284e9a472f84457a71adf362fa2d8cefe3549
3
+ metadata.gz: 334d81d203e4defc9139c72cb185b1b009e583f85cc72529a07ced65418e214d
4
+ data.tar.gz: 9142a94b47ad091dbdfb58fe622c8c085c06ed1008aca5eec563938d66c328ce
5
5
  SHA512:
6
- metadata.gz: 4c638760828f593ae2821d2c7d2043c0edd7e3774a1e1ef65c5d8f9b050deb451e4a73548d89549568ddc41c160d3de1256e0bb4ff22ca8d6989999c50d986e2
7
- data.tar.gz: 91ac3b9c37c7f4fc39ba7eb1e727017e30eec7a2f809b74390a22634f35c5f4f813fe0d072a0099ae4073721586abbde9e01fac6fbf54965c077c6722aa97af8
6
+ metadata.gz: 4fa4c241abaa3b79645156f17381589303773bbd1639e30479e3da202b56e9ce53668c6ee19c31d5f784f46d3e077ba7ee978c984cc7993ce22c02893a077aaf
7
+ data.tar.gz: f5606a7adf8f7548243789dc2af58ebe8266d2fcef8016a9d51b8096c9802a55fbd117a5c6958cfdb50db01760ef91cdf5154afef65a368115f4af0fefbbbeec
@@ -0,0 +1,4 @@
1
+ ---
2
+ ccrypto-ruby:
3
+ - :version: 0.1.0
4
+ :timestamp: 1660209964.0417259
@@ -0,0 +1,29 @@
1
+
2
+ FROM ruby:3.2.1
3
+ LABEL version="0.1"
4
+ LABEL maintainer="chris"
5
+ LABEL description="Dockerfile generated by dockerun"
6
+ LABEL dockerun-info="https://github.com/chrisliaw/dockerun"
7
+
8
+
9
+ RUN apt-get update && apt-get install -y sudo git curl build-essential
10
+
11
+
12
+
13
+
14
+ RUN groupadd -f -g 1000 chris && \
15
+ useradd -u 1000 -g 1000 -m chris && \
16
+ usermod -aG sudo chris && \
17
+ echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
18
+
19
+ USER chris
20
+
21
+ # from this point onwards, sudo is required for privileaged operation
22
+ #RUN sudo apt-get install -y curl build-essential
23
+
24
+
25
+
26
+ # other Dockerfile entries starts here
27
+
28
+ CMD [ "/bin/bash", "--login" ]
29
+
data/Gemfile CHANGED
@@ -9,4 +9,4 @@ gem "rake", "~> 13.0"
9
9
 
10
10
  gem "rspec", "~> 3.0"
11
11
 
12
- #gem "ccrypto", git: "ccrypto", branch: 'main'
12
+ gem "ccrypto", git: "ccrypto", branch: 'main'
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  GIT
2
2
  remote: ccrypto
3
- revision: 0d1c446d77fb781857f5ac087de9326bc3dafca9
3
+ revision: b0556276400b3f7740f92436e6cb0afbb1e94122
4
4
  branch: main
5
5
  specs:
6
- ccrypto (0.1.0)
6
+ ccrypto (0.1.2)
7
7
  activesupport
8
8
  teLogger
9
9
  toolrack
@@ -11,52 +11,85 @@ GIT
11
11
  PATH
12
12
  remote: .
13
13
  specs:
14
- ccrypto-ruby (0.1.0)
14
+ ccrypto-ruby (0.1.1)
15
+ ed25519
15
16
  teLogger
16
17
  toolrack
18
+ x25519
17
19
 
18
20
  GEM
19
21
  remote: https://rubygems.org/
20
22
  specs:
21
- activesupport (7.0.3.1)
23
+ activesupport (7.0.4.3)
22
24
  concurrent-ruby (~> 1.0, >= 1.0.2)
23
25
  i18n (>= 1.6, < 2)
24
26
  minitest (>= 5.1)
25
27
  tzinfo (~> 2.0)
26
- base58 (0.2.3)
27
- concurrent-ruby (1.1.10)
28
+ concurrent-ruby (1.2.2)
29
+ devops_assist (0.3.11)
30
+ git_cli
31
+ git_cli_prompt (~> 0.3.3)
32
+ gvcs
33
+ teLogger
34
+ toolrack
35
+ tty-prompt
28
36
  diff-lcs (1.5.0)
37
+ ed25519 (1.3.0)
38
+ git_cli (0.11.2)
39
+ gvcs
40
+ ptools (~> 1.4.0)
41
+ teLogger
42
+ toolrack
43
+ git_cli_prompt (0.3.4)
44
+ teLogger
45
+ toolrack
46
+ tty-prompt
47
+ gvcs (0.1.1)
29
48
  i18n (1.12.0)
30
49
  concurrent-ruby (~> 1.0)
31
- minitest (5.16.2)
50
+ minitest (5.18.0)
51
+ pastel (0.8.0)
52
+ tty-color (~> 0.5)
53
+ ptools (1.4.3)
32
54
  rake (13.0.6)
33
- rspec (3.11.0)
34
- rspec-core (~> 3.11.0)
35
- rspec-expectations (~> 3.11.0)
36
- rspec-mocks (~> 3.11.0)
37
- rspec-core (3.11.0)
38
- rspec-support (~> 3.11.0)
39
- rspec-expectations (3.11.0)
55
+ rspec (3.12.0)
56
+ rspec-core (~> 3.12.0)
57
+ rspec-expectations (~> 3.12.0)
58
+ rspec-mocks (~> 3.12.0)
59
+ rspec-core (3.12.1)
60
+ rspec-support (~> 3.12.0)
61
+ rspec-expectations (3.12.2)
40
62
  diff-lcs (>= 1.2.0, < 2.0)
41
- rspec-support (~> 3.11.0)
42
- rspec-mocks (3.11.1)
63
+ rspec-support (~> 3.12.0)
64
+ rspec-mocks (3.12.5)
43
65
  diff-lcs (>= 1.2.0, < 2.0)
44
- rspec-support (~> 3.11.0)
45
- rspec-support (3.11.0)
46
- teLogger (0.1.0)
47
- tlogger (0.26.3)
48
- toolrack (0.18.5)
49
- base58
50
- tlogger
51
- tzinfo (2.0.5)
66
+ rspec-support (~> 3.12.0)
67
+ rspec-support (3.12.0)
68
+ teLogger (0.2.2)
69
+ toolrack (0.21.0)
70
+ tty-color (0.6.0)
71
+ tty-cursor (0.7.1)
72
+ tty-prompt (0.23.1)
73
+ pastel (~> 0.8)
74
+ tty-reader (~> 0.8)
75
+ tty-reader (0.9.0)
76
+ tty-cursor (~> 0.7)
77
+ tty-screen (~> 0.8)
78
+ wisper (~> 2.0)
79
+ tty-screen (0.8.1)
80
+ tzinfo (2.0.6)
52
81
  concurrent-ruby (~> 1.0)
82
+ wisper (2.0.1)
83
+ x25519 (1.0.10)
53
84
 
54
85
  PLATFORMS
86
+ ruby
55
87
  x86_64-linux
56
88
 
57
89
  DEPENDENCIES
58
90
  ccrypto!
59
91
  ccrypto-ruby!
92
+ devops_assist
60
93
  rake (~> 13.0)
61
94
  rspec (~> 3.0)
62
95
 
data/ccrypto-ruby.gemspec CHANGED
@@ -33,7 +33,10 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency 'teLogger'
34
34
  spec.add_dependency 'toolrack'
35
35
 
36
- spec.add_dependency 'ccrypto'
36
+ #spec.add_dependency 'ccrypto' #, "~> 0.1.2"
37
+
38
+ spec.add_dependency 'ed25519'
39
+ spec.add_dependency 'x25519'
37
40
 
38
41
  spec.add_development_dependency 'devops_assist'
39
42
 
data/gen_ecc_const.rb ADDED
@@ -0,0 +1,13 @@
1
+
2
+
3
+ require 'openssl'
4
+
5
+ res = {}
6
+ start = 0x0300
7
+ OpenSSL::PKey::EC.builtin_curves.sort.each do |c|
8
+ next if c[0] =~ /^wap/
9
+ res[c[0]] = ("0x%.4x" % start)
10
+ start += 1
11
+ end
12
+
13
+ pp res
@@ -2,6 +2,10 @@
2
2
  require_relative 'ruby/engines/ecc_engine'
3
3
  require_relative 'ruby/engines/digest_engine'
4
4
  require_relative 'ruby/engines/x509_engine'
5
+ require_relative 'ruby/engines/x509_csr_engine'
6
+
7
+ require_relative 'ruby/engines/ed25519_engine'
8
+ require_relative 'ruby/engines/x25519_engine'
5
9
 
6
10
  require_relative 'ruby/engines/scrypt_engine'
7
11
  require_relative 'ruby/engines/hkdf_engine'
@@ -31,12 +35,50 @@ require_relative 'ruby/engines/rsa_engine'
31
35
 
32
36
  module Ccrypto
33
37
  module Ruby
38
+
39
+ class KSPemStore
40
+ include TR::CondUtils
41
+ include PEMStore
42
+ end
43
+
44
+ class KSP12Store
45
+ include TR::CondUtils
46
+ include DataConversion
47
+ include PKCS12Store
48
+ end
49
+
34
50
  class Provider
35
51
 
36
52
  def self.provider_name
37
53
  "ruby"
38
54
  end
39
55
 
56
+ def self.supported_keypair_config(purpose = :signing, &block)
57
+ case purpose
58
+ when :signing, :sign, :identity
59
+ [Ccrypto::ECCConfig, Ccrypto::RSAConfig, Ccrypto::ED25519Config]
60
+ when :cipher, :encryption, :enc
61
+ [Ccrypto::ECCConfig, Ccrypto::RSAConfig, Ccrypto::X25519Config]
62
+ when :sign_and_encrypt, :sign_and_enc, :sign_and_cipher
63
+ [Ccrypto::ECCConfig, Ccrypto::RSAConfig]
64
+ else
65
+ raise KeypairEngineException, "Unknown key purpose '#{purpose}'. Supported including :signing, :cipher or :both"
66
+ end
67
+ end
68
+
69
+ def self.supported_secret_key_config(&block)
70
+ CipherEngine.supported_cipher_list
71
+ end
72
+
73
+ def self.keybundle_from_storage(*args, &block)
74
+ input = args.first
75
+ if KSPemStore.is_pem?(input)
76
+ KSPemStore.from_pem(input, &block)
77
+ else
78
+ KSP12Store.from_pkcs12(input, &block)
79
+ end
80
+ end
81
+
40
82
  def self.algo_instance(*args, &block)
41
83
  config = args.first
42
84
 
@@ -61,6 +103,10 @@ module Ccrypto
61
103
  Ccrypto::Ruby::SecretKeyEngine
62
104
  elsif config == Ccrypto::SecretSharingConfig
63
105
  SecretSharingEngine
106
+ elsif config == Ccrypto::X509::CSRProfile
107
+ X509CSREngine
108
+ elsif config == Ccrypto::ED25519Config
109
+ ED25519Engine
64
110
  else
65
111
  raise CcryptoProviderException, "Config class '#{config}' is not supported for provider '#{self.provider_name}'"
66
112
  end
@@ -74,6 +120,8 @@ module Ccrypto
74
120
  DigestEngine.instance(*args, &block)
75
121
  when Ccrypto::X509::CertProfile
76
122
  X509Engine.new(*args,&block)
123
+ when Ccrypto::X509::CSRProfile
124
+ X509CSREngine.new(*args,&block)
77
125
  when Ccrypto::ScryptConfig
78
126
  ScryptEngine.new(*args,&block)
79
127
  when Ccrypto::HKDFConfig
@@ -88,55 +136,15 @@ module Ccrypto
88
136
  SecretSharingEngine.new(*args,&block)
89
137
  when Ccrypto::PKCS7Config
90
138
  PKCS7Engine.new(*args, &block)
139
+ when Ccrypto::ED25519Config
140
+ ED25519Engine.new(*args, &block)
141
+ when Ccrypto::X25519Config
142
+ X25519Engine.new(*args, &block)
91
143
  else
92
144
  raise CcryptoProviderException, "Config instance '#{config}' is not supported for provider '#{self.provider_name}'"
93
145
  end
94
146
  end
95
147
 
96
- #case config
97
- #when Ccrypto::ECCConfig.class
98
- # puts "ecc config class"
99
- # ECCEngine
100
- #when Ccrypto::ECCConfig
101
- # puts "ecc config"
102
- # ECCEngine.new(*args, &block)
103
- #when Ccrypto::DigestConfig.class
104
- # puts "digest config class"
105
- # DigestEngine
106
- #when Ccrypto::DigestConfig
107
- # puts "digest config"
108
- # DigestEngine.instance(*args,&block)
109
- #else
110
- # raise CcryptoProviderException, "Config '#{config}' is not supported for provider '#{self.provider_name}'"
111
- #end
112
-
113
- #case algo
114
- #when :ecc
115
- # ECCEngine
116
- #when :x509
117
- # if args.length > 1
118
- # X509Engine.new(*args[1..-1])
119
- # else
120
- # X509Engine
121
- # end
122
- #when :scrypt
123
- # ScryptEngine.new
124
- #when :secure_random
125
- # SecureRandomEngine
126
- #else
127
- # if DigestEngine.is_supported?(algo)
128
- # DigestEngine.instance(algo)
129
- # elsif CipherEngine.is_supported_cipher?(algo.to_s)
130
- # if args.length > 1 or args[0].is_a?(String)
131
- # CipherEngine.new(*args)
132
- # else
133
- # CipherEngine
134
- # end
135
- # else
136
- # raise CcryptoProviderException, "Algo '#{algo}' is not supported for provider '#{self.provider_name}'"
137
- # end
138
- #end
139
-
140
148
  end
141
149
 
142
150
  def self.asn1_engine(*args, &block)
@@ -0,0 +1,82 @@
1
+
2
+
3
+
4
+ module Ccrypto
5
+ module Ruby
6
+ module ECCConst
7
+ Const = {
8
+ "Oakley-EC2N-3"=>0x0300,
9
+ "Oakley-EC2N-4"=>0x0301,
10
+ "SM2"=>0x0302,
11
+ "brainpoolP160r1"=>0x0303,
12
+ "brainpoolP160t1"=>0x0304,
13
+ "brainpoolP192r1"=>0x0305,
14
+ "brainpoolP192t1"=>0x0306,
15
+ "brainpoolP224r1"=>0x0307,
16
+ "brainpoolP224t1"=>0x0308,
17
+ "brainpoolP256r1"=>0x0309,
18
+ "brainpoolP256t1"=>0x030a,
19
+ "brainpoolP320r1"=>0x030b,
20
+ "brainpoolP320t1"=>0x030c,
21
+ "brainpoolP384r1"=>0x030d,
22
+ "brainpoolP384t1"=>0x030e,
23
+ "brainpoolP512r1"=>0x030f,
24
+ "brainpoolP512t1"=>0x0310,
25
+ "c2pnb163v1"=>0x0311,
26
+ "c2pnb163v2"=>0x0312,
27
+ "c2pnb163v3"=>0x0313,
28
+ "c2pnb176v1"=>0x0314,
29
+ "c2pnb208w1"=>0x0315,
30
+ "c2pnb272w1"=>0x0316,
31
+ "c2pnb304w1"=>0x0317,
32
+ "c2pnb368w1"=>0x0318,
33
+ "c2tnb191v1"=>0x0319,
34
+ "c2tnb191v2"=>0x031a,
35
+ "c2tnb191v3"=>0x031b,
36
+ "c2tnb239v1"=>0x031c,
37
+ "c2tnb239v2"=>0x031d,
38
+ "c2tnb239v3"=>0x031e,
39
+ "c2tnb359v1"=>0x031f,
40
+ "c2tnb431r1"=>0x0320,
41
+ "prime192v1"=>0x0321,
42
+ "prime192v2"=>0x0322,
43
+ "prime192v3"=>0x0323,
44
+ "prime239v1"=>0x0324,
45
+ "prime239v2"=>0x0325,
46
+ "prime239v3"=>0x0326,
47
+ "prime256v1"=>0x0327,
48
+ "secp112r1"=>0x0328,
49
+ "secp112r2"=>0x0329,
50
+ "secp128r1"=>0x032a,
51
+ "secp128r2"=>0x032b,
52
+ "secp160k1"=>0x032c,
53
+ "secp160r1"=>0x032d,
54
+ "secp160r2"=>0x032e,
55
+ "secp192k1"=>0x032f,
56
+ "secp224k1"=>0x0330,
57
+ "secp224r1"=>0x0331,
58
+ "secp256k1"=>0x0332,
59
+ "secp384r1"=>0x0333,
60
+ "secp521r1"=>0x0334,
61
+ "sect113r1"=>0x0335,
62
+ "sect113r2"=>0x0336,
63
+ "sect131r1"=>0x0337,
64
+ "sect131r2"=>0x0338,
65
+ "sect163k1"=>0x0339,
66
+ "sect163r1"=>0x033a,
67
+ "sect163r2"=>0x033b,
68
+ "sect193r1"=>0x033c,
69
+ "sect193r2"=>0x033d,
70
+ "sect233k1"=>0x033e,
71
+ "sect233r1"=>0x033f,
72
+ "sect239k1"=>0x0340,
73
+ "sect283k1"=>0x0341,
74
+ "sect283r1"=>0x0342,
75
+ "sect409k1"=>0x0343,
76
+ "sect409r1"=>0x0344,
77
+ "sect571k1"=>0x0345,
78
+ "sect571r1"=>0x0346
79
+ }
80
+ end
81
+ end
82
+ end