diff options
Diffstat (limited to 'src/charon/lib/asn1/ttodata.c')
-rw-r--r-- | src/charon/lib/asn1/ttodata.c | 142 |
1 files changed, 73 insertions, 69 deletions
diff --git a/src/charon/lib/asn1/ttodata.c b/src/charon/lib/asn1/ttodata.c index 5e8149955..8114b12c5 100644 --- a/src/charon/lib/asn1/ttodata.c +++ b/src/charon/lib/asn1/ttodata.c @@ -33,22 +33,23 @@ static const char *badch(const char *, int, char *, size_t); #define BADCH3 (-7) /* invalid character 3 */ #define BADOFF(code) (BADCH0-(code)) -/* - - ttodatav - convert text to data, with verbose error reports +/** + * @brief convert text to data, with verbose error reports + * * If some of this looks slightly odd, it's because it has changed * repeatedly (from the original atodata()) without a major rewrite. + * + * @param src + * @param srclen 0 means apply strlen() + * @param base 0 means figure it out + * @param dst need not be valid if dstlen is 0 + * @param dstlen + * @param lenp where to record length (NULL is nowhere) + * @param errp error buffer + * @param flags + * @return NULL on success, else literal or errp */ -const char * /* NULL on success, else literal or errp */ -ttodatav(src, srclen, base, dst, dstlen, lenp, errp, errlen, flags) -const char *src; -size_t srclen; /* 0 means apply strlen() */ -int base; /* 0 means figure it out */ -char *dst; /* need not be valid if dstlen is 0 */ -size_t dstlen; -size_t *lenp; /* where to record length (NULL is nowhere) */ -char *errp; /* error buffer */ -size_t errlen; -unsigned int flags; +const char *ttodatav(const char *src, size_t srclen, int base, char *dst, size_t dstlen, size_t *lenp, char *errp, size_t errlen, unsigned int flags) { size_t ingroup; /* number of input bytes converted at once */ char buf[4]; /* output from conversion */ @@ -166,32 +167,35 @@ unsigned int flags; return NULL; } -/* - - ttodata - convert text to data +/** + * @brief ttodata - convert text to data + * + * @param src + * @param srclen 0 means apply strlen() + * @param base 0 means figure it out + * @param dst need not be valid if dstlen is 0 + * @param dstlen + * @param lenp where to record length (NULL is nowhere) + * @return NULL on success, else literal */ -const char * /* NULL on success, else literal */ -ttodata(src, srclen, base, dst, dstlen, lenp) -const char *src; -size_t srclen; /* 0 means apply strlen() */ -int base; /* 0 means figure it out */ -char *dst; /* need not be valid if dstlen is 0 */ -size_t dstlen; -size_t *lenp; /* where to record length (NULL is nowhere) */ +const char *ttodata(const char *src, size_t srclen, int base, char *dst, size_t dstlen, size_t *lenp) { return ttodatav(src, srclen, base, dst, dstlen, lenp, (char *)NULL, (size_t)0, TTODATAV_SPACECOUNTS); } -/* - - atodata - convert ASCII to data +/** + * @brief atodata - convert ASCII to data + * * backward-compatibility interface + * + * @param src + * @param srclen + * @param dst + * @param dstlen + * @return 0 for failure, true length for success */ -size_t /* 0 for failure, true length for success */ -atodata(src, srclen, dst, dstlen) -const char *src; -size_t srclen; -char *dst; -size_t dstlen; +size_t atodata(const char *src, size_t srclen, char *dst, size_t dstlen) { size_t len; const char *err; @@ -202,29 +206,25 @@ size_t dstlen; return len; } -/* - - atobytes - convert ASCII to data bytes +/** + * @brief atobytes - convert ASCII to data bytes + * * another backward-compatibility interface */ -const char * -atobytes(src, srclen, dst, dstlen, lenp) -const char *src; -size_t srclen; -char *dst; -size_t dstlen; -size_t *lenp; +const char *atobytes(const char *src, size_t srclen, char *dst, size_t dstlen, size_t *lenp) { return ttodata(src, srclen, 0, dst, dstlen, lenp); } -/* - - unhex - convert two ASCII hex digits to byte +/** + * @brief unhex - convert two ASCII hex digits to byte + * + * @param src known to be full length + * @param dstnumber of result bytes, or error code + * @param dstlen not large enough is a failure + * @return */ -static int /* number of result bytes, or error code */ -unhex(src, dst, dstlen) -const char *src; /* known to be full length */ -char *dst; -size_t dstlen; /* not large enough is a failure */ +static int unhex(const char *src, char *dst, size_t dstlen) { char *p; unsigned byte; @@ -252,16 +252,18 @@ size_t dstlen; /* not large enough is a failure */ return 1; } -/* - - unb64 - convert four ASCII base64 digits to three bytes +/** + * @brief unb64 - convert four ASCII base64 digits to three bytes + * * Note that a base64 digit group is padded out with '=' if it represents * less than three bytes: one byte is dd==, two is ddd=, three is dddd. + * + * @param src known to be full length + * @param dst + * @param dstlen + * @return number of result bytes, or error code */ -static int /* number of result bytes, or error code */ -unb64(src, dst, dstlen) -const char *src; /* known to be full length */ -char *dst; -size_t dstlen; +static int unb64(const char *src, char *dst, size_t dstlen) { char *p; unsigned byte1; @@ -316,14 +318,15 @@ size_t dstlen; return 3; } -/* - - untext - convert one ASCII character to byte +/** + * @brief untext - convert one ASCII character to byte + * + * @param src known to be full length + * @param dst + * @param dstlen not large enough is a failure + * @return number of result bytes, or error code */ -static int /* number of result bytes, or error code */ -untext(src, dst, dstlen) -const char *src; /* known to be full length */ -char *dst; -size_t dstlen; /* not large enough is a failure */ +static int untext(const char *src, char *dst, size_t dstlen) { if (dstlen < 1) return SHORT; @@ -332,18 +335,19 @@ size_t dstlen; /* not large enough is a failure */ return 1; } -/* - - badch - produce a nice complaint about an unknown character +/** + * @brief badch - produce a nice complaint about an unknown character * * If the compiler complains that the array bigenough[] has a negative * size, that means the TTODATAV_BUF constant has been set too small. + * + * @param src + * @param errcode + * @param errp might be NULL + * @param errlen + * @return literal or errp */ -static const char * /* literal or errp */ -badch(src, errcode, errp, errlen) -const char *src; -int errcode; -char *errp; /* might be NULL */ -size_t errlen; +static const char *badch(const char *src, int errcode, char *errp, size_t errlen) { static const char pre[] = "unknown character (`"; static const char suf[] = "') in input"; |