author | Matthew Wild <mwild1@gmail.com> |
Mon, 02 Feb 2009 18:03:18 +0000 | |
changeset 766 | 433a5226267f |
parent 601 | 6cb908ef01c8 |
child 896 | 2c0b9e3c11c3 |
permissions | -rw-r--r-- |
766
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
1 |
/* Prosody IM v0.3 |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
2 |
-- Copyright (C) 2008-2009 Matthew Wild |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
3 |
-- Copyright (C) 2008-2009 Waqas Hussain |
520 | 4 |
-- |
766
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
5 |
-- This project is MIT/X11 licensed. Please see the |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
6 |
-- COPYING file in the source package for more information. |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
7 |
-- |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
8 |
*/ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
9 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
10 |
/* |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
11 |
* encodings.c |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
12 |
* Lua library for base64, stringprep and idna encodings |
520 | 13 |
*/ |
14 |
||
766
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
15 |
// Newer MSVC compilers deprecate strcpy as unsafe, but we use it in a safe way |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
16 |
#define _CRT_SECURE_NO_DEPRECATE |
520 | 17 |
|
766
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
18 |
#include <string.h> |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
19 |
#include <stdlib.h> |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
20 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
21 |
#include "lua.h" |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
22 |
#include "lauxlib.h" |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
23 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
24 |
/***************** BASE64 *****************/ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
25 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
26 |
static const char code[]= |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
27 |
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
28 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
29 |
static void base64_encode(luaL_Buffer *b, unsigned int c1, unsigned int c2, unsigned int c3, int n) |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
30 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
31 |
unsigned long tuple=c3+256UL*(c2+256UL*c1); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
32 |
int i; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
33 |
char s[4]; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
34 |
for (i=0; i<4; i++) { |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
35 |
s[3-i] = code[tuple % 64]; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
36 |
tuple /= 64; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
37 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
38 |
for (i=n+1; i<4; i++) s[i]='='; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
39 |
luaL_addlstring(b,s,4); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
40 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
41 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
42 |
static int Lbase64_encode(lua_State *L) /** encode(s) */ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
43 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
44 |
size_t l; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
45 |
const unsigned char *s=(const unsigned char*)luaL_checklstring(L,1,&l); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
46 |
luaL_Buffer b; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
47 |
int n; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
48 |
luaL_buffinit(L,&b); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
49 |
for (n=l/3; n--; s+=3) base64_encode(&b,s[0],s[1],s[2],3); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
50 |
switch (l%3) |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
51 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
52 |
case 1: base64_encode(&b,s[0],0,0,1); break; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
53 |
case 2: base64_encode(&b,s[0],s[1],0,2); break; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
54 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
55 |
luaL_pushresult(&b); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
56 |
return 1; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
57 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
58 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
59 |
static void base64_decode(luaL_Buffer *b, int c1, int c2, int c3, int c4, int n) |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
60 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
61 |
unsigned long tuple=c4+64L*(c3+64L*(c2+64L*c1)); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
62 |
char s[3]; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
63 |
switch (--n) |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
64 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
65 |
case 3: s[2]=(char) tuple; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
66 |
case 2: s[1]=(char) (tuple >> 8); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
67 |
case 1: s[0]=(char) (tuple >> 16); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
68 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
69 |
luaL_addlstring(b,s,n); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
70 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
71 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
72 |
static int Lbase64_decode(lua_State *L) /** decode(s) */ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
73 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
74 |
size_t l; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
75 |
const char *s=luaL_checklstring(L,1,&l); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
76 |
luaL_Buffer b; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
77 |
int n=0; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
78 |
char t[4]; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
79 |
luaL_buffinit(L,&b); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
80 |
for (;;) |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
81 |
{ |
601
6cb908ef01c8
Fixed util.encodings.base64.decode to not truncate results when encountering an '=' before the end of the given input.
Waqas Hussain <waqas20@gmail.com>
parents:
520
diff
changeset
|
82 |
int c=*s++; |
766
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
83 |
switch (c) |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
84 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
85 |
const char *p; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
86 |
default: |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
87 |
p=strchr(code,c); if (p==NULL) return 0; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
88 |
t[n++]= (char) (p-code); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
89 |
if (n==4) |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
90 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
91 |
base64_decode(&b,t[0],t[1],t[2],t[3],4); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
92 |
n=0; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
93 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
94 |
break; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
95 |
case '=': |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
96 |
switch (n) |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
97 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
98 |
case 1: base64_decode(&b,t[0],0,0,0,1); break; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
99 |
case 2: base64_decode(&b,t[0],t[1],0,0,2); break; |
601
6cb908ef01c8
Fixed util.encodings.base64.decode to not truncate results when encountering an '=' before the end of the given input.
Waqas Hussain <waqas20@gmail.com>
parents:
520
diff
changeset
|
100 |
case 3: base64_decode(&b,t[0],t[1],t[2],0,3); break; |
6cb908ef01c8
Fixed util.encodings.base64.decode to not truncate results when encountering an '=' before the end of the given input.
Waqas Hussain <waqas20@gmail.com>
parents:
520
diff
changeset
|
101 |
} |
6cb908ef01c8
Fixed util.encodings.base64.decode to not truncate results when encountering an '=' before the end of the given input.
Waqas Hussain <waqas20@gmail.com>
parents:
520
diff
changeset
|
102 |
n=0; |
766
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
103 |
break; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
104 |
case 0: |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
105 |
luaL_pushresult(&b); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
106 |
return 1; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
107 |
case '\n': case '\r': case '\t': case ' ': case '\f': case '\b': |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
108 |
break; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
109 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
110 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
111 |
return 0; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
112 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
113 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
114 |
static const luaL_Reg Reg_base64[] = |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
115 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
116 |
{ "encode", Lbase64_encode }, |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
117 |
{ "decode", Lbase64_decode }, |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
118 |
{ NULL, NULL } |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
119 |
}; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
120 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
121 |
/***************** STRINGPREP *****************/ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
122 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
123 |
#include <stringprep.h> |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
124 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
125 |
static int stringprep_prep(lua_State *L, const Stringprep_profile *profile) |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
126 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
127 |
size_t len; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
128 |
const char *s = luaL_checklstring(L, 1, &len); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
129 |
char string[1024]; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
130 |
int ret; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
131 |
if (len >= 1024) { |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
132 |
lua_pushnil(L); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
133 |
return 1; // TODO return error message |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
134 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
135 |
strcpy(string, s); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
136 |
ret = stringprep(string, 1024, 0, profile); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
137 |
if (ret == STRINGPREP_OK) { |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
138 |
lua_pushstring(L, string); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
139 |
return 1; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
140 |
} else { |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
141 |
lua_pushnil(L); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
142 |
return 1; // TODO return error message |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
143 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
144 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
145 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
146 |
#define MAKE_PREP_FUNC(myFunc, prep) \ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
147 |
static int myFunc(lua_State *L) { return stringprep_prep(L, prep); } |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
148 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
149 |
MAKE_PREP_FUNC(Lstringprep_nameprep, stringprep_nameprep) /** stringprep.nameprep(s) */ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
150 |
MAKE_PREP_FUNC(Lstringprep_nodeprep, stringprep_xmpp_nodeprep) /** stringprep.nodeprep(s) */ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
151 |
MAKE_PREP_FUNC(Lstringprep_resourceprep, stringprep_xmpp_resourceprep) /** stringprep.resourceprep(s) */ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
152 |
MAKE_PREP_FUNC(Lstringprep_saslprep, stringprep_saslprep) /** stringprep.saslprep(s) */ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
153 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
154 |
static const luaL_Reg Reg_stringprep[] = |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
155 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
156 |
{ "nameprep", Lstringprep_nameprep }, |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
157 |
{ "nodeprep", Lstringprep_nodeprep }, |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
158 |
{ "resourceprep", Lstringprep_resourceprep }, |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
159 |
{ "saslprep", Lstringprep_saslprep }, |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
160 |
{ NULL, NULL } |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
161 |
}; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
162 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
163 |
/***************** IDNA *****************/ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
164 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
165 |
#include <idna.h> |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
166 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
167 |
static int Lidna_to_ascii(lua_State *L) /** idna.to_ascii(s) */ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
168 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
169 |
size_t len; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
170 |
const char *s = luaL_checklstring(L, 1, &len); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
171 |
char* output = NULL; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
172 |
int ret = idna_to_ascii_8z(s, &output, 0); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
173 |
if (ret == IDNA_SUCCESS) { |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
174 |
lua_pushstring(L, output); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
175 |
if (output) free(output); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
176 |
return 1; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
177 |
} else { |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
178 |
lua_pushnil(L); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
179 |
if (output) free(output); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
180 |
return 1; // TODO return error message |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
181 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
182 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
183 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
184 |
static int Lidna_to_unicode(lua_State *L) /** idna.to_unicode(s) */ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
185 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
186 |
size_t len; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
187 |
const char *s = luaL_checklstring(L, 1, &len); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
188 |
char* output = NULL; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
189 |
int ret = idna_to_unicode_8z8z(s, &output, 0); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
190 |
if (ret == IDNA_SUCCESS) { |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
191 |
lua_pushstring(L, output); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
192 |
if (output) free(output); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
193 |
return 1; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
194 |
} else { |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
195 |
lua_pushnil(L); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
196 |
if (output) free(output); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
197 |
return 1; // TODO return error message |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
198 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
199 |
} |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
200 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
201 |
static const luaL_Reg Reg_idna[] = |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
202 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
203 |
{ "to_ascii", Lidna_to_ascii }, |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
204 |
{ "to_unicode", Lidna_to_unicode }, |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
205 |
{ NULL, NULL } |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
206 |
}; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
207 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
208 |
/***************** end *****************/ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
209 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
210 |
static const luaL_Reg Reg[] = |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
211 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
212 |
{ NULL, NULL } |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
213 |
}; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
214 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
215 |
LUALIB_API int luaopen_util_encodings(lua_State *L) |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
216 |
{ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
217 |
luaL_register(L, "encodings", Reg); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
218 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
219 |
lua_pushliteral(L, "base64"); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
220 |
lua_newtable(L); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
221 |
luaL_register(L, NULL, Reg_base64); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
222 |
lua_settable(L,-3); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
223 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
224 |
lua_pushliteral(L, "stringprep"); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
225 |
lua_newtable(L); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
226 |
luaL_register(L, NULL, Reg_stringprep); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
227 |
lua_settable(L,-3); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
228 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
229 |
lua_pushliteral(L, "idna"); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
230 |
lua_newtable(L); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
231 |
luaL_register(L, NULL, Reg_idna); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
232 |
lua_settable(L,-3); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
233 |
|
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
234 |
lua_pushliteral(L, "version"); /** version */ |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
235 |
lua_pushliteral(L, "-3.14"); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
236 |
lua_settable(L,-3); |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
237 |
return 1; |
433a5226267f
Licensing/version updates for some files (forgot to commit, doh...)
Matthew Wild <mwild1@gmail.com>
parents:
601
diff
changeset
|
238 |
} |