21#ifndef GSSL_MBEDTLS_UTILS_H
22#define GSSL_MBEDTLS_UTILS_H
26#include "gstrmacros.h"
39#define FN( fn ) nullptr,(#fn),(fn)
40#if MBEDTLS_VERSION_NUMBER >= 0x02070000
41#if MBEDTLS_VERSION_MAJOR >= 3
42#define FN_RET( fn ) nullptr,(#fn),(fn)
44#define FN_RET( fn ) 0,(#fn),(G_STR_PASTE(fn,_ret))
47#define FN_RET( fn ) nullptr,(#fn),(fn)
49#define FN_OK( ok , fn ) int(ok),(#fn),(fn)
56 template <
typename F,
typename... Args>
57 void call(
int ok ,
const char * fname , F fn , Args&&... args )
59 int rc = fn( std::forward<Args>(args)... ) ;
61 throw Error( fname , rc ) ;
65 template <
typename F,
typename... Args>
66 void call( std::nullptr_t ,
const char * , F fn , Args&&... args )
68 fn( std::forward<Args>(args)... ) ;
72 using old_fn = int (*)( mbedtls_pk_context * c ,
const unsigned char * k , std::size_t ks ,
73 const unsigned char * p , std::size_t ps ) ;
74 using new_fn = int (*)( mbedtls_pk_context* c ,
const unsigned char* k , std::size_t ks ,
75 const unsigned char * p , std::size_t ps ,
76 int (*r)(
void*,
unsigned char*,std::size_t) ,
void* rp ) ;
77 inline int call_fn( old_fn fn ,
78 mbedtls_pk_context * c ,
const unsigned char * k , std::size_t ks ,
79 const unsigned char * p , std::size_t ps ,
80 int (*)(
void*,
unsigned char*,std::size_t) ,
void * )
82 return fn( c , k , ks , p , ps ) ;
84 inline int call_fn( new_fn fn ,
85 mbedtls_pk_context * c ,
const unsigned char * k , std::size_t ks ,
86 const unsigned char * p , std::size_t ps ,
87 int (*r)(
void*,
unsigned char*,std::size_t) ,
void * rp )
89 return fn( c , k , ks , p , ps , r , rp ) ;
95 X(
void (*init)(T*) ,
void (*free)(T*) ) : m_free(free) { init(&x) ; }
97 T * ptr() {
return &x ; }
98 const T * ptr()
const {
return &x ; }
101 X * operator&() = delete ;
102 const X * operator&()
const = delete ;
103 X(
const X<T> & ) = delete ;
104 X(
X<T> && ) = delete ;
105 X<T> & operator=(
const X<T> & ) = delete ;
106 X<T> & operator=(
X<T> && ) = delete ;
TLS/SSL transport layer security classes.
Initialises and frees an mbedtls object on construction and destruction.