WoWInterface SVN PublishMySkills

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 13 to Rev 12
    Reverse comparison

Rev 13 → Rev 12

trunk/PublishMySkills/LibTradeSkillsURL-1.0/md5calc.lua New file
0,0 → 1,177
-- Taken from http://www.equi4.com/md5/ on 2008-04-01.
-- On the page above this is credited to Jean-Claude Wippler (presumably jcw
-- below).
 
-- It provides a function, MD5.Calc that takes a single string argument
-- and returns the MD5 digest of it, as a hex string.
 
-- Modified by Asu of Thorium Brotherhood to:
-- 1. Work in WoW's Lua environment
-- 2. Drop all of the benchmark code
 
 
-- To make it work in WoW I had to:
-- 1. Prefix all of the bitlib functions with "bit."
-- 2. Change imod to bit.mod
-- 3. Drop the % sigil from the references to variables containing tables
-- 4. Make the variadic function explicitly construct an args table from "..."
 
-- An MD5 mplementation in Lua, requires bitlib
-- 10/02/2001 jcw@equi4.com
 
md5={ff=tonumber('ffffffff',16),consts={}}
 
gsub([[ d76aa478 e8c7b756 242070db c1bdceee
f57c0faf 4787c62a a8304613 fd469501
698098d8 8b44f7af ffff5bb1 895cd7be
6b901122 fd987193 a679438e 49b40821
f61e2562 c040b340 265e5a51 e9b6c7aa
d62f105d 02441453 d8a1e681 e7d3fbc8
21e1cde6 c33707d6 f4d50d87 455a14ed
a9e3e905 fcefa3f8 676f02d9 8d2a4c8a
fffa3942 8771f681 6d9d6122 fde5380c
a4beea44 4bdecfa9 f6bb4b60 bebfbc70
289b7ec6 eaa127fa d4ef3085 04881d05
d9d4d039 e6db99e5 1fa27cf8 c4ac5665
f4292244 432aff97 ab9423a7 fc93a039
655b59c3 8f0ccc92 ffeff47d 85845dd1
6fa87e4f fe2ce6e0 a3014314 4e0811a1
f7537e82 bd3af235 2ad7d2bb eb86d391
67452301 efcdab89 98badcfe 10325476 ]],
'(%w+)', function (s) tinsert(md5.consts,tonumber(s,16)) end)
 
function md5.transform(A,B,C,D)
local f=function (x,y,z) return bit.bor(bit.band(x,y),bit.band(-x-1,z)) end
local g=function (x,y,z) return bit.bor(bit.band(x,z),bit.band(y,-z-1)) end
local h=function (x,y,z) return bit.bxor(x,bit.bxor(y,z)) end
local i=function (x,y,z) return bit.bxor(y,bit.bor(x,-z-1)) end
local z=function (f,a,b,c,d,x,s,ac)
a=bit.band(a+f(b,c,d)+x+ac,md5.ff)
-- be *very* careful that left shift does not cause rounding!
return bit.bor(bit.lshift(bit.band(a,bit.rshift(md5.ff,s)),s),bit.rshift(a,32-s))+b
end
local a,b,c,d=A,B,C,D
local t=md5.consts
 
a=z(f,a,b,c,d,X[ 0], 7,t[ 1])
d=z(f,d,a,b,c,X[ 1],12,t[ 2])
c=z(f,c,d,a,b,X[ 2],17,t[ 3])
b=z(f,b,c,d,a,X[ 3],22,t[ 4])
a=z(f,a,b,c,d,X[ 4], 7,t[ 5])
d=z(f,d,a,b,c,X[ 5],12,t[ 6])
c=z(f,c,d,a,b,X[ 6],17,t[ 7])
b=z(f,b,c,d,a,X[ 7],22,t[ 8])
a=z(f,a,b,c,d,X[ 8], 7,t[ 9])
d=z(f,d,a,b,c,X[ 9],12,t[10])
c=z(f,c,d,a,b,X[10],17,t[11])
b=z(f,b,c,d,a,X[11],22,t[12])
a=z(f,a,b,c,d,X[12], 7,t[13])
d=z(f,d,a,b,c,X[13],12,t[14])
c=z(f,c,d,a,b,X[14],17,t[15])
b=z(f,b,c,d,a,X[15],22,t[16])
 
a=z(g,a,b,c,d,X[ 1], 5,t[17])
d=z(g,d,a,b,c,X[ 6], 9,t[18])
c=z(g,c,d,a,b,X[11],14,t[19])
b=z(g,b,c,d,a,X[ 0],20,t[20])
a=z(g,a,b,c,d,X[ 5], 5,t[21])
d=z(g,d,a,b,c,X[10], 9,t[22])
c=z(g,c,d,a,b,X[15],14,t[23])
b=z(g,b,c,d,a,X[ 4],20,t[24])
a=z(g,a,b,c,d,X[ 9], 5,t[25])
d=z(g,d,a,b,c,X[14], 9,t[26])
c=z(g,c,d,a,b,X[ 3],14,t[27])
b=z(g,b,c,d,a,X[ 8],20,t[28])
a=z(g,a,b,c,d,X[13], 5,t[29])
d=z(g,d,a,b,c,X[ 2], 9,t[30])
c=z(g,c,d,a,b,X[ 7],14,t[31])
b=z(g,b,c,d,a,X[12],20,t[32])
 
