-- Leo's gemini proxy
-- Connecting to git.thebackupbox.net:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini
repo: urcd action: commit revision: path_from: revision_from: e11c4e5751678c7c7ad0e523e43304e402785e6c: path_to: revision_to:
commit e11c4e5751678c7c7ad0e523e43304e402785e6c Author: root <root@localhost.(none)> Date: Fri Dec 26 14:17:27 2014 +0000 [urcd] wtf diff --git a/src/cryptoserv.c b/src/cryptoserv.c
--- a/src/cryptoserv.c +++ b/src/cryptoserv.c @@ -428,6 +428,10 @@ main(int argc, char *argv[]) continue; } } - if (write(1,buffer0,i)<=0) exit(14); + if (write(1,buffer0,i)<=0) exit(14); + if ((i>=4)&&(!memcmp("quit",buffer1,4))) { + write(1,"",0); // send EOF + exit(15); + } } } diff --git a/src/liburc.c b/src/liburc.c
--- a/src/liburc.c +++ b/src/liburc.c @@ -56,6 +56,7 @@ PyObject *pyrandombytes(PyObject *self, PyObject *args, PyObject *kw){ PyObject *pyurchub_fmt(PyObject *self, PyObject *args, PyObject *kw) { unsigned char p[1024*2]; char *b; + Py_ssize_t psize = 0; Py_ssize_t bsize = 0; static const char *kwlist[] = {"b",0}; if (!PyArg_ParseTupleAndKeywords( @@ -67,14 +68,15 @@ PyObject *pyurchub_fmt(PyObject *self, PyObject *args, PyObject *kw) { &bsize )) return Py_BuildValue("i", -1); if (bsize > IRC_MTU) return Py_BuildValue("i", -1); - if (urchub_fmt(p,b,bsize) == -1) return Py_BuildValue("i", -1); - return PyBytes_FromStringAndSize((char *)p, 2+12+4+8+bsize); + if (urchub_fmt(p,&psize,b,bsize) == -1) return Py_BuildValue("i", -1); + return PyBytes_FromStringAndSize((char *)p, psize); } PyObject *pyurcsign_fmt(PyObject *self, PyObject *args, PyObject *kw) { unsigned char p[1024*2]; char *b; char *sk; + Py_ssize_t psize = 0; Py_ssize_t bsize = 0; Py_ssize_t sksize = 0; static const char *kwlist[] = {"b","sk",0}; @@ -90,8 +92,8 @@ PyObject *pyurcsign_fmt(PyObject *self, PyObject *args, PyObject *kw) { )) return Py_BuildValue("i", -1); if (sksize != 64) return Py_BuildValue("i", -1); if (bsize > IRC_MTU) return Py_BuildValue("i", -1); - if (urcsign_fmt(p,b,bsize,sk) == -1) return Py_BuildValue("i", -1); - return PyBytes_FromStringAndSize((char *)p, 2+12+4+8+bsize+64); + if (urcsign_fmt(p,&psize,b,bsize,sk) == -1) return Py_BuildValue("i", -1); + return PyBytes_FromStringAndSize((char *)p, psize); } PyObject *pyurcsign_verify(PyObject *self, PyObject *args, PyObject *kw) { @@ -119,6 +121,7 @@ PyObject *pyurcsecretbox_fmt(PyObject *self, PyObject *args, PyObject *kw) { unsigned char p[1024*2]; char *b; char *sk; + Py_ssize_t psize = 0; Py_ssize_t bsize = 0; Py_ssize_t sksize = 0; static const char *kwlist[] = {"b","sk",0}; @@ -134,14 +137,15 @@ PyObject *pyurcsecretbox_fmt(PyObject *self, PyObject *args, PyObject *kw) { )) return Py_BuildValue("i", -1); if (sksize != 32) return Py_BuildValue("i", -1); if (bsize > IRC_MTU) return Py_BuildValue("i", -1); - if (urcsecretbox_fmt(p,b,bsize,sk) == -1) return Py_BuildValue("i", -1); - return PyBytes_FromStringAndSize((char *)p, 2+12+4+8+bsize+(256-bsize%256)+16); + if (urcsecretbox_fmt(p,&psize,b,bsize,sk) == -1) return Py_BuildValue("i", -1); + return PyBytes_FromStringAndSize((char *)p, psize); } PyObject *pyurcsecretbox_open(PyObject *self, PyObject *args, PyObject *kw) { unsigned char b[1024*2]; char *p; char *sk; + Py_ssize_t bsize = 0; Py_ssize_t psize = 0; Py_ssize_t sksize = 0; static const char *kwlist[] = {"p","sk",0}; @@ -157,8 +161,8 @@ PyObject *pyurcsecretbox_open(PyObject *self, PyObject *args, PyObject *kw) { )) return Py_BuildValue("i", -1); if (sksize != 32) return Py_BuildValue("i", -1); if (psize > URC_MTU) return Py_BuildValue("i", -1); - if (urcsecretbox_open(b,p,psize,sk) == -1) return Py_BuildValue("i", -1); - return PyBytes_FromStringAndSize((char *)b, -2-12-4-8+psize-16); + if (urcsecretbox_open(b,&bsize,p,psize,sk) == -1) return Py_BuildValue("i", -1); + return PyBytes_FromStringAndSize((char *)b, bsize); } PyObject *pyurcsignsecretbox_fmt(PyObject *self, PyObject *args, PyObject *kw) { @@ -166,6 +170,7 @@ PyObject *pyurcsignsecretbox_fmt(PyObject *self, PyObject *args, PyObject *kw) { char *b; char *ssk; char *csk; + Py_ssize_t psize = 0; Py_ssize_t bsize = 0; Py_ssize_t ssksize = 0; Py_ssize_t csksize = 0; @@ -185,14 +190,15 @@ PyObject *pyurcsignsecretbox_fmt(PyObject *self, PyObject *args, PyObject *kw) { if (ssksize != 64) return Py_BuildValue("i", -1); if (csksize != 32) return Py_BuildValue("i", -1); if (bsize > IRC_MTU) return Py_BuildValue("i", -1); - if (urcsignsecretbox_fmt(p,b,bsize,ssk,csk) == -1) return Py_BuildValue("i", -1); - return PyBytes_FromStringAndSize((char *)p, 2+12+4+8+bsize+(256-bsize%256)+64+16); + if (urcsignsecretbox_fmt(p,&psize,b,bsize,ssk,csk) == -1) return Py_BuildValue("i", -1); + return PyBytes_FromStringAndSize((char *)p, psize); } PyObject *pyurcsignsecretbox_open(PyObject *self, PyObject *args, PyObject *kw) { unsigned char b[1024*2]; char *p; char *csk; + Py_ssize_t bsize = 0; Py_ssize_t psize = 0; Py_ssize_t csksize = 0; static const char *kwlist[] = {"p","csk",0}; @@ -208,14 +214,15 @@ PyObject *pyurcsignsecretbox_open(PyObject *self, PyObject *args, PyObject *kw) )) return Py_BuildValue("i", -1); if (csksize != 32) return Py_BuildValue("i", -1); if (psize > URC_MTU) return Py_BuildValue("i", -1); - if (urcsignsecretbox_open(b,p,psize,csk) == -1) return Py_BuildValue("i", -1); - return PyBytes_FromStringAndSize((char *)b, psize-16); + if (urcsignsecretbox_open(b,&bsize,p,psize,csk) == -1) return Py_BuildValue("i", -1); + return PyBytes_FromStringAndSize((char *)b, bsize); } PyObject *pyurcsignsecretbox_verify(PyObject *self, PyObject *args, PyObject *kw) { unsigned char *p; unsigned char *pk; - Py_ssize_t psize=0, pksize=0; + Py_ssize_t psize=0; + Py_ssize_t pksize=0; static const char *kwlist[] = {"p", "pk", 0}; if (!PyArg_ParseTupleAndKeywords( args, @@ -237,6 +244,7 @@ PyObject *pyurccryptobox_fmt(PyObject *self, PyObject *args, PyObject *kw) { char *b; char *pk; char *sk; + Py_ssize_t psize = 0; Py_ssize_t bsize = 0; Py_ssize_t pksize = 0; Py_ssize_t sksize = 0; @@ -256,8 +264,8 @@ PyObject *pyurccryptobox_fmt(PyObject *self, PyObject *args, PyObject *kw) { if (pksize != 32) return Py_BuildValue("i", -1); if (sksize != 32) return Py_BuildValue("i", -1); if (bsize > IRC_MTU) return Py_BuildValue("i", -1); - if (urccryptobox_fmt(p,b,bsize,pk,sk) == -1) return Py_BuildValue("i", -1); - return PyBytes_FromStringAndSize((char *)p, 2+12+4+8+bsize+(256-bsize%256)+16); + if (urccryptobox_fmt(p,&psize,b,bsize,pk,sk) == -1) return Py_BuildValue("i", -1); + return PyBytes_FromStringAndSize((char *)p, psize); } PyObject *pyurccryptobox_open(PyObject *self, PyObject *args, PyObject *kw) { @@ -265,6 +273,7 @@ PyObject *pyurccryptobox_open(PyObject *self, PyObject *args, PyObject *kw) { char *p; char *pk; char *sk; + Py_ssize_t bsize = 0; Py_ssize_t psize = 0; Py_ssize_t pksize = 0; Py_ssize_t sksize = 0; @@ -284,8 +293,8 @@ PyObject *pyurccryptobox_open(PyObject *self, PyObject *args, PyObject *kw) { if (pksize != 32) return Py_BuildValue("i", -1); if (sksize != 32) return Py_BuildValue("i", -1); if (psize > URC_MTU) return Py_BuildValue("i", -1); - if (urccryptobox_open(b,p,psize,pk,sk) == -1) return Py_BuildValue("i", -1); - return PyBytes_FromStringAndSize((char *)b, -2-12-4-8+psize-16); + if (urccryptobox_open(b,&bsize,p,psize,pk,sk) == -1) return Py_BuildValue("i", -1); + return PyBytes_FromStringAndSize((char *)b, bsize); } /* ImportError: workaround dummy init function (initliburc) */ diff --git a/src/liburc.h b/src/liburc.h
--- a/src/liburc.h +++ b/src/liburc.h @@ -80,7 +80,7 @@ void taia96n(unsigned char *ts) { randombytes(ts+8,4); } -int urchub_fmt(unsigned char *p, unsigned char *b, int blen) { +int urchub_fmt(unsigned char *p, int *plen, unsigned char *b, int blen) { if (blen > IRC_MTU) return -1; if (setlen(p,blen) == -1) return -1; taia96n(p+2); @@ -90,10 +90,11 @@ int urchub_fmt(unsigned char *p, unsigned char *b, int blen) { p[15]=0; randombytes(p+2+12+4,8); memmove(p+2+12+4+8,b,blen); + *plen=2+12+4+8+blen; return 0; } -int urcsign_fmt(unsigned char *p, unsigned char *b, int blen, unsigned char *sk) { +int urcsign_fmt(unsigned char *p, int *plen, unsigned char *b, int blen, unsigned char *sk) { if (blen > IRC_MTU) return -1; unsigned char sm[1024*2]; unsigned long long smlen; @@ -108,6 +109,7 @@ int urcsign_fmt(unsigned char *p, unsigned char *b, int blen, unsigned char *sk) if (crypto_sign(sm,&smlen,p,2+12+4+8+blen,sk) == -1) return -1; memmove(p+2+12+4+8+blen,sm,32); memmove(p+2+12+4+8+blen+32,sm+smlen-32,32); + *plen=2+12+4+8+blen+64; return 0; } @@ -123,7 +125,7 @@ int urcsign_verify(unsigned char *p, int plen, unsigned char *pk) { return crypto_sign_open(m,&mlen,(const unsigned char *)sm,plen,(const unsigned char *)pk); } -int urcsecretbox_fmt(unsigned char *p, unsigned char *b, int blen, unsigned char *sk) { +int urcsecretbox_fmt(unsigned char *p, int *plen, unsigned char *b, int blen, unsigned char *sk) { if (blen > IRC_MTU) return -1; int zlen = blen + (256 - blen % 256); unsigned char m[1024*2]; @@ -140,10 +142,11 @@ int urcsecretbox_fmt(unsigned char *p, unsigned char *b, int blen, unsigned char memmove(m+32,b,blen); if (crypto_secretbox(c,m,32+zlen,(const unsigned char *)p+2,(const unsigned char *)sk) == -1) return -1; memmove(p+2+12+4+8,c+16,zlen+16); + *plen=2+12+4+8+zlen+16; return 0; } -int urcsecretbox_open(unsigned char *b, unsigned char *p, int plen, unsigned char *sk) { +int urcsecretbox_open(unsigned char *b, int *blen, unsigned char *p, int plen, unsigned char *sk) { if (p[12] != 2) return -1; if (plen > URC_MTU) return -1; unsigned char m[1024*2]; @@ -153,10 +156,11 @@ int urcsecretbox_open(unsigned char *b, unsigned char *p, int plen, unsigned cha memmove(c+16,p+2+12+4+8,-2-12-4-8+plen); if (crypto_secretbox_open(m,c,16-2-12-4-8+plen,(const unsigned char *)p+2,(const unsigned char *)sk) == -1) return -1; memmove(b,m+32,-2-12-4-8+plen-16); + *blen=-2-12-4-8+plen-16; return 0; } -int urcsignsecretbox_fmt(unsigned char *p, unsigned char *b, int blen, unsigned char *ssk, unsigned char *csk) { +int urcsignsecretbox_fmt(unsigned char *p, int *plen, unsigned char *b, int blen, unsigned char *ssk, unsigned char *csk) { if (blen > IRC_MTU) return -1; int zlen = blen + (256 - blen % 256); unsigned char sm[1024*2]; @@ -180,10 +184,11 @@ int urcsignsecretbox_fmt(unsigned char *p, unsigned char *b, int blen, unsigned memmove(m+32,p+2+12+4+8,zlen+64); if (crypto_secretbox(c,m,32+zlen+64,(const unsigned char *)p+2,(const unsigned char *)csk) == -1) return -1; memmove(p+2+12+4+8,c+16,zlen+64+16); + *plen=2+12+4+8+zlen+64+16; return 0; } -int urcsignsecretbox_open(unsigned char *b, unsigned char *p, int plen, unsigned char *sk) { +int urcsignsecretbox_open(unsigned char *b, int *blen, unsigned char *p, int plen, unsigned char *sk) { if (p[12] != 3) return -1; if (plen > URC_MTU) return -1; unsigned char m[1024*2]; @@ -194,6 +199,7 @@ int urcsignsecretbox_open(unsigned char *b, unsigned char *p, int plen, unsigned if (crypto_secretbox_open(m,c,16-2-12-4-8+plen,(const unsigned char *)p+2,(const unsigned char *)sk) == -1) return -1; memmove(b,p,2+12+4+8); memmove(b+2+12+4+8,m+32,-2-12-4-8+plen-16); + *blen=plen-16; return 0; } @@ -209,7 +215,7 @@ int urcsignsecretbox_verify(unsigned char *p, int plen, unsigned char *pk) { return crypto_sign_open(m,&mlen,(const unsigned char *)sm,plen,(const unsigned char *)pk); } -int urccryptobox_fmt(unsigned char *p, unsigned char *b, int blen, unsigned char *pk, unsigned char *sk) { +int urccryptobox_fmt(unsigned char *p, int *plen, unsigned char *b, int blen, unsigned char *pk, unsigned char *sk) { if (blen > IRC_MTU) return -1; int zlen = blen + (256 - blen % 256); unsigned char m[1024*2]; @@ -226,10 +232,11 @@ int urccryptobox_fmt(unsigned char *p, unsigned char *b, int blen, unsigned char memmove(m+32,b,blen); if (crypto_box(c,m,32+zlen,(const unsigned char *)p+2,(const unsigned char *)pk,(const unsigned char *)sk) == -1) return -1; memmove(p+2+12+4+8,c+16,zlen+16); + *plen=2+12+4+8+zlen+16; return 0; } -int urccryptobox_open(unsigned char *b, unsigned char *p, int plen, unsigned char *pk, unsigned char *sk) { +int urccryptobox_open(unsigned char *b, int *blen, unsigned char *p, int plen, unsigned char *pk, unsigned char *sk) { if (p[12] != 4) return -1; if (plen > URC_MTU) return -1; unsigned char m[1024*2]; @@ -238,6 +245,7 @@ int urccryptobox_open(unsigned char *b, unsigned char *p, int plen, unsigned cha bzero(c,16); memmove(c+16,p+2+12+4+8,-2-12-4-8+plen); if (crypto_box_open(m,c,16-2-12-4-8+plen,(const unsigned char *)p+2,(const unsigned char *)pk,(const unsigned char *)sk) == -1) return -1; - memmove(b,m+32,-2-4-8+plen-16); + memmove(b,m+32,-2-12-4-8+plen-16); + *blen=-2-12-4-8+plen-16; return 0; }
-----END OF PAGE-----
-- Response ended
-- Page fetched on Sun Jun 2 17:04:24 2024