/*
 * This is just a repository for a password.
 * We don't want to encourage this, there's
 * no server side.
 *
 * Client:
 *	start proto=pass ...
 *	read password
 */

#include "std.h"
#include "dat.h"

static int
passproto(Conv *c)
{
	Key *k;
	
	k = keyfetch(c, "%A", c->attr);
	if(k == nil)
		return -1;
	c->state = "write";
	convprint(c, "%q %q", 
		strfindattr(k->attr, "user"),
		strfindattr(k->privattr, "!password"));
	return 0;
}

static Role passroles[] = {
	"client",	passproto,
	0
};

Proto pass =
{
	"pass",
	passroles,
	"user? !password?",
	nil,
	nil
};
