summaryrefslogtreecommitdiff
path: root/libntp/authusekey.c
diff options
context:
space:
mode:
Diffstat (limited to 'libntp/authusekey.c')
-rw-r--r--libntp/authusekey.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/libntp/authusekey.c b/libntp/authusekey.c
new file mode 100644
index 000000000000..40dd3737ddf2
--- /dev/null
+++ b/libntp/authusekey.c
@@ -0,0 +1,47 @@
+/*
+ * authusekey - decode a key from ascii and use it
+ */
+#include <stdio.h>
+#include <ctype.h>
+
+#include "ntp_types.h"
+#include "ntp_string.h"
+#include "ntp_stdlib.h"
+
+/*
+ * Types of ascii representations for keys. "Standard" means a 64 bit
+ * hex number in NBS format, i.e. with the low order bit of each byte
+ * a parity bit. "NTP" means a 64 bit key in NTP format, with the
+ * high order bit of each byte a parity bit. "Ascii" means a 1-to-8
+ * character string whose ascii representation is used as the key.
+ */
+
+#define KEY_TYPE_MD5 4
+
+int
+authusekey(
+ keyid_t keyno,
+ int keytype,
+ const u_char *str
+ )
+{
+ const u_char *cp;
+ int len;
+
+ cp = str;
+ len = strlen((const char *)cp);
+ if (len == 0)
+ return 0;
+
+ switch(keytype) {
+ case KEY_TYPE_MD5:
+ MD5auth_setkey(keyno, str, (int)strlen((const char *)str));
+ break;
+
+ default:
+ /* Oh, well */
+ return 0;
+ }
+
+ return 1;
+}