summaryrefslogtreecommitdiffstats
path: root/crypto/openssh/uuencode.c
diff options
context:
space:
mode:
authorkris <kris@FreeBSD.org>2000-05-15 04:37:24 +0000
committerkris <kris@FreeBSD.org>2000-05-15 04:37:24 +0000
commit4dc8aa85ced77e9e02dea6939edd4d3564b5086e (patch)
tree772b9de8852fb4c32957c00639a4fd5460f8a62b /crypto/openssh/uuencode.c
parentb201b15ee1575ab28ed4f9b5a7d430e835a7c7ae (diff)
downloadFreeBSD-src-4dc8aa85ced77e9e02dea6939edd4d3564b5086e.zip
FreeBSD-src-4dc8aa85ced77e9e02dea6939edd4d3564b5086e.tar.gz
Initial import of OpenSSH v2.1.
Diffstat (limited to 'crypto/openssh/uuencode.c')
-rw-r--r--crypto/openssh/uuencode.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/crypto/openssh/uuencode.c b/crypto/openssh/uuencode.c
new file mode 100644
index 0000000..fc84d5a
--- /dev/null
+++ b/crypto/openssh/uuencode.c
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2000 Markus Friedl. All rights reserved.
+ */
+#include "includes.h"
+#include "xmalloc.h"
+
+#include <resolv.h>
+
+int
+uuencode(unsigned char *src, unsigned int srclength,
+ char *target, size_t targsize)
+{
+ return __b64_ntop(src, srclength, target, targsize);
+}
+
+int
+uudecode(const char *src, unsigned char *target, size_t targsize)
+{
+ int len;
+ char *encoded, *p;
+
+ /* copy the 'readonly' source */
+ encoded = xstrdup(src);
+ /* skip whitespace and data */
+ for (p = encoded; *p == ' ' || *p == '\t'; p++)
+ ;
+ for (; *p != '\0' && *p != ' ' && *p != '\t'; p++)
+ ;
+ /* and remote trailing whitespace because __b64_pton needs this */
+ *p = '\0';
+ len = __b64_pton(encoded, target, targsize);
+ xfree(encoded);
+ return len;
+}
+
+void
+dump_base64(FILE *fp, unsigned char *data, int len)
+{
+ unsigned char *buf = xmalloc(2*len);
+ int i, n;
+ n = uuencode(data, len, buf, 2*len);
+ for (i = 0; i < n; i++) {
+ fprintf(fp, "%c", buf[i]);
+ if (i % 70 == 69)
+ fprintf(fp, "\n");
+ }
+ if (i % 70 != 69)
+ fprintf(fp, "\n");
+ xfree(buf);
+}
OpenPOWER on IntegriCloud