Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F948107
RSAKey-ext.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
RSAKey-ext.js
View Options
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if
(
!
dojo
.
_hasResource
[
"dojox.encoding.crypto.RSAKey-ext"
]){
dojo
.
_hasResource
[
"dojox.encoding.crypto.RSAKey-ext"
]
=
true
;
dojo
.
provide
(
"dojox.encoding.crypto.RSAKey-ext"
);
dojo
.
experimental
(
"dojox.encoding.crypto.RSAKey-ext"
);
dojo
.
require
(
"dojox.encoding.crypto.RSAKey"
);
dojo
.
require
(
"dojox.math.BigInteger-ext"
);
(
function
(){
var
_1
=
dojox
.
math
.
BigInteger
;
function
_2
(
d
,
n
){
var
b
=
d
.
toByteArray
();
for
(
var
i
=
0
,
_3
=
b
.
length
;
i
<
_3
&&!
b
[
i
];
++
i
){
}
if
(
b
.
length
-
i
!==
n
-
1
||
b
[
i
]
!==
2
){
return
null
;
}
for
(
++
i
;
b
[
i
];){
if
(
++
i
>=
_3
){
return
null
;
}
}
var
_4
=
""
;
while
(
++
i
<
_3
){
_4
+=
String
.
fromCharCode
(
b
[
i
]);
}
return
_4
;
};
dojo
.
extend
(
dojox
.
encoding
.
crypto
.
RSAKey
,{
setPrivate
:
function
(
N
,
E
,
D
){
if
(
N
&&
E
&&
N
.
length
&&
E
.
length
){
this
.
n
=
new
_1
(
N
,
16
);
this
.
e
=
parseInt
(
E
,
16
);
this
.
d
=
new
_1
(
D
,
16
);
}
else
{
throw
new
Error
(
"Invalid RSA private key"
);
}
},
setPrivateEx
:
function
(
N
,
E
,
D
,
P
,
Q
,
DP
,
DQ
,
C
){
if
(
N
&&
E
&&
N
.
length
&&
E
.
length
){
this
.
n
=
new
_1
(
N
,
16
);
this
.
e
=
parseInt
(
E
,
16
);
this
.
d
=
new
_1
(
D
,
16
);
this
.
p
=
new
_1
(
P
,
16
);
this
.
q
=
new
_1
(
Q
,
16
);
this
.
dmp1
=
new
_1
(
DP
,
16
);
this
.
dmq1
=
new
_1
(
DQ
,
16
);
this
.
coeff
=
new
_1
(
C
,
16
);
}
else
{
throw
new
Error
(
"Invalid RSA private key"
);
}
},
generate
:
function
(
B
,
E
){
var
_5
=
this
.
rngf
(),
qs
=
B
>>
1
;
this
.
e
=
parseInt
(
E
,
16
);
var
ee
=
new
_1
(
E
,
16
);
for
(;;){
for
(;;){
this
.
p
=
new
_1
(
B
-
qs
,
1
,
_5
);
if
(
!
this
.
p
.
subtract
(
_1
.
ONE
).
gcd
(
ee
).
compareTo
(
_1
.
ONE
)
&&
this
.
p
.
isProbablePrime
(
10
)){
break
;
}
}
for
(;;){
this
.
q
=
new
_1
(
qs
,
1
,
_5
);
if
(
!
this
.
q
.
subtract
(
_1
.
ONE
).
gcd
(
ee
).
compareTo
(
_1
.
ONE
)
&&
this
.
q
.
isProbablePrime
(
10
)){
break
;
}
}
if
(
this
.
p
.
compareTo
(
this
.
q
)
<=
0
){
var
t
=
this
.
p
;
this
.
p
=
this
.
q
;
this
.
q
=
t
;
}
var
p1
=
this
.
p
.
subtract
(
_1
.
ONE
);
var
q1
=
this
.
q
.
subtract
(
_1
.
ONE
);
var
_6
=
p1
.
multiply
(
q1
);
if
(
!
_6
.
gcd
(
ee
).
compareTo
(
_1
.
ONE
)){
this
.
n
=
this
.
p
.
multiply
(
this
.
q
);
this
.
d
=
ee
.
modInverse
(
_6
);
this
.
dmp1
=
this
.
d
.
mod
(
p1
);
this
.
dmq1
=
this
.
d
.
mod
(
q1
);
this
.
coeff
=
this
.
q
.
modInverse
(
this
.
p
);
break
;
}
}
_5
.
destroy
();
},
decrypt
:
function
(
_7
){
var
c
=
new
_1
(
_7
,
16
),
m
;
if
(
!
this
.
p
||!
this
.
q
){
m
=
c
.
modPow
(
this
.
d
,
this
.
n
);
}
else
{
var
cp
=
c
.
mod
(
this
.
p
).
modPow
(
this
.
dmp1
,
this
.
p
),
cq
=
c
.
mod
(
this
.
q
).
modPow
(
this
.
dmq1
,
this
.
q
);
while
(
cp
.
compareTo
(
cq
)
<
0
){
cp
=
cp
.
add
(
this
.
p
);
}
m
=
cp
.
subtract
(
cq
).
multiply
(
this
.
coeff
).
mod
(
this
.
p
).
multiply
(
this
.
q
).
add
(
cq
);
}
if
(
!
m
){
return
null
;
}
return
_2
(
m
,(
this
.
n
.
bitLength
()
+
7
)
>>
3
);
}});
})();
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 14:50 (7 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25218
Default Alt Text
RSAKey-ext.js (2 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment