2016-04-11 18:23:34 +00:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
ANAMELEN= 28, /* name max size in previous proto */
|
|
|
|
AERRLEN= 64, /* errstr max size in previous proto */
|
|
|
|
DOMLEN= 48, /* authentication domain name length */
|
|
|
|
DESKEYLEN= 7, /* encrypt/decrypt des key length */
|
|
|
|
AESKEYLEN= 16, /* encrypt/decrypt aes key length */
|
|
|
|
|
|
|
|
CHALLEN= 8, /* plan9 sk1 challenge length */
|
|
|
|
NETCHLEN= 16, /* max network challenge length (used in AS protocol) */
|
|
|
|
CONFIGLEN= 14,
|
2016-08-04 08:38:20 +00:00
|
|
|
PASSWDLEN= 28,
|
2016-04-11 18:23:34 +00:00
|
|
|
SECRETLEN= 32, /* secret max size */
|
|
|
|
|
|
|
|
NONCELEN= 32,
|
|
|
|
|
|
|
|
KEYDBOFF= 8, /* bytes of random data at key file's start */
|
|
|
|
OKEYDBLEN= ANAMELEN+DESKEYLEN+4+2, /* old key file entry length */
|
|
|
|
KEYDBLEN= OKEYDBLEN+SECRETLEN, /* key file entry length */
|
|
|
|
OMD5LEN= 16,
|
|
|
|
|
|
|
|
/* AuthPAK constants */
|
|
|
|
PAKKEYLEN= 32,
|
|
|
|
PAKSLEN= (448+7)/8, /* ed448 scalar */
|
|
|
|
PAKPLEN= 4*PAKSLEN, /* point in extended format X,Y,Z,T */
|
|
|
|
PAKHASHLEN= 2*PAKPLEN, /* hashed points PM,PN */
|
|
|
|
PAKXLEN= PAKSLEN, /* random scalar secret key */
|
|
|
|
PAKYLEN= PAKSLEN, /* decaf encoded public key */
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct Authkey Authkey;
|
|
|
|
struct Authkey
|
|
|
|
{
|
|
|
|
char des[DESKEYLEN]; /* DES key from password */
|
|
|
|
uchar aes[AESKEYLEN]; /* AES key from password */
|
|
|
|
uchar pakkey[PAKKEYLEN]; /* shared key from AuthPAK exchange (see authpak_finish()) */
|
|
|
|
uchar pakhash[PAKHASHLEN]; /* secret hash from AES key and user name (see authpak_hash()) */
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* convert ascii password to auth key
|
|
|
|
*/
|
|
|
|
extern void passtokey(Authkey*, char*);
|
|
|
|
|
|
|
|
extern void passtodeskey(char key[DESKEYLEN], char *p);
|
|
|
|
extern void passtoaeskey(uchar key[AESKEYLEN], char *p);
|