-
Notifications
You must be signed in to change notification settings - Fork 4
/
base32.h
84 lines (72 loc) · 1.95 KB
/
base32.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/**
* libbase32 version ${VERSION}
* Copyright (C) 2015 Trustifier Inc.
* All rights reserved.
*
* Distributed under MIT License
*
* Created by Ahmed Masud <[email protected]>
*
* Simple implementation of Douglas Crockford's excellent base32
* encoding/decoding scheme
*
* Canonical information about the scheme is found at:
* http://www.crockford.com/wrmg/base32.html
*/
#ifndef _LIBBASE32_BASE32_H
#define _LIBBASE32_BASE32_H
#include <stddef.h>
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
static inline void die(int code, const char *fmt, ...)
__attribute__((format(__printf__, 2, 3), noreturn));
static inline void die(int code, const char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
va_end(ap);
exit(code);
}
/**
* @function base32enc
* Encodes s_len bytes from src to base32 and stores it in dest.
*
* @param char * dest pointer to destination where encoding will be stored
* @param const void * src pointer to data to be encoded
* @param size_t s_len length of data to be encoded
* @return size of encoded string
*/
size_t base32enc(char *dest, const void *src, size_t s_len);
/**
* @function base32dec
*
* Decodes {@link src} bytes into dest
*
*
* This function decodes an arbitrary length source buffer into
* destination buffer, until dest is filled.
*
*
* @param dest where decoded content will end up
* @param dest_len size of destination (data gets truncated)
* @param src encoded string
* @return 0 on success, -1 on failure
*
* @todo Should return offset into src up to where decoding occured
*
*/
size_t base32dec(void *dest, size_t dest_len, const char *src);
/*
* @function base32encsize
*
* Calculate size of encoded text for a buffer of count size
*
* @param count
*
* @return size of encoded buffer
*/
size_t base32encsize(size_t count);
/* size of decoded text */
size_t base32decsize(size_t count);
#endif //LIBBASE32_BASE32_H