MCPcopy Create free account
hub / github.com/defold/defold / Base64Decode

Function Base64Decode

engine/dlib/src/dlib/crypt_mbedtls.cpp:74–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

72 }
73
74 bool Base64Decode(const uint8_t* src, uint32_t src_len, uint8_t* dst, uint32_t* dst_len)
75 {
76 size_t out_len = 0;
77
78 uint32_t padding_needed = (4 - (src_len % 4)) % 4;
79 uint8_t* padded_src = 0;
80
81 if (padding_needed > 0 && src_len > 0)
82 {
83 padded_src = new uint8_t[src_len + padding_needed];
84 memcpy(padded_src, src, src_len);
85 memset(padded_src + src_len, '=', padding_needed);
86 src_len = src_len + padding_needed;
87 src = padded_src;
88 }
89
90 int r = mbedtls_base64_decode(dst, *dst_len, &out_len, src, src_len);
91
92 if (padded_src)
93 {
94 delete[] padded_src;
95 }
96
97 if (r != 0)
98 {
99 if (*dst_len == 0)
100 {
101 *dst_len = (uint32_t)out_len;
102 }
103 else
104 {
105 *dst_len = 0xFFFFFFFF;
106 }
107 return false;
108 }
109 *dst_len = (uint32_t)out_len;
110 return true;
111 }
112}

Callers 1

TESTFunction · 0.85

Calls 1

mbedtls_base64_decodeFunction · 0.85

Tested by 1

TESTFunction · 0.68