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.
@@ -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: []