openssl_pkcs8_pure 0.0.0.1 → 0.0.0.2

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: 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