cryptosystem 0.0.1 → 1.1.0

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
- SHA1:
3
- metadata.gz: 85f438691a896bf64fe02231dd5af6186823a5b6
4
- data.tar.gz: 3699e93c8c639527d01d76316d09ddd36a792cde
2
+ SHA256:
3
+ metadata.gz: 60a92f28441852932960ba191b63bcf159e1214e1fc94ce4c5486db82190783a
4
+ data.tar.gz: a554e013a7c2348ac901e16c5a9aaf1fa5d432d59075686d03df031e01df2374
5
5
  SHA512:
6
- metadata.gz: 66f44adf68b69c9a90d4dac52aba7bed93fb7454ca772f8a15a8ffa8157fbf38bdc5b400b548f4515dea5f2de3c4740cd8070565cfdb21e7f84701ed88e9eb48
7
- data.tar.gz: d504380686a8ebadd9761e2e93ea9464b980641e4aafa120c12531b270ccc78b645d8e1ff093a2c4e0da4df3d3161c2e05a1bfbee3ad510b363fec1a12f24547
6
+ metadata.gz: 85170c98dc9f21f081bed153b0fa01dd8e478270cd444ffbfbd05f18e46cb940475c1a1a920d03e5e40f474424aeabf676bad157bc06b26cc7ef53cab9c2e813
7
+ data.tar.gz: d0be23b0fb2ab51fe609cd3fffc18a29c362dd4298653db75afdbe2566e84a354bb65b9334d403483a304774565107ff1d3fe98894a0d3ec9ab52a00fe0bb259
@@ -10,10 +10,10 @@ module Cryptosystem
10
10
  attr_reader :private_key_path
11
11
  attr_reader :public_key_path
12
12
 
13
- def initialize
14
- @password = Cryptosystem::RSA.password
15
- @private_key_path = expand_path(Cryptosystem::RSA.private_key_path)
16
- @public_key_path = expand_path(Cryptosystem::RSA.public_key_path)
13
+ def initialize(config = {})
14
+ @password = config[:password] || Cryptosystem::RSA.password
15
+ @private_key_path = expand_path(config[:private_key_path] || Cryptosystem::RSA.private_key_path)
16
+ @public_key_path = expand_path(config[:public_key_path] || Cryptosystem::RSA.public_key_path)
17
17
  rescue => error
18
18
  raise ConfigurationError, error.message
19
19
  end
@@ -1,3 +1,3 @@
1
1
  module Cryptosystem
2
- VERSION = '0.0.1'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,39 +1,54 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cryptosystem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Wetzel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-18 00:00:00.000000000 Z
12
- dependencies: []
13
- description: |2
14
- Cryptosystem is a Ruby library facilitating simple encryption and
15
- decryption with asymmetric cryptography (or public-key cryptography).
11
+ date: 2022-05-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description:
16
42
  email:
17
43
  executables: []
18
44
  extensions: []
19
45
  extra_rdoc_files: []
20
46
  files:
21
- - ".gitignore"
22
- - ".travis.yml"
23
- - CHANGELOG.md
24
- - LICENSE
25
- - README.md
26
- - Rakefile
27
- - cryptosystem.gemspec
28
47
  - lib/cryptosystem.rb
29
48
  - lib/cryptosystem/base.rb
30
49
  - lib/cryptosystem/exceptions.rb
31
50
  - lib/cryptosystem/rsa.rb
32
51
  - lib/cryptosystem/version.rb
33
- - test/cryptosystem/rsa_test.rb
34
- - test/keys/rsa.key
35
- - test/keys/rsa.pub
36
- - test/test_helper.rb
37
52
  homepage:
38
53
  licenses:
39
54
  - MIT
@@ -44,7 +59,7 @@ require_paths:
44
59
  - lib
45
60
  required_ruby_version: !ruby/object:Gem::Requirement
46
61
  requirements:
47
- - - "~>"
62
+ - - ">="
48
63
  - !ruby/object:Gem::Version
49
64
  version: '2'
50
65
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -53,9 +68,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
68
  - !ruby/object:Gem::Version
54
69
  version: '0'
55
70
  requirements: []
56
- rubyforge_project:
57
- rubygems_version: 2.5.1
71
+ rubygems_version: 3.0.3
58
72
  signing_key:
59
73
  specification_version: 4
60
- summary: Simple asymmetric (public-key) encryption.
74
+ summary: Simple encryption and decryption with asymmetric (or public-key) cryptography.
61
75
  test_files: []
