1*b1c161c2SDavid du Colombier /* readnvram */
2*b1c161c2SDavid du Colombier #include <u.h>
3*b1c161c2SDavid du Colombier #include <libc.h>
4*b1c161c2SDavid du Colombier #include <auth.h>
5*b1c161c2SDavid du Colombier #include <authsrv.h>
6*b1c161c2SDavid du Colombier
7*b1c161c2SDavid du Colombier void
main(int,char **)8*b1c161c2SDavid du Colombier main(int, char **)
9*b1c161c2SDavid du Colombier {
10*b1c161c2SDavid du Colombier int i;
11*b1c161c2SDavid du Colombier Nvrsafe safe;
12*b1c161c2SDavid du Colombier
13*b1c161c2SDavid du Colombier quotefmtinstall();
14*b1c161c2SDavid du Colombier
15*b1c161c2SDavid du Colombier memset(&safe, 0, sizeof safe);
16*b1c161c2SDavid du Colombier /*
17*b1c161c2SDavid du Colombier * readnvram can return -1 meaning nvram wasn't written,
18*b1c161c2SDavid du Colombier * but safe still holds good data.
19*b1c161c2SDavid du Colombier */
20*b1c161c2SDavid du Colombier if(readnvram(&safe, 0) < 0 && safe.authid[0] == '\0')
21*b1c161c2SDavid du Colombier sysfatal("readnvram: %r");
22*b1c161c2SDavid du Colombier
23*b1c161c2SDavid du Colombier /*
24*b1c161c2SDavid du Colombier * only use nvram key if it is non-zero
25*b1c161c2SDavid du Colombier */
26*b1c161c2SDavid du Colombier for(i = 0; i < DESKEYLEN; i++)
27*b1c161c2SDavid du Colombier if(safe.machkey[i] != 0)
28*b1c161c2SDavid du Colombier break;
29*b1c161c2SDavid du Colombier if(i == DESKEYLEN)
30*b1c161c2SDavid du Colombier sysfatal("bad key");
31*b1c161c2SDavid du Colombier
32*b1c161c2SDavid du Colombier fmtinstall('H', encodefmt);
33*b1c161c2SDavid du Colombier print("key proto=p9sk1 user=%q dom=%q !hex=%.*H !password=______\n",
34*b1c161c2SDavid du Colombier safe.authid, safe.authdom, DESKEYLEN, safe.machkey);
35*b1c161c2SDavid du Colombier exits(0);
36*b1c161c2SDavid du Colombier }
37