a=z(h,a,b,c,d,X[ 5], 4,t[33])
d=z(h,d,a,b,c,X[ 8],11,t[34])
c=z(h,c,d,a,b,X[11],16,t[35])
b=z(h,b,c,d,a,X[14],23,t[36])
a=z(h,a,b,c,d,X[ 1], 4,t[37])
d=z(h,d,a,b,c,X[ 4],11,t[38])
c=z(h,c,d,a,b,X[ 7],16,t[39])
b=z(h,b,c,d,a,X[10],23,t[40])
a=z(h,a,b,c,d,X[13], 4,t[41])
d=z(h,d,a,b,c,X[ 0],11,t[42])
c=z(h,c,d,a,b,X[ 3],16,t[43])
b=z(h,b,c,d,a,X[ 6],23,t[44])
a=z(h,a,b,c,d,X[ 9], 4,t[45])
d=z(h,d,a,b,c,X[12],11,t[46])
c=z(h,c,d,a,b,X[15],16,t[47])
b=z(h,b,c,d,a,X[ 2],23,t[48])
 
a=z(i,a,b,c,d,X[ 0], 6,t[49])
d=z(i,d,a,b,c,X[ 7],10,t[50])
c=z(i,c,d,a,b,X[14],15,t[51])
b=z(i,b,c,d,a,X[ 5],21,t[52])
a=z(i,a,b,c,d,X[12], 6,t[53])
d=z(i,d,a,b,c,X[ 3],10,t[54])
c=z(i,c,d,a,b,X[10],15,t[55])
b=z(i,b,c,d,a,X[ 1],21,t[56])
a=z(i,a,b,c,d,X[ 8], 6,t[57])
d=z(i,d,a,b,c,X[15],10,t[58])
c=z(i,c,d,a,b,X[ 6],15,t[59])
b=z(i,b,c,d,a,X[13],21,t[60])
a=z(i,a,b,c,d,X[ 4], 6,t[61])
d=z(i,d,a,b,c,X[11],10,t[62])
c=z(i,c,d,a,b,X[ 2],15,t[63])
b=z(i,b,c,d,a,X[ 9],21,t[64])
 
return A+a,B+b,C+c,D+d
end
 
function md5.Calc(s)
local msgLen=strlen(s)
local padLen=56-bit.mod(msgLen,64)
if bit.mod(msgLen,64)>56 then padLen=padLen+64 end
if padLen==0 then padLen=64 end
s=s..strchar(128)..strrep(strchar(0),padLen-1)
s=s..leIstr(8*msgLen)..leIstr(0)
assert(bit.mod(strlen(s),64)==0)
local t=md5.consts
local a,b,c,d=t[65],t[66],t[67],t[68]
for i=1,strlen(s),64 do
X=leStrCuts(strsub(s,i,i+63),4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4)
assert(getn(X)==16)
X[0]=tremove(X,1) -- zero based!
a,b,c,d=md5.transform(a,b,c,d)
end
local swap=function (w) return beInt(leIstr(w)) end
return format("%08x%08x%08x%08x",swap(a),swap(b),swap(c),swap(d))
end
 
-- convert little-endian 32-bit int to a 4-char string
function leIstr(i)
local f=function (s) return strchar(bit.band(bit.rshift(i,s),255)) end
return f(0)..f(8)..f(16)..f(24)
end
 
do -- from util.lua
-- convert raw string to big-endian int
function beInt(s)
local v=0
for i=1,strlen(s) do v=v*256+strbyte(s,i) end
return v
end
-- convert raw string to little-endian int
function leInt(s)
local v=0
for i=strlen(s),1,-1 do v=v*256+strbyte(s,i) end
return v
end
-- cut up a string in little-endian ints of given size
function leStrCuts(s,...)
local arg = { ... };
local o,r=1,{}
for i=1,getn(arg) do
tinsert(r,leInt(strsub(s,o,o+arg[i]-1)))
o=o+arg[i]
end
return r
end
end
 
Property changes : Added: svn:keywords + Revision Date Added: svn:eol-style + native Added: svn:mime-type + text/plain
trunk/PublishMySkills/LibTradeSkillsURL-1.0/LibTradeSkillsURL.lua
98,30 → 98,6
return base85
end
 
-- Unsigned base 85, padded to five digits. Supports 0 - 4,437,053,125
-- decimal, enough to hold a 32bit integer.
--local function num32_to_base85(number)
-- local base85 = ""
-- for ii=1,5 do
-- local factor = 85 ^ (5-ii)
-- local digit = math.floor(number / factor)
-- base85 = base85 .. base85_chars[ digit ]
-- number = number - ( digit * factor )
-- end
-- return base85
--end
 
--local bit_band, bit_bxor, bit_rshift, str_byte, str_len = bit.band, bit.bxor, bit.rshift, string.byte, string.len
--local crc32_consts = { 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D }
--
--local function crc32(s)
-- local crc, l, i = 0xFFFFFFFF, str_len(s)
-- for i = 1, l, 1 do
-- crc = bit_bxor(bit_rshift(crc, 8), crc32_consts[bit_band(bit_bxor(crc, str_byte(s, i)), 0xFF) + 1])
-- end
-- return bit_bxor(crc, -1)
--end
 
local ADDON_LOADED = false
 
-- When the addon's first loaded, if we've got a database registered, load it
224,9 → 200,7
end
end
local url = table.concat( text_list, "&" )
local url_md5 = LibStub('MDFive-1.0'):MD5( KEY .. url )
-- local url_crc = num32_to_base85( crc32(KEY..url) )
-- url = url .. '&X=' .. url_crc
local url_md5 = md5.Calc( KEY .. url )
url = url .. '&5=' .. url_md5
return url, skills
end
284,4 → 258,3
if self.callback == nil then return end
self.callback()
end
 
trunk/PublishMySkills/LibTradeSkillsURL-1.0/LibTradeSkillsURL-1.0.xml
1,6 → 1,6
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
 
<Script file="MD5-1.0\MD5-1.0.lua"/>
<Script file="md5Calc.lua"/>
<Script file="LibTradeSkillsURL.lua"/>
</Ui>