Class: Sentry::AsymmetricSentry
- Inherits:
-
Object
- Object
- Sentry::AsymmetricSentry
- Defined in:
- lib/sentry/asymmetric_sentry.rb
Constant Summary collapse
- @@default_private_key_file =
nil
- @@default_public_key_file =
nil
- @@default_symmetric_algorithm =
nil
Instance Attribute Summary collapse
-
#private_key_file ⇒ Object
Returns the value of attribute private_key_file.
-
#public_key_file ⇒ Object
Returns the value of attribute public_key_file.
-
#symmetric_algorithm ⇒ Object
Returns the value of attribute symmetric_algorithm.
Class Method Summary collapse
- .decrypt(data, key = nil) ⇒ Object
- .decrypt_from_base64(data, key = nil) ⇒ Object
-
.default_private_key_file ⇒ Object
cattr_accessor would be lovely.
- .default_private_key_file=(value) ⇒ Object
- .default_public_key_file ⇒ Object
- .default_public_key_file=(value) ⇒ Object
- .default_symmetric_algorithm ⇒ Object
- .default_symmetric_algorithm=(value) ⇒ Object
- .encrypt(data) ⇒ Object
- .encrypt_to_base64(data) ⇒ Object
-
.save_random_rsa_key(private_key_file, public_key_file, options = {}) ⇒ Object
-
:key
- secret password *:symmetric_algorithm
- symmetrical algorithm to use.
-
Instance Method Summary collapse
- #decrypt(data, key = nil) ⇒ Object
- #decrypt_from_base64(data, key = nil) ⇒ Object
- #encrypt(data) ⇒ Object
- #encrypt_to_base64(data) ⇒ Object
-
#initialize(options = {}) ⇒ AsymmetricSentry
constructor
available options: *
:private_key_file
- encrypted private key file *:public_key_file
- public key file *:symmetric_algorithm
- algorithm to use for SymmetricSentry. - #private? ⇒ Boolean
- #public? ⇒ Boolean
Constructor Details
#initialize(options = {}) ⇒ AsymmetricSentry
available options:
-
:private_key_file
- encrypted private key file -
:public_key_file
- public key file -
:symmetric_algorithm
- algorithm to use for SymmetricSentry
14 15 16 17 18 19 |
# File 'lib/sentry/asymmetric_sentry.rb', line 14 def initialize( = {}) @public_key = @private_key = nil private_key_file = [:private_key_file] public_key_file = [:public_key_file] || @@default_public_key_file @symmetric_algorithm = [:symmetric_algorithm] || @@default_symmetric_algorithm end |
Instance Attribute Details
#private_key_file ⇒ Object
Returns the value of attribute private_key_file.
3 4 5 |
# File 'lib/sentry/asymmetric_sentry.rb', line 3 def private_key_file @private_key_file end |
#public_key_file ⇒ Object
Returns the value of attribute public_key_file.
4 5 6 |
# File 'lib/sentry/asymmetric_sentry.rb', line 4 def public_key_file @public_key_file end |
#symmetric_algorithm ⇒ Object
Returns the value of attribute symmetric_algorithm.
5 6 7 |
# File 'lib/sentry/asymmetric_sentry.rb', line 5 def symmetric_algorithm @symmetric_algorithm end |
Class Method Details
.decrypt(data, key = nil) ⇒ Object
78 79 80 |
# File 'lib/sentry/asymmetric_sentry.rb', line 78 def decrypt(data, key = nil) self.new.decrypt(data, key) end |
.decrypt_from_base64(data, key = nil) ⇒ Object
82 83 84 |
# File 'lib/sentry/asymmetric_sentry.rb', line 82 def decrypt_from_base64(data, key = nil) self.new.decrypt_from_base64(data, key) end |
.default_private_key_file ⇒ Object
cattr_accessor would be lovely
87 88 89 |
# File 'lib/sentry/asymmetric_sentry.rb', line 87 def default_private_key_file @@default_private_key_file end |
.default_private_key_file=(value) ⇒ Object
91 92 93 |
# File 'lib/sentry/asymmetric_sentry.rb', line 91 def default_private_key_file=(value) @@default_private_key_file = value end |
.default_public_key_file ⇒ Object
95 96 97 |
# File 'lib/sentry/asymmetric_sentry.rb', line 95 def default_public_key_file @@default_public_key_file end |
.default_public_key_file=(value) ⇒ Object
99 100 101 |
# File 'lib/sentry/asymmetric_sentry.rb', line 99 def default_public_key_file=(value) @@default_public_key_file = value end |
.default_symmetric_algorithm ⇒ Object
103 104 105 |
# File 'lib/sentry/asymmetric_sentry.rb', line 103 def default_symmetric_algorithm @@default_symmetric_algorithm end |
.default_symmetric_algorithm=(value) ⇒ Object
107 108 109 |
# File 'lib/sentry/asymmetric_sentry.rb', line 107 def default_symmetric_algorithm=(value) @@default_symmetric_algorithm = value end |
.encrypt(data) ⇒ Object
70 71 72 |
# File 'lib/sentry/asymmetric_sentry.rb', line 70 def encrypt(data) self.new.encrypt(data) end |
.encrypt_to_base64(data) ⇒ Object
74 75 76 |
# File 'lib/sentry/asymmetric_sentry.rb', line 74 def encrypt_to_base64(data) self.new.encrypt_to_base64(data) end |
.save_random_rsa_key(private_key_file, public_key_file, options = {}) ⇒ Object
-
:key
- secret password -
:symmetric_algorithm
- symmetrical algorithm to use
60 61 62 63 64 65 66 67 68 |
# File 'lib/sentry/asymmetric_sentry.rb', line 60 def save_random_rsa_key(private_key_file, public_key_file, = {}) rsa = OpenSSL::PKey::RSA.new(512) public_key = rsa.public_key private_key = [:key] ? SymmetricSentry.new(:algorithm => [:symmetric_algorithm]).encrypt_to_base64(rsa.to_s, [:key]) : rsa.to_s File.open(public_key_file, 'w') { |f| f.write(public_key) } File.open(private_key_file, 'w') { |f| f.write(private_key) } end |
Instance Method Details
#decrypt(data, key = nil) ⇒ Object
30 31 32 33 |
# File 'lib/sentry/asymmetric_sentry.rb', line 30 def decrypt(data, key = nil) raise NoPrivateKeyError unless private? private_rsa(key).private_decrypt(data) end |
#decrypt_from_base64(data, key = nil) ⇒ Object
35 36 37 |
# File 'lib/sentry/asymmetric_sentry.rb', line 35 def decrypt_from_base64(data, key = nil) decrypt(Base64.decode64(data), key) end |
#encrypt(data) ⇒ Object
21 22 23 24 |
# File 'lib/sentry/asymmetric_sentry.rb', line 21 def encrypt(data) raise NoPublicKeyError unless public? public_rsa.public_encrypt(data) end |
#encrypt_to_base64(data) ⇒ Object
26 27 28 |
# File 'lib/sentry/asymmetric_sentry.rb', line 26 def encrypt_to_base64(data) Base64.encode64(encrypt(data)) end |
#private? ⇒ Boolean
52 53 54 55 |
# File 'lib/sentry/asymmetric_sentry.rb', line 52 def private? return true unless @private_key.nil? load_private_key and return @private_key end |
#public? ⇒ Boolean
47 48 49 50 |
# File 'lib/sentry/asymmetric_sentry.rb', line 47 def public? return true unless @public_key.nil? load_public_key and return @public_key end |