49 lines
1.5 KiB
C
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*);
|