crypt-api 0.1.1 → 0.1.4
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 +4 -4
- data/lib/crypt_api/version.rb +1 -1
- data/lib/crypt_api.rb +17 -56
- data/lib/encrypt_factory.rb +38 -0
- data/lib/generators/crypt_api/config_generator.rb +16 -0
- data/lib/generators/templates/crypt_api.rb +18 -0
- data/lib/sender.rb +9 -0
- metadata +14 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cd1cb8efe467c87db322f1381cb481bc908c56d
|
4
|
+
data.tar.gz: e041228648fc97ae97532d169268ef2d1279b928
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2febf509f1b21ce68d24cdf1a8b422aea55e78e0b1fbbfe586ab879eda488a4a71ad542964a1ab1cb70b20561fd68d29c4aa4afc3adafa92c054d097fc99d8e1
|
7
|
+
data.tar.gz: fe5effd01327770a0cfd4245388885a4c08908845e27d565ac177b103be04e76e697d5fbeb351306035ab4cfa642a9ab36b4a4a204854b98dea9c82072e85b15
|
data/lib/crypt_api/version.rb
CHANGED
data/lib/crypt_api.rb
CHANGED
@@ -1,72 +1,33 @@
|
|
1
|
-
require "crypt_api/version"
|
1
|
+
# require "crypt_api/version"
|
2
2
|
require "net/http"
|
3
3
|
require 'base64'
|
4
4
|
require 'openssl'
|
5
|
+
require 'digest/md5'
|
5
6
|
|
7
|
+
require_relative 'encrypt_factory.rb'
|
8
|
+
require_relative 'sender.rb'
|
6
9
|
|
7
|
-
module CryptApi
|
8
|
-
|
9
|
-
class Sender
|
10
|
-
|
11
|
-
def initialize(url)
|
12
|
-
@url = url
|
13
|
-
end
|
14
|
-
|
15
|
-
def post_data(data)
|
16
|
-
uri = URI(@url)
|
17
|
-
response = Net::HTTP.post_form(uri, data)
|
18
|
-
response.body
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
class EncryptFactory
|
24
|
-
|
25
|
-
def encrypt(data, key)
|
26
|
-
cipher = OpenSSL::Cipher::AES.new(128, :CBC)
|
27
|
-
cipher.encrypt
|
28
|
-
cipher.key = key
|
29
|
-
|
30
|
-
code = cipher.update(data) + cipher.final
|
31
|
-
|
32
|
-
base64_encode( code )
|
33
|
-
end
|
34
10
|
|
35
|
-
|
36
|
-
code = base64_decode( encrypted_data )
|
37
|
-
|
38
|
-
decipher = OpenSSL::Cipher::AES.new(128, :CBC)
|
39
|
-
decipher.decrypt
|
40
|
-
decipher.key = key
|
41
|
-
|
42
|
-
decipher.update(decode) + decipher.final
|
43
|
-
end
|
11
|
+
module CryptApi
|
44
12
|
|
45
|
-
|
13
|
+
class Main
|
46
14
|
|
47
|
-
|
48
|
-
|
49
|
-
end
|
15
|
+
include EncryptFactory
|
16
|
+
include Sender
|
50
17
|
|
51
|
-
def
|
52
|
-
|
18
|
+
def self.config
|
19
|
+
#TODO =>
|
20
|
+
# config = Configuration.new
|
21
|
+
# yield(config)
|
53
22
|
end
|
54
23
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
class Main
|
60
|
-
|
61
|
-
def self.send_encrypted_request(url ,data, secret_key)
|
62
|
-
encryptor = EncryptFactory.new
|
63
|
-
encrypted_data = encryptor.encrypt(data.to_s, secret_key)
|
64
|
-
Sender.new(url).post_data(data: encrypted_data)
|
24
|
+
def self.send_encrypted_request(data)
|
25
|
+
encrypted_data = encrypt_data(data.to_s, SECRET_KEY)
|
26
|
+
post_data({data: encrypted_data}, URL)
|
65
27
|
end
|
66
28
|
|
67
|
-
def self.decrypt_response(encrypted_response
|
68
|
-
|
69
|
-
decryptor.decrypt(encrypted_data, secret_key)
|
29
|
+
def self.decrypt_response(encrypted_response)
|
30
|
+
decrypt_data(encrypted_data, SECRET_KEY)
|
70
31
|
end
|
71
32
|
|
72
33
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module EncryptFactory
|
2
|
+
|
3
|
+
def encrypt_data(data, key)
|
4
|
+
cipher = OpenSSL::Cipher::AES.new(128, :CBC)
|
5
|
+
cipher.encrypt
|
6
|
+
cipher.key = key
|
7
|
+
|
8
|
+
code = cipher.update(data) + cipher.final
|
9
|
+
|
10
|
+
base64_encode( code )
|
11
|
+
end
|
12
|
+
|
13
|
+
def decrypt_data( encrypted_data, key )
|
14
|
+
code = base64_decode( encrypted_data )
|
15
|
+
|
16
|
+
decipher = OpenSSL::Cipher::AES.new(128, :CBC)
|
17
|
+
decipher.decrypt
|
18
|
+
decipher.key = key
|
19
|
+
|
20
|
+
decipher.update(decode) + decipher.final
|
21
|
+
end
|
22
|
+
|
23
|
+
def make_signature( data, token)
|
24
|
+
Digest::MD5.hexdigest( data.values.map(&:to_s).sort.inject(:+) + token )
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def base64_encode(code)
|
30
|
+
Base64.encode64(code)
|
31
|
+
end
|
32
|
+
|
33
|
+
def base64_decode(encrypted_data)
|
34
|
+
Base64.decode64(encrypted_data)
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module CryptApi
|
2
|
+
module Generators
|
3
|
+
class ConfigGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path("../templates", __FILE__)
|
5
|
+
|
6
|
+
desc "Creates a CryptApi initializer"
|
7
|
+
|
8
|
+
class_option :orm
|
9
|
+
|
10
|
+
def copy_initializer
|
11
|
+
template "crypt_api.rb", "config/initializers/crypt_api.rb"
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
CryptApi.setup do |config|
|
2
|
+
|
3
|
+
# secret_key for encrypting data
|
4
|
+
config.secret_key = "YOUR_SECRET_KEY"
|
5
|
+
|
6
|
+
# algorithm for encrypting data
|
7
|
+
config.encrypt_algorithm = "AES-256-CBC"
|
8
|
+
|
9
|
+
# if you need signature for each request
|
10
|
+
config.make_signature = false
|
11
|
+
|
12
|
+
# if config.make_signature = true
|
13
|
+
# you need uncomment next line
|
14
|
+
# config.signature_token = "YOUR_SIGNATURE_TOKEN"
|
15
|
+
|
16
|
+
config.url = "http://your_url_here"
|
17
|
+
|
18
|
+
end
|
data/lib/sender.rb
ADDED
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crypt-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.7'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
description: The gem sending an encrypted request to the specified address and decrypting
|
@@ -46,7 +46,7 @@ executables: []
|
|
46
46
|
extensions: []
|
47
47
|
extra_rdoc_files: []
|
48
48
|
files:
|
49
|
-
-
|
49
|
+
- .gitignore
|
50
50
|
- Gemfile
|
51
51
|
- LICENSE.txt
|
52
52
|
- README.md
|
@@ -54,6 +54,10 @@ files:
|
|
54
54
|
- crypt_api.gemspec
|
55
55
|
- lib/crypt_api.rb
|
56
56
|
- lib/crypt_api/version.rb
|
57
|
+
- lib/encrypt_factory.rb
|
58
|
+
- lib/generators/crypt_api/config_generator.rb
|
59
|
+
- lib/generators/templates/crypt_api.rb
|
60
|
+
- lib/sender.rb
|
57
61
|
homepage: ''
|
58
62
|
licenses:
|
59
63
|
- MIT
|
@@ -64,17 +68,17 @@ require_paths:
|
|
64
68
|
- lib
|
65
69
|
required_ruby_version: !ruby/object:Gem::Requirement
|
66
70
|
requirements:
|
67
|
-
- -
|
71
|
+
- - '>='
|
68
72
|
- !ruby/object:Gem::Version
|
69
73
|
version: '0'
|
70
74
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
75
|
requirements:
|
72
|
-
- -
|
76
|
+
- - '>='
|
73
77
|
- !ruby/object:Gem::Version
|
74
78
|
version: '0'
|
75
79
|
requirements: []
|
76
80
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.4.
|
81
|
+
rubygems_version: 2.4.2
|
78
82
|
signing_key:
|
79
83
|
specification_version: 4
|
80
84
|
summary: Api
|