Thu, 03 Dec 2009 02:30:09 +0000
net.server_event: Port fix in 2dc9bbf25447 to libevent-based backend
1522
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1516
diff
changeset
|
1 | -- Prosody IM |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1516
diff
changeset
|
2 | -- Copyright (C) 2008-2009 Matthew Wild |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1516
diff
changeset
|
3 | -- Copyright (C) 2008-2009 Waqas Hussain |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1516
diff
changeset
|
4 | -- |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1516
diff
changeset
|
5 | -- This project is MIT/X11 licensed. Please see the |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1516
diff
changeset
|
6 | -- COPYING file in the source package for more information. |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1516
diff
changeset
|
7 | -- |
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
1516
diff
changeset
|
8 | |
1456 | 9 | local hashes = require "util.hashes" |
2288 | 10 | local xor = require "bit".bxor |
1456 | 11 | |
2288 | 12 | local t_insert, t_concat = table.insert, table.concat; |
1482
9734231a569f
util.hmac: Some optimisations
Matthew Wild <mwild1@gmail.com>
parents:
1481
diff
changeset
|
13 | local s_char = string.char; |
9734231a569f
util.hmac: Some optimisations
Matthew Wild <mwild1@gmail.com>
parents:
1481
diff
changeset
|
14 | |
1456 | 15 | module "hmac" |
16 | ||
2288 | 17 | local function arraystr(array) |
18 | local t = {} | |
19 | for i = 1,#array do | |
20 | t_insert(t, s_char(array[i])) | |
21 | end | |
22 | ||
23 | return t_concat(t) | |
1456 | 24 | end |
25 | ||
26 | --[[ | |
27 | key | |
1516
4c9bd0527d1d
util.hmac: Convert spaces to tabs
Matthew Wild <mwild1@gmail.com>
parents:
1482
diff
changeset
|
28 | the key to use in the hash |
1456 | 29 | message |
1516
4c9bd0527d1d
util.hmac: Convert spaces to tabs
Matthew Wild <mwild1@gmail.com>
parents:
1482
diff
changeset
|
30 | the message to hash |
1456 | 31 | hash |
1516
4c9bd0527d1d
util.hmac: Convert spaces to tabs
Matthew Wild <mwild1@gmail.com>
parents:
1482
diff
changeset
|
32 | the hash function |
1456 | 33 | blocksize |
1516
4c9bd0527d1d
util.hmac: Convert spaces to tabs
Matthew Wild <mwild1@gmail.com>
parents:
1482
diff
changeset
|
34 | the blocksize for the hash function in bytes |
1456 | 35 | hex |
36 | return raw hash or hexadecimal string | |
37 | --]] | |
38 | function hmac(key, message, hash, blocksize, hex) | |
2288 | 39 | local opad = {} |
40 | local ipad = {} | |
41 | ||
42 | for i = 1,blocksize do | |
43 | opad[i] = 0x5c | |
44 | ipad[i] = 0x36 | |
45 | end | |
46 | ||
1516
4c9bd0527d1d
util.hmac: Convert spaces to tabs
Matthew Wild <mwild1@gmail.com>
parents:
1482
diff
changeset
|
47 | if #key > blocksize then |
4c9bd0527d1d
util.hmac: Convert spaces to tabs
Matthew Wild <mwild1@gmail.com>
parents:
1482
diff
changeset
|
48 | key = hash(key) |
4c9bd0527d1d
util.hmac: Convert spaces to tabs
Matthew Wild <mwild1@gmail.com>
parents:
1482
diff
changeset
|
49 | end |
1456 | 50 | |
2288 | 51 | for i = 1,#key do |
52 | ipad[i] = xor(ipad[i],key:sub(i,i):byte()) | |
53 | opad[i] = xor(opad[i],key:sub(i,i):byte()) | |
54 | end | |
1456 | 55 | |
2288 | 56 | opad = arraystr(opad) |
57 | ipad = arraystr(ipad) | |
58 | ||
59 | if hex then | |
60 | return hash(opad..hash(ipad..message), true) | |
61 | else | |
62 | return hash(opad..hash(ipad..message)) | |
63 | end | |
1456 | 64 | end |
65 | ||
66 | function md5(key, message, hex) | |
1516
4c9bd0527d1d
util.hmac: Convert spaces to tabs
Matthew Wild <mwild1@gmail.com>
parents:
1482
diff
changeset
|
67 | return hmac(key, message, hashes.md5, 64, hex) |
1456 | 68 | end |
69 | ||
70 | function sha1(key, message, hex) | |
1516
4c9bd0527d1d
util.hmac: Convert spaces to tabs
Matthew Wild <mwild1@gmail.com>
parents:
1482
diff
changeset
|
71 | return hmac(key, message, hashes.sha1, 64, hex) |
1456 | 72 | end |
73 | ||
74 | function sha256(key, message, hex) | |
1516
4c9bd0527d1d
util.hmac: Convert spaces to tabs
Matthew Wild <mwild1@gmail.com>
parents:
1482
diff
changeset
|
75 | return hmac(key, message, hashes.sha256, 64, hex) |
1456 | 76 | end |
77 | ||
78 | return _M |