openssl_pkcs8_pure 0.0.0.1 → 0.0.0.2

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
  SHA1:
3
- metadata.gz: 426aed5ceace29df7aaa9d2c3d1b310aa84979b7
4
- data.tar.gz: 72f09cc19f9665dae7b6307cf75d522017728d0c
3
+ metadata.gz: ee756fa4dd8798a99cc6114a4f1420966cb4dda5
4
+ data.tar.gz: 641e466c012d803aff5d581bf855e38da7aa6fa3
5
5
  SHA512:
6
- metadata.gz: d74b3f6a992ed5c24f43c5b8206d90c108f0a9ecc4e12e112670851b1ed7d386bcf3808713c6cbc1c57b801c0e3806601add814035a3b9aac28705831cc91937
7
- data.tar.gz: b6e45f41f429425410eed5a0fb971200efb5f15d518abadb22353bee4ecb4f3509d5a7dc9e4b2cfbecf90bff67a9c8ace65c72d1d06cb35f7132d5e3e5ac4b88
6
+ metadata.gz: 78e30cf5ef0cd19418879561ad89a2d82649972a392e8261c595daf312138ec8928279cb6897e52b1033102ffead8735fe11a11e2121d7e129a848b2f9f89489
7
+ data.tar.gz: a8d66a5c5f9a583fda5da67793df692d77833044864cbba43abf90883e77f3eba16f4fe3a4f2dff29bcd983e64f7c955fcde05803274122dba780a3df1e8b61e
@@ -1,27 +1,30 @@
1
+ sudo: required
1
2
  language: ruby
3
+ dist: trusty
2
4
  rvm:
3
5
  - 1.8.7
4
6
  - ree
5
- - 1.9.2
6
7
  - 1.9.3
7
8
  - 2.0.0
8
- - 2.1.0
9
- - 2.1.7
10
- - 2.2.0
11
- - 2.2.3
9
+ - 2.1.10
10
+ - 2.2.6
11
+ - 2.3.3
12
+ - 2.4.0
12
13
  - ruby-head
13
- - jruby-18mode
14
14
  - jruby-19mode
15
15
  - jruby-20mode
16
16
  - jruby-21mode
17
+ - jruby-22mode
18
+ - jruby-23mode
17
19
  - jruby-head
18
- - rbx-2
20
+ - rubinius-3
19
21
  matrix:
20
22
  allow_failures:
21
23
  - rvm: ruby-head
22
24
  - rvm: jruby-head
23
- - rvm: jruby-18mode
24
25
  - rvm: jruby-19mode
25
26
  - rvm: jruby-20mode
26
27
  - rvm: jruby-21mode
27
- - rvm: rbx-2
28
+ - rvm: jruby-22mode
29
+ - rvm: jruby-23mode
30
+ - rvm: rubinius-3
@@ -1,4 +1,7 @@
1
1
  # ChangeLog
2
2
 
3
+ ## 0.0.0.2 (2017 Mar 3)
4
+ - Fix Ruby 2.4.
5
+
3
6
  ## 0.0.0.1 (2017 Mar 2)
4
7
  - First release.
data/Gemfile CHANGED
@@ -5,13 +5,17 @@ platforms :rbx do
5
5
  end
6
6
 
7
7
  group :development, :test do
8
- if RUBY_VERSION<'1.9'
8
+ if RUBY_VERSION<'2.0'
9
9
  gem 'mime-types', '~> 1.0'
10
10
  gem 'rest-client', '~> 1.6.0'
11
+ gem 'tins', '~> 1.6.0'
12
+ gem 'term-ansicolor', '~> 1.3.0'
11
13
  end
12
14
  gem 'bundler', '>= 1.0'
13
- gem 'rake'
15
+ gem 'rake', '~> 10.5.0' if RUBY_VERSION < '2.0'
16
+ gem 'rake' if RUBY_VERSION >= '2.0'
14
17
  gem 'rspec'
18
+ gem 'json', '~> 1.0' if RUBY_VERSION < '1.9'
15
19
  gem 'simplecov'
16
20
  gem 'coveralls', :require => false
17
21
  end
data/README.md CHANGED
@@ -7,13 +7,13 @@
7
7
 
8
8
  ## Supported Ruby versions
9
9
  * Ruby 1.8.7 or later
10
- * jruby
11
10
  * rubinius
12
- * (Possibly) ironruby / macruby / topaz etc
11
+ * jruby (RSA only)
13
12
 
14
13
  ## Caveats
15
14
  * Passphrase is not supported yet.
16
15
  * On Ruby 1.8, the output PEM's Base64 folding is different from original openssl.
16
+ * This implementation is built from my own research, so it might be unstable (of course, to avoid unstability we have rspec)
17
17
 
18
18
  ## Binary distribution
19
19
  * https://rubygems.org/gems/openssl_pkcs8_pure
@@ -23,7 +23,7 @@
23
23
 
24
24
  ## Usage
25
25
  * Please check spec/openssl_pkcs8_pure.spec as an example.
