mirror of
https://gitlab.nic.cz/knot/knot-dns.git
synced 2026-06-09 08:33:59 -04:00
[dnssec] dnssec_binary_to_base64() API
This commit is contained in:
parent
b9c4e0ffe0
commit
634cbaef6c
3 changed files with 38 additions and 0 deletions
|
|
@ -197,3 +197,22 @@ int dnssec_binary_from_base64(const dnssec_binary_t *base64,
|
|||
|
||||
return DNSSEC_EOK;
|
||||
}
|
||||
|
||||
_public_
|
||||
int dnssec_binary_to_base64(const dnssec_binary_t *binary,
|
||||
dnssec_binary_t *base64)
|
||||
{
|
||||
if (!binary || !base64) {
|
||||
return DNSSEC_EINVAL;
|
||||
}
|
||||
|
||||
size_t base64_size = BASE64_ENCODE_RAW_LENGTH(binary->size);
|
||||
int r = dnssec_binary_resize(base64, base64_size);
|
||||
if (r != DNSSEC_EOK) {
|
||||
return r;
|
||||
}
|
||||
|
||||
base64_encode_raw(base64->data, binary->size, binary->data);
|
||||
|
||||
return DNSSEC_EOK;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -134,4 +134,14 @@ void dnssec_binary_ltrim(dnssec_binary_t *binary);
|
|||
int dnssec_binary_from_base64(const dnssec_binary_t *base64,
|
||||
dnssec_binary_t *binary);
|
||||
|
||||
/*!
|
||||
* Create Base64 encoded string from binary data.
|
||||
*
|
||||
* \param[in] binary Binary data.
|
||||
* \param[out] base64 Base64 encode data.
|
||||
*
|
||||
* \return Error code, DNSSEC_EOK if successful.
|
||||
*/
|
||||
int dnssec_binary_to_base64(const dnssec_binary_t *binary,
|
||||
dnssec_binary_t *base64);
|
||||
/*! @} */
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ typedef struct test_string {
|
|||
static void test_base64(void)
|
||||
{
|
||||
test_string_t data[] = {
|
||||
{ "", 0, "", 0 },
|
||||
{ "YQ==", 4, "a", 1 },
|
||||
{ "YWI=", 4, "ab", 2 },
|
||||
{ "YWJj", 4, "abc", 3 },
|
||||
|
|
@ -56,7 +57,15 @@ static void test_base64(void)
|
|||
memcmp(binary.data, ts->decoded, binary.size) == 0,
|
||||
"dnssec_binary_from_base64() for '%s'", ts->encoded);
|
||||
|
||||
dnssec_binary_t encoded = { 0 };
|
||||
r = dnssec_binary_to_base64(&binary, &encoded);
|
||||
ok(r == DNSSEC_EOK &&
|
||||
encoded.size == ts->encoded_size &&
|
||||
memcmp(encoded.data, ts->encoded, encoded.size) == 0,
|
||||
"dnssec_binary_to_base64() for '%s'", ts->encoded);
|
||||
|
||||
dnssec_binary_free(&binary);
|
||||
dnssec_binary_free(&encoded);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue