rsasync-rails 13.2.11.1
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/lib/rsasync-rails.rb +11 -0
- data/lib/rsasync-rails/engine.rb +6 -0
- data/lib/rsasync-rails/railtie.rb +6 -0
- data/lib/rsasync-rails/version.rb +5 -0
- data/vendor/assets/javascripts/base64.js +71 -0
- data/vendor/assets/javascripts/jsbn.js +559 -0
- data/vendor/assets/javascripts/jsbn2.js +656 -0
- data/vendor/assets/javascripts/prng4.js +45 -0
- data/vendor/assets/javascripts/rng.js +68 -0
- data/vendor/assets/javascripts/rsa.js +112 -0
- data/vendor/assets/javascripts/rsa2.js +132 -0
- data/vendor/assets/javascripts/rsasync-rails.js +2 -0
- data/vendor/assets/javascripts/rsasync.js +152 -0
- data/vendor/assets/javascripts/ssh-format-rails.coffee +139 -0
- metadata +125 -0
@@ -0,0 +1,139 @@
|
|
1
|
+
toHex = (x, minLength = 0) ->
|
2
|
+
hex = x.toString(16)
|
3
|
+
|
4
|
+
if minLength > 0 and hex.length < minLength
|
5
|
+
hex = Array(minLength - hex.length + 1).join("0") + hex
|
6
|
+
|
7
|
+
if (hex.length % 2 == 1)
|
8
|
+
return "0" + hex
|
9
|
+
else
|
10
|
+
return hex
|
11
|
+
|
12
|
+
|
13
|
+
class DERElement
|
14
|
+
constructor: (@type, @value) ->
|
15
|
+
|
16
|
+
getHexValue: ->
|
17
|
+
@value
|
18
|
+
|
19
|
+
toHex: ->
|
20
|
+
value = @getHexValue()
|
21
|
+
size = value.length / 2
|
22
|
+
|
23
|
+
if size < 128
|
24
|
+
encodedSize = toHex(size)
|
25
|
+
else
|
26
|
+
encodedSize = toHex(size)
|
27
|
+
encodedSize = toHex((encodedSize.length/2)+128) + encodedSize
|
28
|
+
|
29
|
+
toHex(@type) + encodedSize + value
|
30
|
+
|
31
|
+
toString: (width = 64) ->
|
32
|
+
if width == 0
|
33
|
+
hex2b64(@toHex())
|
34
|
+
else
|
35
|
+
linebrk hex2b64(@toHex()), width
|
36
|
+
|
37
|
+
|
38
|
+
class DERInteger extends DERElement
|
39
|
+
constructor: (value) ->
|
40
|
+
super 2, value
|
41
|
+
|
42
|
+
getHexValue: ->
|
43
|
+
hexValue = @value.toString(16)
|
44
|
+
|
45
|
+
if hexValue.length % 2 == 1
|
46
|
+
hexValue = "0" + hexValue
|
47
|
+
|
48
|
+
hexValue
|
49
|
+
|
50
|
+
|
51
|
+
class DERBitString extends DERElement
|
52
|
+
constructor: (value) ->
|
53
|
+
super 3, value
|
54
|
+
|
55
|
+
|
56
|
+
class DERNull extends DERElement
|
57
|
+
constructor: ->
|
58
|
+
super 5, ""
|
59
|
+
|
60
|
+
|
61
|
+
class DERObjectIdentifier extends DERElement
|
62
|
+
constructor: (value) ->
|
63
|
+
super 6, value
|
64
|
+
|
65
|
+
|
66
|
+
class DERSequence extends DERElement
|
67
|
+
constructor: (value = []) ->
|
68
|
+
super 48, value
|
69
|
+
|
70
|
+
addElement: (element) ->
|
71
|
+
@value.push element
|
72
|
+
|
73
|
+
getHexValue: ->
|
74
|
+
@value.reduce (str, element) ->
|
75
|
+
str += element.toHex()
|
76
|
+
, ""
|
77
|
+
|
78
|
+
|
79
|
+
generatePublicKey = (rsa) ->
|
80
|
+
# see: http://www.ietf.org/rfc/rfc4253.txt Sect. 6.6
|
81
|
+
|
82
|
+
# type
|
83
|
+
hexType = ""
|
84
|
+
for c in "ssh-rsa"
|
85
|
+
hexType += toHex c.charCodeAt(0)
|
86
|
+
|
87
|
+
# exponent
|
88
|
+
hexExponent = toHex(rsa.e)
|
89
|
+
|
90
|
+
# modulus
|
91
|
+
hexModulus = rsa.n.toString(16)
|
92
|
+
#short = 8 - hexModulus.length % 8
|
93
|
+
short = 2
|
94
|
+
if short < 8
|
95
|
+
hexModulus = Array(short + 1).join("0") + hexModulus
|
96
|
+
|
97
|
+
encodedType = toHex( hexType.length/2, 8) + hexType
|
98
|
+
encodedExponent = toHex(hexExponent.length/2, 8) + hexExponent
|
99
|
+
encodedModulus = toHex( hexModulus.length/2, 8) + hexModulus
|
100
|
+
|
101
|
+
"ssh-rsa " + hex2b64(encodedType + encodedExponent + encodedModulus)
|
102
|
+
|
103
|
+
generatePrivateKeyBlock = (rsa) ->
|
104
|
+
# see: http://etherhack.co.uk/asymmetric/docs/rsa_key_breakdown.html
|
105
|
+
|
106
|
+
doc = new DERSequence [
|
107
|
+
# algorithm_version
|
108
|
+
new DERInteger(0)
|
109
|
+
# modulus
|
110
|
+
new DERInteger(rsa.n)
|
111
|
+
# public_exponent
|
112
|
+
new DERInteger(rsa.e)
|
113
|
+
# private_exponent
|
114
|
+
new DERInteger(rsa.d)
|
115
|
+
# prime1
|
116
|
+
new DERInteger(rsa.p)
|
117
|
+
# prime2
|
118
|
+
new DERInteger(rsa.q)
|
119
|
+
# exponent1
|
120
|
+
new DERInteger(rsa.dmp1)
|
121
|
+
# exponent2
|
122
|
+
new DERInteger(rsa.dmq1)
|
123
|
+
# coefficient
|
124
|
+
new DERInteger(rsa.coeff)
|
125
|
+
]
|
126
|
+
|
127
|
+
header = "-----BEGIN RSA PRIVATE KEY-----\n"
|
128
|
+
footer = "\n-----END RSA PRIVATE KEY-----"
|
129
|
+
|
130
|
+
return header + doc.toString() + footer
|
131
|
+
|
132
|
+
|
133
|
+
# export public functions
|
134
|
+
|
135
|
+
window.generatePublicKey = (rsa) ->
|
136
|
+
generatePublicKey rsa
|
137
|
+
|
138
|
+
window.generatePrivateKeyBlock = (rsa) ->
|
139
|
+
generatePrivateKeyBlock rsa
|
metadata
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rsasync-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 13.2.11.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Thomas A. de Ruiter
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: railties
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: coffee-rails
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 3.2.1
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 3.2.1
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: bundler
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rails
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3.0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '3.0'
|
78
|
+
description: Extension to jsbn which adds facilities for asynchronous RSA key generation.
|
79
|
+
Primarily created to avoid execution timeout on mobile devices. This gem integrates
|
80
|
+
rsasync with Rails asset pipeline for easy of use.
|
81
|
+
email:
|
82
|
+
- thomas.deruiter@gimiscale.com
|
83
|
+
executables: []
|
84
|
+
extensions: []
|
85
|
+
extra_rdoc_files: []
|
86
|
+
files:
|
87
|
+
- lib/rsasync-rails.rb
|
88
|
+
- lib/rsasync-rails/version.rb
|
89
|
+
- lib/rsasync-rails/engine.rb
|
90
|
+
- lib/rsasync-rails/railtie.rb
|
91
|
+
- vendor/assets/javascripts/jsbn.js
|
92
|
+
- vendor/assets/javascripts/jsbn2.js
|
93
|
+
- vendor/assets/javascripts/rsa.js
|
94
|
+
- vendor/assets/javascripts/rsa2.js
|
95
|
+
- vendor/assets/javascripts/rng.js
|
96
|
+
- vendor/assets/javascripts/prng4.js
|
97
|
+
- vendor/assets/javascripts/base64.js
|
98
|
+
- vendor/assets/javascripts/rsasync.js
|
99
|
+
- vendor/assets/javascripts/rsasync-rails.js
|
100
|
+
- vendor/assets/javascripts/ssh-format-rails.coffee
|
101
|
+
homepage:
|
102
|
+
licenses: []
|
103
|
+
post_install_message:
|
104
|
+
rdoc_options: []
|
105
|
+
require_paths:
|
106
|
+
- lib
|
107
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
109
|
+
requirements:
|
110
|
+
- - ! '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
requirements: []
|
120
|
+
rubyforge_project:
|
121
|
+
rubygems_version: 1.8.25
|
122
|
+
signing_key:
|
123
|
+
specification_version: 3
|
124
|
+
summary: Integrate rsasync javascript library with Rails asset pipeline
|
125
|
+
test_files: []
|