Annotate

util/sha1.lua @ 99:0f5a8d530fcd

verse.plugins.disco: Add disco plugin originally developed by Hubert Chathi for Riddim, but here adapted for Verse with new APIs added to allow disco'ing the local server and remote entities
author Matthew Wild <mwild1@gmail.com>
date Sat, 21 Aug 2010 14:51:36 +0100 (2010-08-21)
parent 57:8e8bac82e119
child 105:0f2446a9f65f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
57
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 -------------------------------------------------
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 --- *** SHA-1 algorithm for Lua *** ---
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 -------------------------------------------------
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 --- Author: Martin Huesser ---
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 --- Date: 2008-06-16 ---
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 --- License: You may use this code in your ---
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 --- projects as long as this header ---
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 --- stays intact. ---
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 -------------------------------------------------
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 local strlen = string.len
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 local strchar = string.char
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 local strbyte = string.byte
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 local strsub = string.sub
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 local floor = math.floor
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 local bit = require "bit"
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 local bnot = bit.bnot
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 local band = bit.band
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 local bor = bit.bor
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 local bxor = bit.bxor
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 local shl = bit.lshift
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 local shr = bit.rshift
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 local h0, h1, h2, h3, h4
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 -------------------------------------------------
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 local function LeftRotate(val, nr)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 return shl(val, nr) + shr(val, 32 - nr)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 -------------------------------------------------
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 local function ToHex(num)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 local i, d
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 local str = ""
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 for i = 1, 8 do
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 d = band(num, 15)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 if (d < 10) then
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 str = strchar(d + 48) .. str
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 else
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 str = strchar(d + 87) .. str
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 num = floor(num / 16)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 return str
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 -------------------------------------------------
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 local function PreProcess(str)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 local bitlen, i
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52 local str2 = ""
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 bitlen = strlen(str) * 8
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54 str = str .. strchar(128)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
55 i = 56 - band(strlen(str), 63)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
56 if (i < 0) then
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 i = i + 64
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
58 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
59 for i = 1, i do
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
60 str = str .. strchar(0)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
61 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
62 for i = 1, 8 do
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
63 str2 = strchar(band(bitlen, 255)) .. str2
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
64 bitlen = floor(bitlen / 256)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
65 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
66 return str .. str2
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
67 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
68
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
69 -------------------------------------------------
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
70
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
71 local function MainLoop(str)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
72 local a, b, c, d, e, f, k, t
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
73 local i, j
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
74 local w = {}
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
75 while (str ~= "") do
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
76 for i = 0, 15 do
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
77 w[i] = 0
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78 for j = 1, 4 do
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
79 w[i] = w[i] * 256 + strbyte(str, i * 4 + j)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
80 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
81 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
82 for i = 16, 79 do
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83 w[i] = LeftRotate(bxor(bxor(w[i - 3], w[i - 8]), bxor(w[i - 14], w[i - 16])), 1)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 a = h0
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 b = h1
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 c = h2
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
88 d = h3
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
89 e = h4
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 for i = 0, 79 do
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 if (i < 20) then
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92 f = bor(band(b, c), band(bnot(b), d))
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93 k = 1518500249
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 elseif (i < 40) then
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
95 f = bxor(bxor(b, c), d)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
96 k = 1859775393
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
97 elseif (i < 60) then
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
98 f = bor(bor(band(b, c), band(b, d)), band(c, d))
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
99 k = 2400959708
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
100 else
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
101 f = bxor(bxor(b, c), d)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
102 k = 3395469782
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
103 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
104 t = LeftRotate(a, 5) + f + e + k + w[i]
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
105 e = d
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
106 d = c
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
107 c = LeftRotate(b, 30)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
108 b = a
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
109 a = t
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
110 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
111 h0 = band(h0 + a, 4294967295)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
112 h1 = band(h1 + b, 4294967295)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
113 h2 = band(h2 + c, 4294967295)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
114 h3 = band(h3 + d, 4294967295)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
115 h4 = band(h4 + e, 4294967295)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
116 str = strsub(str, 65)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
117 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
118 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
119
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
120 -------------------------------------------------
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
121
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
122 local function sha1(str, hex)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
123 str = PreProcess(str)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
124 h0 = 1732584193
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
125 h1 = 4023233417
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
126 h2 = 2562383102
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
127 h3 = 0271733878
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
128 h4 = 3285377520
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
129 MainLoop(str)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
130 local hex = ToHex(h0)..ToHex(h1)..ToHex(h2)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
131 ..ToHex(h3)..ToHex(h4);
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
132 if hex then
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
133 return hex;
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
134 else
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
135 return hex:gsub("..", function (byte)
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
136 return string.char(tonumber(byte, 16));
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
137 end);
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
138 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
139 end
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
140
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
141 _G.sha1 = {sha1 = sha1};
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
142 return _G.sha1;
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
143
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
144 -------------------------------------------------
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
145 -------------------------------------------------
8e8bac82e119 util.sha1, squishy: Add sha1 lib needed for proxy65 (and soon XEP-0114)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
146 -------------------------------------------------