Esempio n. 1
0
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);
	}
}
Esempio n. 2
0
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());
}
Esempio n. 3
0
void adduser(char *name, char *pubkey)
{
    name = newstring(name);
    userinfo &u = users[name];
    u.name = name;
    u.pubkey = parsepubkey(pubkey);
}
Esempio n. 4
0
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);
}
Esempio n. 5
0
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;
}
Esempio n. 6
0
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);
}
Esempio n. 7
0
 key(const char * stringform)
  :m_printed(stringform)
 {
     m_key = parsepubkey(stringform);
 }