26
- * Also you can refer to ctouch/zip.rb (the first motivation is that Chrome WebStore only accepts PKCS8 key).
26
+ * Also you can refer to [ctouch/zip.rb](https://github.com/cielavenir/ctouch/blob/master/support/zip.rb) (the first motivation is that Chrome WebStore only accepts PKCS8 key).
27
27
 
28
28
  ## Contributing to openssl_pkcs8_pure
29
29
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
@@ -15,7 +15,7 @@ class OpenSSL::PKey::DSA
15
15
  def to_der_pkcs8
16
16
  #if public, just use x509 default output
17
17
  return to_der if !private?
18
- asn1=OpenSSL::ASN1.decode(to_der).to_a
18
+ asn1=OpenSSL::ASN1.decode(to_der).value
19
19
  OpenSSL::ASN1::Sequence([
20
20
  OpenSSL::ASN1::Integer(0),
21
21
  OpenSSL::ASN1::Sequence([
@@ -41,7 +41,7 @@ class OpenSSL::PKey::RSA
41
41
  return to_der if !private?
42
42
  OpenSSL::ASN1::Sequence([
43
43
  OpenSSL::ASN1::Integer(0),
44
- OpenSSL::ASN1::Sequence([OpenSSL::ASN1::ObjectId("rsaEncryption"),OpenSSL::ASN1::Null(nil)]),
44
+ OpenSSL::ASN1::Sequence([OpenSSL::ASN1::ObjectId("rsaEncryption"),OpenSSL::ASN1::Null.new(nil)]),
45
45
  OpenSSL::ASN1::OctetString(to_der)
46
46
  ]).to_der
47
47
  end
@@ -59,7 +59,7 @@ class OpenSSL::PKey::EC
59
59
  def to_der_pkcs8
60
60
  #[todo] OpenSSL::PKey::EC#public_key does not respond to to_pem
61
61
  #return to_der if !private?
62
- asn1=OpenSSL::ASN1.decode(to_der).to_a
62
+ asn1=OpenSSL::ASN1.decode(to_der).value
63
63
  #curve_name=asn1[2].value[0].value
64
64
  curve_name=group.curve_name
65
65
  asn1.delete_at(2)
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "openssl_pkcs8_pure"
5
- spec.version = "0.0.0.1"
5
+ spec.version = "0.0.0.2"
6
6
  spec.authors = ["cielavenir"]
7
7
  spec.email = ["cielartisan@gmail.com"]
8
8
  spec.description = "OpenSSL::PKey::[DSA/RSA/EC]#to_pem_pkcs8 written in Ruby"
@@ -23,20 +23,36 @@ end
23
23
  #spec_keys.txt: fasta-like editable text archive
24
24
  arc=File.open(File.expand_path(File.dirname(__FILE__)+'/spec_keys.txt')){|f|getarchive(f)}
25
25
 
26
+ DSA_jruby_msg='OpenSSL::ASN1::Integer#to_der is broken in jruby'
27
+ EC_jruby_msg='OpenSSL::PKey::EC is unstable in jruby'
28
+
26
29
  ['DSA','RSA','EC'].each{|type|
27
30
  describe "OpenSSL::PKey::"+type do
28
31
  klass=OpenSSL::PKey.const_get(type)
29
32
  it "reads PKCS1 key" do
33
+ if type=='EC'&&OpenSSL::PKey::EC.instance_method(:initialize).arity==0
34
+ pending 'OpenSSL::PKey::EC.new is unusable on this platform'
35
+ end
30
36
  klass.new(arc[type+'_PKCS1']).is_a?(klass).should be true
31
37
  end
32
38
  it "converts PKCS1 to PKCS8" do
33
39
  pending 'PEM Line fold is different on Ruby 1.8' if RUBY_VERSION<'1.9'
40
+ if defined?(RUBY_ENGINE)&&RUBY_ENGINE=='jruby'
41
+ pending DSA_jruby_msg if type=='DSA'
42
+ pending EC_jruby_msg if type=='EC'
43
+ end
44
+
34
45
  pkcs8=klass.new(arc[type+'_PKCS1']).to_pem_pkcs8
35
46
  pkcs8.should eq arc[type+'_PKCS8']
36
47
  klass.new(pkcs8).is_a?(klass).should be true
37
48
  end
38
49
  if RUBY_VERSION>='1.9'&&ENV['OPENSSL']
39
50
  it "converts PKCS1 to correct PKCS8" do
51
+ if defined?(RUBY_ENGINE)&&RUBY_ENGINE=='jruby'
52
+ pending DSA_jruby_msg if type=='DSA'
53
+ pending EC_jruby_msg if type=='EC'
54
+ end
55
+
40
56
  pkcs8=klass.new(arc[type+'_PKCS1']).to_pem_pkcs8
41
57
  pkcs8_io=IO.popen(ENV['OPENSSL']+' pkcs8 -topk8 -nocrypt','r+b'){|io|
42
58
  io.puts arc[type+'_PKCS1']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openssl_pkcs8_pure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.1
4
+ version: 0.0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - cielavenir