RSApub* readpublickey(Biobuf *b, char **sp) { char *s; RSApub *key; key = rsapuballoc(); if(key == nil) return nil; for(;;){ if((s = Brdstr(b, '\n', 1)) == nil){ rsapubfree(key); return nil; } if(s[0]=='#'){ free(s); continue; } if(parsepubkey(s, key, sp, 10)==0 || parsepubkey(s, key, sp, 16)==0) return key; fprint(2, "warning: skipping line '%s'; cannot parse\n", s); free(s); } }
static PyObject *sendAuthChallenge(PyObject *self, PyObject *args) { //cn, domain, reqid, publicKey //return answer to challenge int cn; char *domain; uint id; char *publicKey; server::clientinfo *ci; if(!PyArg_ParseTuple(args, "isIs", &cn, &domain, &id, &publicKey)) return 0; ci = server::getinfo(cn); if(!ci) { PyErr_SetString(PyExc_ValueError, "Invalid cn specified"); return 0; } uint seed[3] = { randomMT(), randomMT(), randomMT() }; vector<char> challengeBuf; vector<char> answerBuf; void *parsedKey = parsepubkey(publicKey); genchallengestr(parsedKey, seed, sizeof(seed), challengeBuf, answerBuf); freepubkey(parsedKey); sendf(ci->clientnum, 1, "risis", N_AUTHCHAL, domain, id, challengeBuf.getbuf()); return Py_BuildValue("s", answerBuf.getbuf()); }
void adduser(char *name, char *pubkey) { name = newstring(name); userinfo &u = users[name]; u.name = name; u.pubkey = parsepubkey(pubkey); }
void addauth(char *name, char *flags, char *pubkey) { name = newstring(name); authuser &u = authusers[name]; u.name = name; u.flags = newstring(flags); u.pubkey = parsepubkey(pubkey); }
RSApub* readpublickey(Biobuf *b, char **sp) { char *s; RSApub *key; key = emalloc9p(sizeof(RSApub)); if(key == nil) return nil; for (; (s = Brdstr(b, '\n', 1)) != nil; free(s)) if(s[0] != '#'){ if(parsepubkey(s, key, sp, 10) == 0 || parsepubkey(s, key, sp, 16) == 0) return key; fprint(2, "warning: skipping line '%s'; cannot parse\n", s); } free(key); return nil; }
void addauth(char *name, char *flags, char *pubkey, char *email) { string authname; if(filterstring(authname, name, true, true, true, true, 100)) name = authname; if(authusers.access(name)) { conoutf("auth handle '%s' already exists, skipping (%s)", name, email); return; } name = newstring(name); authuser &u = authusers[name]; u.name = name; u.flags = newstring(flags); u.pubkey = parsepubkey(pubkey); u.email = newstring(email); }
key(const char * stringform) :m_printed(stringform) { m_key = parsepubkey(stringform); }