]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/ntp/libntp/authusekey.c
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / ntp / libntp / authusekey.c
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 }