data/.gitignore DELETED
@@ -1 +0,0 @@
1
- .ruby-version
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.0
4
- - 2.1
5
- - 2.2
6
- - 2.3.1
data/CHANGELOG.md DELETED
@@ -1,3 +0,0 @@
1
- #### 0.0.1
2
- * Encrypting a `nil` value returns `nil` instead of `EncryptError`.
3
- * Decrypting a `nil` value returns `nil` instead of `DecryptError`.
data/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2016 Josh Wetzel
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
data/README.md DELETED
@@ -1,56 +0,0 @@
1
- [![Gem Version](https://badge.fury.io/rb/cryptosystem.svg)](https://badge.fury.io/rb/cryptosystem)
2
- [![Build Status](https://travis-ci.org/jdubswe/cryptosystem.svg?branch=master)](https://travis-ci.org/jdubswe/cryptosystem)
3
-
4
- # Cryptosystem
5
- Cryptosystem is a Ruby library facilitating simple encryption and decryption with asymmetric cryptography (or public-key
6
- cryptography). At this time, only RSA is supported.
7
-
8
- ## Installation
9
- In your Gemfile, include the `cryptosystem` gem and then `bundle install`.
10
-
11
- ```ruby
12
- gem 'cryptosystem'
13
- ```
14
-
15
- ## Getting Started
16
- In order to encrypt and decrypt, a public and private key must be generated.
17
-
18
- ```bash
19
- $ openssl genrsa -out private.key
20
- $ openssl rsa -in private.key -pubout > public.pub
21
- ```
22
-
23
- ## Configuration
24
- Cryptosystem must know the path and password to your private key as well as the path to your public key.
25
-
26
- ```ruby
27
- # config/initializers/cryptosystem.rb
28
-
29
- Cryptosystem::RSA.configure do |config|
30
- config.password = ENV['secret-password']
31
- config.private_key_path = 'path/to/private.key'
32
- config.public_key_path = 'path/to/public.pub'
33
- end
34
- ```
35
-
36
- ## Encrypting
37
- After generating a key pair and properly configuring Cryptosystem, encryption is straightforward.
38
-
39
- ```ruby
40
- rsa = Cryptosystem::RSA.new
41
- rsa.encrypt('secret') # => "JxpuhTpEqRtMLmaSfaq/X6XONkBnMe..."
42
- ```
43
-
44
- The encrypted value is Base64 encoded, making it suitable for database storage.
45
-
46
- ## Decrypting
47
- Decrypting is as simple as passing in an encrypted, Base64 encoded value.
48
-
49
- ```ruby
50
- rsa = Cryptosystem::RSA.new
51
- encrypted_value = rsa.encrypt('secret') # => "Y8DWJc2/+7TIxdLEolV99XI2sclHuK..."
52
- rsa.decrypt(encrypted_value) # => "secret"
53
- ```
54
-
55
- ## Acknowledgments
56
- Special thanks to [@jedspurg](https://github.com/jedspurg) for the inspiration for this project.
data/Rakefile DELETED
@@ -1,8 +0,0 @@
1
- require 'rake/testtask'
2
-
3
- Rake::TestTask.new do |t|
4
- t.libs.push 'test'
5
- t.pattern = 'test/**/*_test.rb'
6
- end
7
-
8
- task default: :test
data/cryptosystem.gemspec DELETED
@@ -1,18 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'cryptosystem/version'
5
-
6
- Gem::Specification.new do |s|
7
- s.name = 'cryptosystem'
8
- s.version = Cryptosystem::VERSION
9
- s.files = `git ls-files`.split($/)
10
- s.summary = 'Simple asymmetric (public-key) encryption.'
11
- s.description = <<-DESC
12
- Cryptosystem is a Ruby library facilitating simple encryption and
13
- decryption with asymmetric cryptography (or public-key cryptography).
14
- DESC
15
- s.author = 'Josh Wetzel'
16
- s.license = 'MIT'
17
- s.required_ruby_version = '~> 2'
18
- end
@@ -1,39 +0,0 @@
1
- require 'test_helper'
2
-
3
- class RSATest < Minitest::Test
4
- def setup
5
- @rsa = Cryptosystem::RSA.new
6
- end
7
-
8
- def test_initialize
9
- assert_equal Cryptosystem::RSA.password, @rsa.password
10
- assert_equal File.expand_path(@rsa.private_key_path), @rsa.private_key_path
11
- assert_equal File.expand_path(@rsa.public_key_path), @rsa.public_key_path
12
- end
13
-
14
- def test_value_is_encrypted
15
- encrypted_value = @rsa.encrypt('test')
16
- refute_equal 'test', encrypted_value
17
- end
18
-
19
- def test_value_is_decrypted
20
- encrypted_value = @rsa.encrypt('test')
21
- assert_equal 'test', @rsa.decrypt(encrypted_value)
22
- end
23
-
24
- def test_encrypted_value_is_base64_encoded
25
- assert Base64.strict_decode64(@rsa.encrypt('test'))
26
- end
27
-
28
- def test_decrypted_value_is_base64_decoded
29
- assert Base64.strict_encode64(@rsa.decrypt(@rsa.encrypt('test')))
30
- end
31
-
32
- def test_encrypting_nil_value_returns_nil
33
- assert_nil @rsa.encrypt(nil)
34
- end
35
-
36
- def test_decrypting_nil_value_returns_nil
37
- assert_nil @rsa.decrypt(nil)
38
- end
39
- end
data/test/keys/rsa.key DELETED
@@ -1,54 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- Proc-Type: 4,ENCRYPTED
3
- DEK-Info: AES-256-CBC,2C31524529382C7E48A2056847C3497F
4
-
5
- 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
- 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
- GojwKruvokspgyBdNvsCopLXSPDtfyKUkz2gJTbZ9fZ4TZyaPOeA3v+m6m9r8JHS
8
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Lahi517Y9OjZjmZc//+VjvaKwtbBquotzGoRhX/kzBaxZypBcoSGOHRXfhWDgNCD
30
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
41
- o2F6utlwO72IaLwjPFGcU3GQeHcAZ20qwtqtCJngKrBHzlvdvAj3fiLAOu8ZC0vY
42
- iMQ8/0iBMqQsBNW+p9I53r2b2ItclkLSo3AHY5UQYnmnVJnBRK3eTiALljp3fGcm
43
- z+Tf0SLfeDz20OkspSyyoCZf2MpPnVldcjX7sTflnY9hHzqTIByKfCAl2z9lmM70
44
- AHxKqppRM7U1etmWtxd4tHjYdFBHtuR95f5fEgL5ZC49G1jQ38PJULrQ0yVToWAp
45
- G3wvaQsAjhkZWHsLKX7CBeLN9+aFioJg6x6Eek7aLc9tijwlyb44yXeeLEWCF8aN
46
- QtUMW8OQLCU2GrfyjMr8qm9OoW8MBI9+H8a9bE2ar6A5wdqQ2955/WrnKrvMQWB2
47
- WMv92q20w6NUPZlOTozrfANE0CHSMo6eHm9cCanUg3n3MirEv9L964Uo3MapDwDg
48
- KgXUTddFWo1Sjv/KgaTP8tzPXJpg3GSgGGzBe4oV616+1xrgEQF4NL0VSyGY2q6W
49
- KdlOw7l/p0Oe8Ea7kNzYADkcdo1XpbaNCFxy7yWAZJ4T5dOEkqfzGmquKQzhDC7u
50
- ugGrVUS7Pu2bARQmKIZ5yCnhctM2Y+oeh4jt1W4XOP3CDtrNKO2O41IRRkwlxOd9
51
- OGktNGt5DImcVuUliUZF6/8hrePUVAZIgnQXce5Byma3qT+rwe/xUYRTcCA03pOh
52
- IqLW7NHpJbgoKzyczJmiVhT1T+Z0Yd4QbLueh2smvZJfuJESVnJhnzwh+zUovkf4
53
- p3A7jv+NuleAPV1TOuEXMawgZY2gVTl7X8Tb4Ja97KsPmv7ltFw8GCygWGeoMkbs
54
- -----END RSA PRIVATE KEY-----
data/test/keys/rsa.pub DELETED
@@ -1,14 +0,0 @@
1
- -----BEGIN PUBLIC KEY-----
2
- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvIm5LAFUQaVsvf8+LtQ2
3
- 3eajUhyM+kP0CMwMc/S7epWKD2JqATSaJUrluvrBP32NxVEyB1d/3nbS9Hq245Qv
4
- wtMaTqkxUMpT1TMXZpXOacNeSvFobgAbXSSH4lMuaemVxqgAPrNYF3AP/OVFLJ3X
5
- zjdLvz63oYdjAwwy7GwBlbxpCL4081p7f1/Ex+RpAHud9ZXAdXbZSam/zk1A2VAC
6
- /ndeC53UF5y//sSeheFByCwOZUeUXrGEFur9hm3oWwBRdY3sCV9pXe6uxBSyca54
7
- hUWsO3Ma2ooEvqI2TvB+k4KYJyJS5yhd9s31bTkhznWovzgQONIXxQNr62b2V2yL
8
- N/XOtQWYYs3zrDsITdnAIExKq9fzUEP8848+PYzDSaAuvUs2bb592gqOnukzCnyz
9
- OovgEbb7Im6cem29x65ym+K0iRU9m4CYCUV4wiaeHKcb6QkuBetGAR0O+dXF25ku
10
- T00M0Xta32ss5cYkRWVy44YiQVf4uuDqhrwgoE4gRsNQrvxcW9F6umhoG+yLQxLL
11
- lKT1ZavWUO6fW9unKXRKwrrQSf26cAkziLzuzkgeaZf7k8GOJC/bv5XQZvh05AoK
12
- C+EiisjnJqPhTGJCmh1ej60Ca7zMnlyojV8bmVagBGo3U1cVHQPQE6nPjjK46OMd
13
- KANRPBzvPT+ZZQmzQereaksCAwEAAQ==
14
- -----END PUBLIC KEY-----
data/test/test_helper.rb DELETED
@@ -1,12 +0,0 @@
1
- require 'cryptosystem'
2
- require 'minitest/autorun'
3
-
4
- if !defined?(Minitest::Test)
5
- Minitest::Test = MiniTest::Unit::TestCase
6
- end
7
-
8
- Cryptosystem::RSA.configure do |config|
9
- config.password = 'test'
10
- config.private_key_path = 'test/keys/rsa.key'
11
- config.public_key_path = 'test/keys/rsa.pub'
12
- end