From a93658cd06a462ab39bd900ed217bf11d4ba2555 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Fri, 7 Jun 2024 10:04:10 +0200 Subject: [PATCH] [crypto,base64] apply INLINE and WINPR_RESTRICT --- include/freerdp/crypto/crypto.h | 23 ++++++++++++++--------- libfreerdp/crypto/base64.c | 27 +++++++++++++++------------ libfreerdp/crypto/crypto.c | 5 +++-- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/include/freerdp/crypto/crypto.h b/include/freerdp/crypto/crypto.h index 6137769b9..e3b7b0dc6 100644 --- a/include/freerdp/crypto/crypto.h +++ b/include/freerdp/crypto/crypto.h @@ -38,18 +38,23 @@ extern "C" }; typedef struct rdp_CertInfo rdpCertInfo; - FREERDP_API char* crypto_base64_encode(const BYTE* data, size_t length); - FREERDP_API char* crypto_base64_encode_ex(const BYTE* data, size_t length, BOOL withCrLf); + FREERDP_API char* crypto_base64_encode(const BYTE* WINPR_RESTRICT data, size_t length); + FREERDP_API char* crypto_base64_encode_ex(const BYTE* WINPR_RESTRICT data, size_t length, + BOOL withCrLf); - FREERDP_API void crypto_base64_decode(const char* enc_data, size_t length, BYTE** dec_data, - size_t* res_length); + FREERDP_API void crypto_base64_decode(const char* WINPR_RESTRICT enc_data, size_t length, + BYTE** WINPR_RESTRICT dec_data, + size_t* WINPR_RESTRICT res_length); - FREERDP_API char* crypto_base64url_encode(const BYTE* data, size_t length); - FREERDP_API void crypto_base64url_decode(const char* enc_data, size_t length, BYTE** dec_data, - size_t* res_length); + FREERDP_API char* crypto_base64url_encode(const BYTE* WINPR_RESTRICT data, size_t length); + FREERDP_API void crypto_base64url_decode(const char* WINPR_RESTRICT enc_data, size_t length, + BYTE** WINPR_RESTRICT dec_data, + size_t* WINPR_RESTRICT res_length); - FREERDP_API char* crypto_read_pem(const char* filename, size_t* plength); - FREERDP_API BOOL crypto_write_pem(const char* filename, const char* pem, size_t length); + FREERDP_API char* crypto_read_pem(const char* WINPR_RESTRICT filename, + size_t* WINPR_RESTRICT plength); + FREERDP_API BOOL crypto_write_pem(const char* WINPR_RESTRICT filename, + const char* WINPR_RESTRICT pem, size_t length); #ifdef __cplusplus } diff --git a/libfreerdp/crypto/base64.c b/libfreerdp/crypto/base64.c index 683d29703..ddff99b85 100644 --- a/libfreerdp/crypto/base64.c +++ b/libfreerdp/crypto/base64.c @@ -26,8 +26,9 @@ static const char base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static const char base64url[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; -static char* base64_encode_ex(const char* alphabet, const BYTE* data, size_t length, BOOL pad, - BOOL crLf, size_t lineSize) +static INLINE char* base64_encode_ex(const char* WINPR_RESTRICT alphabet, + const BYTE* WINPR_RESTRICT data, size_t length, BOOL pad, + BOOL crLf, size_t lineSize) { int c = 0; const BYTE* q = NULL; @@ -114,12 +115,13 @@ static char* base64_encode_ex(const char* alphabet, const BYTE* data, size_t len return ret; } -static char* base64_encode(const char* alphabet, const BYTE* data, size_t length, BOOL pad) +static INLINE char* base64_encode(const char* WINPR_RESTRICT alphabet, + const BYTE* WINPR_RESTRICT data, size_t length, BOOL pad) { return base64_encode_ex(alphabet, data, length, pad, FALSE, 64); } -static int base64_decode_char(const char* alphabet, char c) +static INLINE int base64_decode_char(const char* WINPR_RESTRICT alphabet, char c) { char* p = NULL; @@ -132,8 +134,8 @@ static int base64_decode_char(const char* alphabet, char c) return -1; } -static void* base64_decode(const char* alphabet, const char* s, size_t length, size_t* data_len, - BOOL pad) +static INLINE void* base64_decode(const char* WINPR_RESTRICT alphabet, const char* WINPR_RESTRICT s, + size_t length, size_t* WINPR_RESTRICT data_len, BOOL pad) { int n[4]; BYTE* q = NULL; @@ -223,28 +225,29 @@ out_free: return NULL; } -char* crypto_base64_encode_ex(const BYTE* data, size_t length, BOOL withCrLf) +char* crypto_base64_encode_ex(const BYTE* WINPR_RESTRICT data, size_t length, BOOL withCrLf) { return base64_encode_ex(base64, data, length, TRUE, withCrLf, 64); } -char* crypto_base64_encode(const BYTE* data, size_t length) +char* crypto_base64_encode(const BYTE* WINPR_RESTRICT data, size_t length) { return base64_encode(base64, data, length, TRUE); } -void crypto_base64_decode(const char* enc_data, size_t length, BYTE** dec_data, size_t* res_length) +void crypto_base64_decode(const char* WINPR_RESTRICT enc_data, size_t length, + BYTE** WINPR_RESTRICT dec_data, size_t* WINPR_RESTRICT res_length) { *dec_data = base64_decode(base64, enc_data, length, res_length, TRUE); } -char* crypto_base64url_encode(const BYTE* data, size_t length) +char* crypto_base64url_encode(const BYTE* WINPR_RESTRICT data, size_t length) { return base64_encode(base64url, data, length, FALSE); } -void crypto_base64url_decode(const char* enc_data, size_t length, BYTE** dec_data, - size_t* res_length) +void crypto_base64url_decode(const char* WINPR_RESTRICT enc_data, size_t length, + BYTE** WINPR_RESTRICT dec_data, size_t* WINPR_RESTRICT res_length) { *dec_data = base64_decode(base64url, enc_data, length, res_length, FALSE); } diff --git a/libfreerdp/crypto/crypto.c b/libfreerdp/crypto/crypto.c index 37ddaa12c..04f1aa06e 100644 --- a/libfreerdp/crypto/crypto.c +++ b/libfreerdp/crypto/crypto.c @@ -186,7 +186,7 @@ void crypto_reverse(BYTE* data, size_t length) } } -char* crypto_read_pem(const char* filename, size_t* plength) +char* crypto_read_pem(const char* WINPR_RESTRICT filename, size_t* WINPR_RESTRICT plength) { char* pem = NULL; FILE* fp = NULL; @@ -234,7 +234,8 @@ fail: return NULL; } -BOOL crypto_write_pem(const char* filename, const char* pem, size_t length) +BOOL crypto_write_pem(const char* WINPR_RESTRICT filename, const char* WINPR_RESTRICT pem, + size_t length) { WINPR_ASSERT(filename); WINPR_ASSERT(pem || (length == 0));