projects
/
prosody.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Another unwanted spaces at the end of a line.
[prosody.git]
/
util
/
hmac.lua
diff --git
a/util/hmac.lua
b/util/hmac.lua
index 5f4467cf7aa2a5be1dd6ca17b005b83b23198bf7..ffd69d91e9444625b5919961ad69e6cd7bbe29bb 100644
(file)
--- a/
util/hmac.lua
+++ b/
util/hmac.lua
@@
-1,3
+1,11
@@
+-- Prosody IM
+-- Copyright (C) 2008-2009 Matthew Wild
+-- Copyright (C) 2008-2009 Waqas Hussain
+--
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
local hashes = require "util.hashes"
local xor = require "bit".bxor
local hashes = require "util.hashes"
local xor = require "bit".bxor
@@
-7,64
+15,64
@@
local s_char = string.char;
module "hmac"
local function arraystr(array)
module "hmac"
local function arraystr(array)
- local t = {}
- for i = 1,#array do
- t_insert(t, s_char(array[i]))
- end
+
local t = {}
+
for i = 1,#array do
+
t_insert(t, s_char(array[i]))
+
end
- return t_concat(t)
+
return t_concat(t)
end
--[[
key
end
--[[
key
- the key to use in the hash
+
the key to use in the hash
message
message
- the message to hash
+
the message to hash
hash
hash
- the hash function
+
the hash function
blocksize
blocksize
- the blocksize for the hash function in bytes
+
the blocksize for the hash function in bytes
hex
return raw hash or hexadecimal string
--]]
function hmac(key, message, hash, blocksize, hex)
hex
return raw hash or hexadecimal string
--]]
function hmac(key, message, hash, blocksize, hex)
- local opad = {}
- local ipad = {}
-
- for i = 1,blocksize do
- opad[i] = 0x5c
- ipad[i] = 0x36
- end
+
local opad = {}
+
local ipad = {}
+
+
for i = 1,blocksize do
+
opad[i] = 0x5c
+
ipad[i] = 0x36
+
end
- if #key > blocksize then
- key = hash(key)
- end
+
if #key > blocksize then
+
key = hash(key)
+
end
- for i = 1,#key do
- ipad[i] = xor(ipad[i],key:sub(i,i):byte())
- opad[i] = xor(opad[i],key:sub(i,i):byte())
- end
+
for i = 1,#key do
+
ipad[i] = xor(ipad[i],key:sub(i,i):byte())
+
opad[i] = xor(opad[i],key:sub(i,i):byte())
+
end
- opad = arraystr(opad)
- ipad = arraystr(ipad)
+
opad = arraystr(opad)
+
ipad = arraystr(ipad)
- if hex then
- return hash(opad..hash(ipad..message), true)
- else
- return hash(opad..hash(ipad..message))
- end
+
if hex then
+
return hash(opad..hash(ipad..message), true)
+
else
+
return hash(opad..hash(ipad..message))
+
end
end
function md5(key, message, hex)
end
function md5(key, message, hex)
- return hmac(key, message, hashes.md5, 64, hex)
+
return hmac(key, message, hashes.md5, 64, hex)
end
function sha1(key, message, hex)
end
function sha1(key, message, hex)
- return hmac(key, message, hashes.sha1, 64, hex)
+
return hmac(key, message, hashes.sha1, 64, hex)
end
function sha256(key, message, hex)
end
function sha256(key, message, hex)
- return hmac(key, message, hashes.sha256, 64, hex)
+
return hmac(key, message, hashes.sha256, 64, hex)
end
return _M
end
return _M