mack-encryption 0.7.0
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.
- data/README +3 -0
- data/doc/classes/Kernel.html +174 -0
- data/doc/classes/Mack.html +109 -0
- data/doc/classes/Mack/Utils/Crypt/DefaultWorker.html +212 -0
- data/doc/classes/Mack/Utils/Crypt/Keeper.html +221 -0
- data/doc/classes/String.html +190 -0
- data/doc/created.rid +1 -0
- data/doc/files/README.html +111 -0
- data/doc/files/lib/mack-encryption/default_worker_rb.html +101 -0
- data/doc/files/lib/mack-encryption/keeper_rb.html +101 -0
- data/doc/files/lib/mack-encryption/kernel_rb.html +101 -0
- data/doc/files/lib/mack-encryption/string_rb.html +101 -0
- data/doc/files/lib/mack-encryption_rb.html +109 -0
- data/doc/fr_class_index.html +31 -0
- data/doc/fr_file_index.html +32 -0
- data/doc/fr_method_index.html +35 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/mack-encryption.rb +8 -0
- data/lib/mack-encryption/default_worker.rb +28 -0
- data/lib/mack-encryption/keeper.rb +46 -0
- data/lib/mack-encryption/kernel.rb +15 -0
- data/lib/mack-encryption/string.rb +21 -0
- metadata +85 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
3
|
+
<!DOCTYPE html
|
4
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
5
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
6
|
+
|
7
|
+
<!--
|
8
|
+
|
9
|
+
Classes
|
10
|
+
|
11
|
+
-->
|
12
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
13
|
+
<head>
|
14
|
+
<title>Classes</title>
|
15
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
16
|
+
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
17
|
+
<base target="docwin" />
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<div id="index">
|
21
|
+
<h1 class="section-bar">Classes</h1>
|
22
|
+
<div id="index-entries">
|
23
|
+
<a href="classes/Kernel.html">Kernel</a><br />
|
24
|
+
<a href="classes/Mack.html">Mack</a><br />
|
25
|
+
<a href="classes/Mack/Utils/Crypt/DefaultWorker.html">Mack::Utils::Crypt::DefaultWorker</a><br />
|
26
|
+
<a href="classes/Mack/Utils/Crypt/Keeper.html">Mack::Utils::Crypt::Keeper</a><br />
|
27
|
+
<a href="classes/String.html">String</a><br />
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</body>
|
31
|
+
</html>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
3
|
+
<!DOCTYPE html
|
4
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
5
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
6
|
+
|
7
|
+
<!--
|
8
|
+
|
9
|
+
Files
|
10
|
+
|
11
|
+
-->
|
12
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
13
|
+
<head>
|
14
|
+
<title>Files</title>
|
15
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
16
|
+
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
17
|
+
<base target="docwin" />
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<div id="index">
|
21
|
+
<h1 class="section-bar">Files</h1>
|
22
|
+
<div id="index-entries">
|
23
|
+
<a href="files/README.html">README</a><br />
|
24
|
+
<a href="files/lib/mack-encryption_rb.html">lib/mack-encryption.rb</a><br />
|
25
|
+
<a href="files/lib/mack-encryption/default_worker_rb.html">lib/mack-encryption/default_worker.rb</a><br />
|
26
|
+
<a href="files/lib/mack-encryption/keeper_rb.html">lib/mack-encryption/keeper.rb</a><br />
|
27
|
+
<a href="files/lib/mack-encryption/kernel_rb.html">lib/mack-encryption/kernel.rb</a><br />
|
28
|
+
<a href="files/lib/mack-encryption/string_rb.html">lib/mack-encryption/string.rb</a><br />
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</body>
|
32
|
+
</html>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
3
|
+
<!DOCTYPE html
|
4
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
5
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
6
|
+
|
7
|
+
<!--
|
8
|
+
|
9
|
+
Methods
|
10
|
+
|
11
|
+
-->
|
12
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
13
|
+
<head>
|
14
|
+
<title>Methods</title>
|
15
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
16
|
+
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
17
|
+
<base target="docwin" />
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<div id="index">
|
21
|
+
<h1 class="section-bar">Methods</h1>
|
22
|
+
<div id="index-entries">
|
23
|
+
<a href="classes/Kernel.html#M000009">_decrypt (Kernel)</a><br />
|
24
|
+
<a href="classes/Kernel.html#M000008">_encrypt (Kernel)</a><br />
|
25
|
+
<a href="classes/String.html#M000002">decrypt (String)</a><br />
|
26
|
+
<a href="classes/Mack/Utils/Crypt/DefaultWorker.html#M000007">decrypt (Mack::Utils::Crypt::DefaultWorker)</a><br />
|
27
|
+
<a href="classes/Mack/Utils/Crypt/DefaultWorker.html#M000006">encrypt (Mack::Utils::Crypt::DefaultWorker)</a><br />
|
28
|
+
<a href="classes/String.html#M000001">encrypt (String)</a><br />
|
29
|
+
<a href="classes/Mack/Utils/Crypt/DefaultWorker.html#M000005">new (Mack::Utils::Crypt::DefaultWorker)</a><br />
|
30
|
+
<a href="classes/Mack/Utils/Crypt/Keeper.html#M000003">new (Mack::Utils::Crypt::Keeper)</a><br />
|
31
|
+
<a href="classes/Mack/Utils/Crypt/Keeper.html#M000004">worker (Mack::Utils::Crypt::Keeper)</a><br />
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</body>
|
35
|
+
</html>
|
data/doc/index.html
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
5
|
+
|
6
|
+
<!--
|
7
|
+
|
8
|
+
mack-encryption
|
9
|
+
|
10
|
+
-->
|
11
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
12
|
+
<head>
|
13
|
+
<title>mack-encryption</title>
|
14
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
15
|
+
</head>
|
16
|
+
<frameset rows="20%, 80%">
|
17
|
+
<frameset cols="25%,35%,45%">
|
18
|
+
<frame src="fr_file_index.html" title="Files" name="Files" />
|
19
|
+
<frame src="fr_class_index.html" name="Classes" />
|
20
|
+
<frame src="fr_method_index.html" name="Methods" />
|
21
|
+
</frameset>
|
22
|
+
<frame src="files/README.html" name="docwin" />
|
23
|
+
</frameset>
|
24
|
+
</html>
|
data/doc/rdoc-style.css
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
|
2
|
+
body {
|
3
|
+
font-family: Verdana,Arial,Helvetica,sans-serif;
|
4
|
+
font-size: 90%;
|
5
|
+
margin: 0;
|
6
|
+
margin-left: 40px;
|
7
|
+
padding: 0;
|
8
|
+
background: white;
|
9
|
+
}
|
10
|
+
|
11
|
+
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
12
|
+
h1 { font-size: 150%; }
|
13
|
+
h2,h3,h4 { margin-top: 1em; }
|
14
|
+
|
15
|
+
a { background: #eef; color: #039; text-decoration: none; }
|
16
|
+
a:hover { background: #039; color: #eef; }
|
17
|
+
|
18
|
+
/* Override the base stylesheet's Anchor inside a table cell */
|
19
|
+
td > a {
|
20
|
+
background: transparent;
|
21
|
+
color: #039;
|
22
|
+
text-decoration: none;
|
23
|
+
}
|
24
|
+
|
25
|
+
/* and inside a section title */
|
26
|
+
.section-title > a {
|
27
|
+
background: transparent;
|
28
|
+
color: #eee;
|
29
|
+
text-decoration: none;
|
30
|
+
}
|
31
|
+
|
32
|
+
/* === Structural elements =================================== */
|
33
|
+
|
34
|
+
div#index {
|
35
|
+
margin: 0;
|
36
|
+
margin-left: -40px;
|
37
|
+
padding: 0;
|
38
|
+
font-size: 90%;
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
div#index a {
|
43
|
+
margin-left: 0.7em;
|
44
|
+
}
|
45
|
+
|
46
|
+
div#index .section-bar {
|
47
|
+
margin-left: 0px;
|
48
|
+
padding-left: 0.7em;
|
49
|
+
background: #ccc;
|
50
|
+
font-size: small;
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
div#classHeader, div#fileHeader {
|
55
|
+
width: auto;
|
56
|
+
color: white;
|
57
|
+
padding: 0.5em 1.5em 0.5em 1.5em;
|
58
|
+
margin: 0;
|
59
|
+
margin-left: -40px;
|
60
|
+
border-bottom: 3px solid #006;
|
61
|
+
}
|
62
|
+
|
63
|
+
div#classHeader a, div#fileHeader a {
|
64
|
+
background: inherit;
|
65
|
+
color: white;
|
66
|
+
}
|
67
|
+
|
68
|
+
div#classHeader td, div#fileHeader td {
|
69
|
+
background: inherit;
|
70
|
+
color: white;
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
div#fileHeader {
|
75
|
+
background: #057;
|
76
|
+
}
|
77
|
+
|
78
|
+
div#classHeader {
|
79
|
+
background: #048;
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
.class-name-in-header {
|
84
|
+
font-size: 180%;
|
85
|
+
font-weight: bold;
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
div#bodyContent {
|
90
|
+
padding: 0 1.5em 0 1.5em;
|
91
|
+
}
|
92
|
+
|
93
|
+
div#description {
|
94
|
+
padding: 0.5em 1.5em;
|
95
|
+
background: #efefef;
|
96
|
+
border: 1px dotted #999;
|
97
|
+
}
|
98
|
+
|
99
|
+
div#description h1,h2,h3,h4,h5,h6 {
|
100
|
+
color: #125;;
|
101
|
+
background: transparent;
|
102
|
+
}
|
103
|
+
|
104
|
+
div#validator-badges {
|
105
|
+
text-align: center;
|
106
|
+
}
|
107
|
+
div#validator-badges img { border: 0; }
|
108
|
+
|
109
|
+
div#copyright {
|
110
|
+
color: #333;
|
111
|
+
background: #efefef;
|
112
|
+
font: 0.75em sans-serif;
|
113
|
+
margin-top: 5em;
|
114
|
+
margin-bottom: 0;
|
115
|
+
padding: 0.5em 2em;
|
116
|
+
}
|
117
|
+
|
118
|
+
|
119
|
+
/* === Classes =================================== */
|
120
|
+
|
121
|
+
table.header-table {
|
122
|
+
color: white;
|
123
|
+
font-size: small;
|
124
|
+
}
|
125
|
+
|
126
|
+
.type-note {
|
127
|
+
font-size: small;
|
128
|
+
color: #DEDEDE;
|
129
|
+
}
|
130
|
+
|
131
|
+
.xxsection-bar {
|
132
|
+
background: #eee;
|
133
|
+
color: #333;
|
134
|
+
padding: 3px;
|
135
|
+
}
|
136
|
+
|
137
|
+
.section-bar {
|
138
|
+
color: #333;
|
139
|
+
border-bottom: 1px solid #999;
|
140
|
+
margin-left: -20px;
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
.section-title {
|
145
|
+
background: #79a;
|
146
|
+
color: #eee;
|
147
|
+
padding: 3px;
|
148
|
+
margin-top: 2em;
|
149
|
+
margin-left: -30px;
|
150
|
+
border: 1px solid #999;
|
151
|
+
}
|
152
|
+
|
153
|
+
.top-aligned-row { vertical-align: top }
|
154
|
+
.bottom-aligned-row { vertical-align: bottom }
|
155
|
+
|
156
|
+
/* --- Context section classes ----------------------- */
|
157
|
+
|
158
|
+
.context-row { }
|
159
|
+
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
160
|
+
.context-item-value { font-size: small; color: #448; }
|
161
|
+
.context-item-desc { color: #333; padding-left: 2em; }
|
162
|
+
|
163
|
+
/* --- Method classes -------------------------- */
|
164
|
+
.method-detail {
|
165
|
+
background: #efefef;
|
166
|
+
padding: 0;
|
167
|
+
margin-top: 0.5em;
|
168
|
+
margin-bottom: 1em;
|
169
|
+
border: 1px dotted #ccc;
|
170
|
+
}
|
171
|
+
.method-heading {
|
172
|
+
color: black;
|
173
|
+
background: #ccc;
|
174
|
+
border-bottom: 1px solid #666;
|
175
|
+
padding: 0.2em 0.5em 0 0.5em;
|
176
|
+
}
|
177
|
+
.method-signature { color: black; background: inherit; }
|
178
|
+
.method-name { font-weight: bold; }
|
179
|
+
.method-args { font-style: italic; }
|
180
|
+
.method-description { padding: 0 0.5em 0 0.5em; }
|
181
|
+
|
182
|
+
/* --- Source code sections -------------------- */
|
183
|
+
|
184
|
+
a.source-toggle { font-size: 90%; }
|
185
|
+
div.method-source-code {
|
186
|
+
background: #262626;
|
187
|
+
color: #ffdead;
|
188
|
+
margin: 1em;
|
189
|
+
padding: 0.5em;
|
190
|
+
border: 1px dashed #999;
|
191
|
+
overflow: hidden;
|
192
|
+
}
|
193
|
+
|
194
|
+
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
195
|
+
|
196
|
+
/* --- Ruby keyword styles --------------------- */
|
197
|
+
|
198
|
+
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
199
|
+
|
200
|
+
.ruby-constant { color: #7fffd4; background: transparent; }
|
201
|
+
.ruby-keyword { color: #00ffff; background: transparent; }
|
202
|
+
.ruby-ivar { color: #eedd82; background: transparent; }
|
203
|
+
.ruby-operator { color: #00ffee; background: transparent; }
|
204
|
+
.ruby-identifier { color: #ffdead; background: transparent; }
|
205
|
+
.ruby-node { color: #ffa07a; background: transparent; }
|
206
|
+
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
207
|
+
.ruby-regexp { color: #ffa07a; background: transparent; }
|
208
|
+
.ruby-value { color: #7fffd4; background: transparent; }
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Mack
|
2
|
+
module Utils # :nodoc:
|
3
|
+
module Crypt # :nodoc:
|
4
|
+
# The default worker is one that is used when no other worker is specified or the
|
5
|
+
# specified worker does not exist. It uses the Crypt::Rijndael library and get's
|
6
|
+
# it's secret key from app_config.default_secret_key
|
7
|
+
class DefaultWorker
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@aes_key = ::Crypt::Rijndael.new(app_config.default_secret_key || (String.randomize(40)))
|
11
|
+
end
|
12
|
+
|
13
|
+
# Encrypts a string using the Crypt::Rijndael library and the secret key found in
|
14
|
+
# app_config.default_secret_key
|
15
|
+
def encrypt(x)
|
16
|
+
@aes_key.encrypt_string(x)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Decrypts a string using the Crypt::Rijndael library and the secret key found in
|
20
|
+
# app_config.default_secret_key
|
21
|
+
def decrypt(x)
|
22
|
+
@aes_key.decrypt_string(x)
|
23
|
+
end
|
24
|
+
|
25
|
+
end # DefaultWorker
|
26
|
+
end # Crypt
|
27
|
+
end # Utils
|
28
|
+
end # Mack
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Mack
|
2
|
+
module Utils
|
3
|
+
module Crypt
|
4
|
+
# A singleton class that holds/manages all the workers for the system.
|
5
|
+
#
|
6
|
+
# A worker must be defined as Mack::Utils::Crypt::<name>Worker and must
|
7
|
+
# define an encrypt(value) method and a decrypt(value) method.
|
8
|
+
#
|
9
|
+
# Example:
|
10
|
+
# class Mack::Utils::Crypt::ReverseWorker
|
11
|
+
# def encrypt(x)
|
12
|
+
# x.reverse
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# def decrypt(x)
|
16
|
+
# x.reverse
|
17
|
+
# end
|
18
|
+
# end
|
19
|
+
class Keeper
|
20
|
+
include Singleton
|
21
|
+
|
22
|
+
def initialize
|
23
|
+
@crypt_workers_cache = {}
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns a worker object to handle the encrytion/decryption.
|
27
|
+
# If the specified worker doesn't exist then Mack::Utils::Crypt::DefaultWorker
|
28
|
+
# is returned.
|
29
|
+
def worker(key = :default)
|
30
|
+
worker = @crypt_workers_cache[key.to_sym]
|
31
|
+
if worker.nil?
|
32
|
+
worker_klass = key.to_s.camelcase + "Worker"
|
33
|
+
if Mack::Utils::Crypt.const_defined?(worker_klass)
|
34
|
+
worker = "Mack::Utils::Crypt::#{worker_klass}".constantize.new
|
35
|
+
else
|
36
|
+
worker = Mack::Utils::Crypt::DefaultWorker.new
|
37
|
+
end
|
38
|
+
@crypt_workers_cache[key.to_sym] = worker
|
39
|
+
end
|
40
|
+
worker
|
41
|
+
end
|
42
|
+
|
43
|
+
end # Keeper
|
44
|
+
end # Crypt
|
45
|
+
end # Utils
|
46
|
+
end # Mack
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Kernel
|
2
|
+
|
3
|
+
# A helper method that calls Mack::Utils::Crypt::Keeper with the specified worker
|
4
|
+
# and calls the encrypt method on that worker.
|
5
|
+
def _encrypt(value, worker = :default)
|
6
|
+
Mack::Utils::Crypt::Keeper.instance.worker(worker).encrypt(value)
|
7
|
+
end
|
8
|
+
|
9
|
+
# A helper method that calls Mack::Utils::Crypt::Keeper with the specified worker
|
10
|
+
# and calls the decrypt method on that worker.
|
11
|
+
def _decrypt(value, worker = :default)
|
12
|
+
Mack::Utils::Crypt::Keeper.instance.worker(worker).decrypt(value)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class String
|
2
|
+
|
3
|
+
# Maps to Kernel _encrypt
|
4
|
+
#
|
5
|
+
# Examples:
|
6
|
+
# "Hello World".encrypt
|
7
|
+
# "Hello World".encrypt(:my_crypt)
|
8
|
+
def encrypt(worker = :default)
|
9
|
+
_encrypt(self, worker)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Maps to Kernel _decrypt
|
13
|
+
#
|
14
|
+
# Examples:
|
15
|
+
# some_encrypted_string.decrypt
|
16
|
+
# some_encrypted_string.decrypt(:my_crypt)
|
17
|
+
def decrypt(worker = :default)
|
18
|
+
_decrypt(self, worker)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|