X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=sys%2Fman%2F2%2Fauthsrv;h=acaa7817f8f7426262627bd3f60e36608420f1e3;hb=bc1cc79225f0b006dd66d4fd81030d06f83bfca2;hp=70b1e7057007cc9cf5c9bc3a139cfc6df34622fe;hpb=d3f05df5d6839e179222cf691ab9a455044687ea;p=plan9front.git diff --git a/sys/man/2/authsrv b/sys/man/2/authsrv index 70b1e7057..acaa7817f 100644 --- a/sys/man/2/authsrv +++ b/sys/man/2/authsrv @@ -1,6 +1,6 @@ .TH AUTHSRV 2 .SH NAME -authdial, passtokey, nvcsum, readnvram, convT2M, convM2T, convTR2M, convM2TR, convA2M, convM2A, convPR2M, convM2PR, _asgetticket, _asrequest, _asgetresp, _asrdresp \- routines for communicating with authentication servers +authdial, passtokey, nvcsum, readnvram, convT2M, convM2T, convTR2M, convM2TR, convA2M, convM2A, convPR2M, convM2PR, _asgetticket, _asrequest, _asgetresp, _asrdresp, _asgetpakkey, authpak_hash, authpak_new, authpak_finish \- routines for communicating with authentication servers .SH SYNOPSIS .nf .PP @@ -15,7 +15,7 @@ authdial, passtokey, nvcsum, readnvram, convT2M, convM2T, convTR2M, convM2TR, co int authdial(char *netroot, char *ad); .PP .B -int passtokey(Authkey *key, char *password) +void passtokey(Authkey *key, char *password) .PP .B uchar nvcsum(void *mem, int len) @@ -58,6 +58,18 @@ int _asgetresp(int fd, Ticket *t, Authenticator *a, Authkey *key) .PP .B int _asrdresp(int fd, char *buf, int len) +.PP +.B +int _asgetpakkey(int fd, Ticketreq *tr, Authkey *a) +.PP +.B +void authpak_hash(Authkey *k, char *u) +.PP +.B +void authpak_new(PAKpriv *p, Authkey *k, uchar y[PAKYLEN], int isclient) +.PP +.B +int authpak_finish(PAKpriv *p, Authkey *k, uchar y[PAKYLEN]) .SH DESCRIPTION .I Authdial dials an authentication server over the @@ -109,10 +121,6 @@ into a set of cryptographic keys and stores them in the .I Authkey structure .IR key . -It returns 0 if -.I password -could not be converted, -and 1 otherwise. .PP .I Readnvram reads authentication information into the structure: @@ -135,6 +143,9 @@ struct Nvrsafe uchar authidsum; char authdom[DOMLEN]; /* auth domain, e.g., cs.bell-labs.com */ uchar authdomsum; + + uchar aesmachkey[AESKEYLEN]; + uchar aesmachsum; }; .EE .PP @@ -249,6 +260,64 @@ The routine receives either a character array or an error string. On error, it sets errstr and returns -1. If successful, it returns the number of bytes received. +.PP +.I Authpak_hash +prepares a +.I Authkey +structure for a password authenticated key exchange (see +.IR authsrv (6)) +by calculating the pakhash from a user's aeskey and id +.IR u . +The fuction hashes the password derived aeskey and user id together +using hmac_sha256 and maps the result into two elliptic curve points +PN/PM on the Ed448-goldielocks curve using elligator2. +.PP +.I Authpak_new +generates a new elliptic curve diffie-hellman key pair for a password +authenticated key exchange from a previously hashed +.I Authkey +structure +.IR k . +The randomly generated private key is returned in the +.I PAKpriv +structure passed in +.IR p , +while the pakhash encrytped public key is returned in +.IR y . +.PP +.I Authpak_finish +completes a password authenticated key exchange, taking the other +sides pakhash encrypted public key +.I y +and our private key +.I p +returning the shared secret pakkey in the +.I Authkey +structure +.IR k . +The function returns zero on success or non-zero on failure (malformed +public key). +.PP +The function +.I _asgetpakkey +establishes a new shared pakkey between the us and the authentication server +for ticket encryption; using the functions above; taking a previously hashed +.I Authkey +.I a +and +.I Ticketreq +.I tr +and returns the shared pakkey in the +.I Authkey +structure. It is usually called before +.I _asrequest +right after +.IR authdial +to negotiate bruteforce resistant ticket encryption for the +ticket request that follows (see +.IR authsrv (6)). +Returns zero on success, or non-zero on error (authenticatoin +server does not support the AuthPAK request or when we got a malformed public key). .SH SOURCE .B /sys/src/libauthsrv .SH SEE ALSO