jehanne/sys/src/cmd/auth/secstore/secstore.h

49 lines
1.5 KiB
C

/*
* This file is part of the UCB release of Plan 9. It is subject to the license
* terms in the LICENSE file found in the top-level directory of this
* distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
* part of the UCB release of Plan 9, including this file, may be copied,
* modified, propagated, or distributed except according to the terms contained
* in the LICENSE file.
*/
/* Portions of this file are Copyright (C) 9front's team.
* See /doc/license/9front-mit for details about the licensing.
* See http://git.9front.org/plan9front/plan9front/HEAD/info.html for a list of authors.
*/
#define LOG "secstore"
#define SECSTORE_DIR "/adm/secstore"
enum {
MAXFILESIZE = 10*1024*1024,
};
/* PW status bits */
enum {
Enabled = 1<<0,
STA = 1<<1, /* extra SecurID step */
};
typedef struct PW {
char *id; /* user id */
uint32_t expire; /* expiration time (epoch seconds) */
uint16_t status; /* Enabled, STA, ... */
uint16_t failed; /* number of failed login attempts */
char *other; /* other information, e.g. sponsor */
mpint *Hi; /* H(passphrase)^-1 mod p */
} PW;
void freePW(PW*);
PW *getPW(char*, int);
char *getpassm(char*);
int putPW(PW*);
char *validatefile(char*f);
/*
* *client: SConn, client name, passphrase
* *server: SConn, (partial) 1st msg, PW entry
* *setpass: Username, hashed passphrase, PW entry
*/
int PAKclient(SConn*, char*, char*, char**);
int PAKserver(SConn*, char*, char*, PW**);
char* PAK_Hi(char*, char*, mpint*, mpint*);