FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
vimperator-plugins/hash.js at master · vimpr/vimperator-plugins · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
vimpr
/
vimperator-plugins
Public
Notifications
You must be signed in to change notification settings
Fork
115
Star
407
Code
Issues
19
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
vimperator-plugins
/
hash.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
89 lines (75 loc) · 2.59 KB
Breadcrumbs
vimperator-plugins
/
hash.js
Copy path
File metadata and controls
89 lines (75 loc) · 2.59 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// PLUGIN_INFO//{{{
var
PLUGIN_INFO
=
xml
`
<VimperatorPlugin>
<name>{NAME}</name>
<description>hash of file</description>
<author mail="konbu.komuro@gmail.com" homepage="http://d.hatena.ne.jp/hogelog/">hogelog</author>
<version>0.2.2</version>
<minVersion>2.3</minVersion>
<maxVersion>2.3</maxVersion>
<updateURL>https://github.com/vimpr/vimperator-plugins/raw/master/hash.js</updateURL>
<detail><![CDATA[
== COMMANDS ==
hash:
:hash md2|md5|sha1|sha256|sha384|sha512 file-path
]]></detail>
</VimperatorPlugin>`
;
//}}}
(
function
(
)
{
const
PR_UINT_MAX
=
0xffffffff
;
let
Crypt
=
Cc
[
"@mozilla.org/security/hash;1"
]
.
createInstance
(
Ci
.
nsICryptoHash
)
;
let
Algos
=
[
[
"md2"
,
"MD2 Algorithm"
]
,
[
"md5"
,
"MD5 Algorithm"
]
,
[
"sha1"
,
"SHA1 Algorithm"
]
,
// SHA-1
[
"sha256"
,
"SHA256 Algorithm"
]
,
// SHA-256
[
"sha384"
,
"SHA384 Algorithm"
]
,
// SHA-384
[
"sha512"
,
"SHA512 Algorithm"
]
,
// SHA-512
]
;
function
getStream
(
path
)
{
let
file
=
io
.
File
(
path
)
;
let
stream
=
Cc
[
"@mozilla.org/network/file-input-stream;1"
]
.
createInstance
(
Ci
.
nsIFileInputStream
)
;
stream
.
init
(
file
,
0x01
,
0444
,
0
)
;
return
stream
;
}
// return the two-digit hexadecimal code for a byte
function
toHexString
(
charCode
)
{
return
(
"0"
+
charCode
.
toString
(
16
)
)
.
slice
(
-
2
)
;
}
commands
.
addUserCommand
(
[
"hash"
]
,
"hash of file"
,
function
(
args
)
{
if
(
args
.
length
!=
2
)
{
liberator
.
echo
(
"usage \":hash md2|md5|sha1|sha256|sha384|sha512 file-path\""
)
;
return
false
;
}
let
[
algo
,
path
]
=
args
;
let
stream
=
getStream
(
path
)
;
Crypt
.
initWithString
(
algo
)
;
// read the entire stream
Crypt
.
updateFromStream
(
stream
,
PR_UINT_MAX
)
;
stream
.
close
(
)
;
// get base-64 string
let
hash
=
Crypt
.
finish
(
false
)
;
// convert the binary hash data to a hex string.
let
str
=
[
toHexString
(
hash
.
charCodeAt
(
i
)
)
for
(
i
in
hash
)
]
.
join
(
""
)
;
util
.
copyToClipboard
(
str
,
true
)
;
}
,
{
bang
:
true
,
completer
:
function
(
context
,
args
)
{
if
(
args
.
completeArg
==
0
)
{
context
.
title
=
[
"hash"
,
"algorithm"
]
;
context
.
completions
=
Algos
;
}
else
if
(
args
.
completeArg
==
1
)
{
completion
.
url
(
context
,
"f"
)
;
}
}
,
literal
:
1
,
}
,
true
)
;
}
)
(
)
;
// vim: fdm=marker sw=4 ts=4 et:
Back
|
FazBrowse Home
|
New Git URL