xref: /freebsd/contrib/ntp/libntp/authusekey.c (revision fcb560670601b2a4d87bb31d7531c8dcc37ee71b)
1 /*
2  * authusekey - decode a key from ascii and use it
3  */
4 #include <stdio.h>
5 #include <ctype.h>
6 
7 #include "ntp_types.h"
8 #include "ntp_string.h"
9 #include "ntp_stdlib.h"
10 
11 /*
12  * Types of ascii representations for keys.  "Standard" means a 64 bit
13  * hex number in NBS format, i.e. with the low order bit of each byte
14  * a parity bit.  "NTP" means a 64 bit key in NTP format, with the
15  * high order bit of each byte a parity bit.  "Ascii" means a 1-to-8
16  * character string whose ascii representation is used as the key.
17  */
18 
19 #define	KEY_TYPE_MD5	4
20 
21 int
22 authusekey(
23 	keyid_t keyno,
24 	int keytype,
25 	const u_char *str
26 	)
27 {
28 	const u_char *cp;
29 	int len;
30 
31 	cp = str;
32 	len = strlen((const char *)cp);
33 	if (len == 0)
34 	    return 0;
35 
36 	switch(keytype) {
37 	    case KEY_TYPE_MD5:
38 		MD5auth_setkey(keyno, str, (int)strlen((const char *)str));
39 		break;
40 
41 	    default:
42 		/* Oh, well */
43 		return 0;
44 	}
45 
46 	return 1;
47 }
48