block64 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/block64.gemspec +2 -2
  3. data/lib/block64.rb +120 -65
  4. metadata +4 -4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
data/block64.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{block64}
8
- s.version = "0.1.3"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Martin Kozák"]
12
- s.date = %q{2011-01-13}
12
+ s.date = %q{2011-01-18}
13
13
  s.email = %q{martinkozak@martinkozak.net}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE.txt",
data/lib/block64.rb CHANGED
@@ -1,76 +1,131 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Copyright (c) 2007 Bart Teeuwisse
4
+ # Copyright (c) 2010 - 2011 Martin Kozák
5
+ #
6
+
1
7
  require 'openssl'
2
8
  require 'base64'
3
9
 
4
- include OpenSSL
5
- include PKey
10
+ module OpenSSL
11
+ module PKey
12
+
13
+ ##
14
+ # Encrypts and decrypts data of arbitrary length using RSA
15
+ # cyphers. Fixed and much faster fork of "crypto64" gem.
16
+ #
17
+
18
+ class RSA
6
19
 
7
- class RSA
20
+ ##
21
+ # Matches the OpenSSH key bit count indicator.
22
+ #
23
+
24
+ BIT_MATCHER = /(\d+) bit/
25
+
26
+ ##
27
+ # Holds size of the key.
28
+ #
29
+
30
+ @size
31
+
32
+ ##
33
+ # Holds encrypting block size.
34
+ #
35
+
36
+ @encrypt_block_size
37
+
38
+ ##
39
+ # Holds decrypting block size.
40
+ #
41
+
42
+ @decrypt_block_size
43
+
44
+ ##
45
+ # Read the length of the private key.
46
+ # @return [Integer] size (length) of the private key
47
+ #
48
+
49
+ def size
50
+ if @size.nil?
51
+ @size = self.class::BIT_MATCHER.match(self.to_text)[1].to_i
52
+ end
8
53
 
9
- BIT_MATCHER = /(\d+) bit/
10
-
11
- @size
12
- @encrypt_block_size
13
- @decrypt_block_size
14
-
15
- # Read the length of the private key.
16
- def size
17
- if @size.nil?
18
- @size = self.class::BIT_MATCHER.match(self.to_text)[1].to_i
19
- end
20
-
21
- return @size
22
- end
54
+ return @size
55
+ end
23
56
 
24
- # Calculate the block size when encrypting.
25
- def encrypt_block_size
26
- if @encrypt_block_size.nil?
27
- @encrypt_block_size = (self.size / 8) - 14
28
- end
29
-
30
- return @encrypt_block_size
31
- end
57
+ ##
58
+ # Calculate the block size when encrypting.
59
+ # @return [Integer] block size
60
+ #
61
+
62
+ def encrypt_block_size
63
+ if @encrypt_block_size.nil?
64
+ @encrypt_block_size = (self.size / 8) - 14
65
+ end
66
+
67
+ return @encrypt_block_size
68
+ end
32
69
 
33
- # Calculate the block size when decrypting.
34
- def decrypt_block_size
35
- if @decrypt_block_size.nil?
36
- @decrypt_block_size = (self.size / 8) - 1
37
- end
38
-
39
- return @decrypt_block_size
40
- end
70
+ ##
71
+ # Calculate the block size when decrypting.
72
+ # @return [Integer] block size
73
+ #
74
+
75
+ def decrypt_block_size
76
+ if @decrypt_block_size.nil?
77
+ @decrypt_block_size = (self.size / 8) - 1
78
+ end
79
+
80
+ return @decrypt_block_size
81
+ end
41
82
 
42
- # Encrypt and base64 encode data of arbitrary length.
43
- def encrypt64(str)
44
- enc = ''
45
- str = str.dup
46
- encrypt_block_size = self.encrypt_block_size
47
-
48
- while str.length > encrypt_block_size
49
- enc << self.public_encrypt(str[0..encrypt_block_size])
50
- str.replace(str[encrypt_block_size + 1..-1])
51
- end
52
-
53
- if str.length > 0
54
- enc << self.public_encrypt(str[0..encrypt_block_size])
55
- end
56
-
57
- return Base64.encode64(enc)
58
- end
83
+ ##
84
+ # Encrypt and base64 encode data of arbitrary length.
85
+ #
86
+ # @param [String] str string for encrypting
87
+ # @return [String] encrypted string
88
+ #
89
+
90
+ def encrypt64(str)
91
+ enc = ''
92
+ str = str.dup
93
+ encrypt_block_size = self.encrypt_block_size
94
+
95
+ while str.length > encrypt_block_size
96
+ enc << self.public_encrypt(str[0..encrypt_block_size])
97
+ str.replace(str[encrypt_block_size + 1..-1])
98
+ end
99
+
100
+ if str.length > 0
101
+ enc << self.public_encrypt(str[0..encrypt_block_size])
102
+ end
103
+
104
+ return Base64.encode64(enc)
105
+ end
59
106
 
60
- # Decrypt and base64 decode data of arbitrary length.
61
- def decrypt64(str)
62
- dec = ''
63
- str = Base64.decode64(str)
64
- decrypt_block_size = self.decrypt_block_size
65
-
66
- while str.length > 0
67
- dec << self.private_decrypt(str[0..decrypt_block_size])
68
- if str.length > decrypt_block_size
69
- str.replace(str[decrypt_block_size + 1..-1])
70
- end
107
+ ##
108
+ # Decrypt and base64 decode data of arbitrary length.
109
+ #
110
+ # @param [String] str string for decrypting
111
+ # @return [String] decrypted string
112
+ #
113
+
114
+ def decrypt64(str)
115
+ dec = ''
116
+ str = Base64.decode64(str)
117
+ decrypt_block_size = self.decrypt_block_size
118
+
119
+ while str.length > 0
120
+ dec << self.private_decrypt(str[0..decrypt_block_size])
121
+ if str.length > decrypt_block_size
122
+ str.replace(str[decrypt_block_size + 1..-1])
123
+ end
124
+ end
125
+
126
+ return dec
127
+ end
128
+
129
+ end
71
130
  end
72
-
73
- return dec
74
- end
75
-
76
131
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 3
9
- version: 0.1.3
8
+ - 4
9
+ version: 0.1.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - "Martin Koz\xC3\xA1k"
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-13 00:00:00 +01:00
17
+ date: 2011-01-18 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -80,7 +80,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
- hash: 1041048471335462050
83
+ hash: 3737735988129475837
84
84
  segments:
85
85
  - 0
86
86
  version: "0"