block64 0.1.3 → 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.
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"