1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #pragma once
- #include <openssl/sha.h>
- #include <openssl/evp.h>
- #include <openssl/bio.h>
- #include <openssl/buffer.h>
- #include <string>
- void openssl_base64_decode(char* encoded_bytes, char** decoded_bytes, size_t* decoded_length) {
- BIO* bioMem, * b64;
- size_t buffer_length;
- bioMem = BIO_new_mem_buf((void*)encoded_bytes, -1);
- b64 = BIO_new(BIO_f_base64());
- BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
- bioMem = BIO_push(b64, bioMem);
- buffer_length = BIO_get_mem_data(bioMem, NULL);
- *decoded_bytes = (char *)malloc(buffer_length);
- *decoded_length = BIO_read(bioMem, *decoded_bytes, buffer_length);
- BIO_free_all(bioMem);
- }
- char* openssl_base64_encode(char* decoded_bytes, size_t decoded_length) {
- int x;
- BIO* bioMem, * b64;
- BUF_MEM* bufPtr;
- char* buff;
- b64 = BIO_new(BIO_f_base64());
- BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
- bioMem = BIO_new(BIO_s_mem());
- b64 = BIO_push(b64, bioMem);
- BIO_write(b64, decoded_bytes, decoded_length);
- x = BIO_flush(b64);
- if (x < 1) {
- BIO_free_all(b64);
- return NULL;
- }
- BIO_get_mem_ptr(b64, &bufPtr);
- buff = (char*)malloc(bufPtr->length + 1);
- memset(buff, 0, bufPtr->length + 1);
- memcpy(buff, bufPtr->data, bufPtr->length);
- buff[bufPtr->length] = 0;
- BIO_free_all(b64);
- return buff;
- }
|