Skip to content

Commit 636fa9c

Browse files
haydenroche5danielinux
authored andcommitted
Fix alert history code.
Because we access the fields of WOLFSSL_ALERT_HISTORY and WOLFSSL_ALERT directly in do_handshake, these structs can't be opaque, or an exception will be raised by FFI.
1 parent 8ac9754 commit 636fa9c

File tree

1 file changed

+25
-11
lines changed

1 file changed

+25
-11
lines changed

wolfssl/_build_ffi.py

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -334,50 +334,64 @@ def generate_libwolfssl():
334334
)
335335

336336
cdef = """
337-
/**
337+
/*
338338
* Constants
339339
*/
340340
static const long SOCKET_PEER_CLOSED_E;
341341
342-
/**
342+
/*
343343
* Types
344344
*/
345345
typedef unsigned char byte;
346346
typedef unsigned int word32;
347347
348348
extern int OLDTLS_ENABLED;
349349
350+
/*
351+
* Opaque structs.
352+
*/
350353
typedef ... WOLFSSL_CTX;
351354
typedef ... WOLFSSL;
352355
typedef ... WOLFSSL_X509;
353356
typedef ... WOLFSSL_X509_EXTENSION;
354357
typedef ... WOLFSSL_X509_STORE_CTX;
355358
typedef ... WOLFSSL_X509_NAME;
356359
typedef ... WOLFSSL_X509_NAME_ENTRY;
357-
typedef ... WOLFSSL_ALERT_HISTORY;
358360
typedef ... WOLFSSL_METHOD;
359361
typedef ... WOLFSSL_ASN1_TIME;
360362
typedef ... WOLFSSL_ASN1_GENERALIZEDTIME;
361363
typedef ... WOLFSSL_ASN1_STRING;
362364
typedef ... WOLFSSL_ASN1_OBJECT;
363365
366+
/*
367+
* Non-opaque structs, where we need access to fields.
368+
*/
369+
typedef struct WOLFSSL_ALERT {
370+
int code;
371+
int level;
372+
} WOLFSSL_ALERT;
373+
typedef struct WOLFSSL_ALERT_HISTORY {
374+
WOLFSSL_ALERT last_rx;
375+
WOLFSSL_ALERT last_tx;
376+
} WOLFSSL_ALERT_HISTORY;
377+
364378
typedef int (*VerifyCallback)(int, WOLFSSL_X509_STORE_CTX*);
365379
typedef int pem_password_cb(char*, int, int, void*);
366380
typedef int (*CallbackSniRecv)(WOLFSSL*, int*, void*);
367381
368-
/**
382+
/*
369383
* Memory
370384
*/
371385
void wolfSSL_Free(void*);
372386
void wolfSSL_OPENSSL_free(void*);
373387
374-
/**
388+
/*
375389
* Debugging
376390
*/
377391
void wolfSSL_Debugging_ON();
378392
void wolfSSL_Debugging_OFF();
379393
380-
/**
394+
/*
381395
* SSL/TLS Method functions
382396
*/
383397
"""
@@ -417,7 +431,7 @@ def generate_libwolfssl():
417431
cdef += """
418432
WOLFSSL_METHOD* wolfTLSv1_2_method(void);
419433
420-
/**
434+
/*
421435
* SSL/TLS Context functions
422436
*/
423437
WOLFSSL_CTX* wolfSSL_CTX_new(WOLFSSL_METHOD*);
@@ -440,7 +454,7 @@ def generate_libwolfssl():
440454
CallbackSniRecv);
441455
long wolfSSL_CTX_set_mode(WOLFSSL_CTX*, long);
442456
443-
/**
457+
/*
444458
* SSL/TLS Session functions
445459
*/
446460
void wolfSSL_Init();
@@ -472,7 +486,7 @@ def generate_libwolfssl():
472486
int wolfSSL_dtls_free_peer(void*);
473487
int wolfSSL_dtls_set_peer(WOLFSSL*, void*, unsigned int);
474488
475-
/**
489+
/*
476490
* WOLFSSL_X509 functions
477491
*/
478492
char* wolfSSL_X509_get_subjectCN(void*);
@@ -515,7 +529,7 @@ def generate_libwolfssl():
515529
WOLFSSL_X509_EXTENSION*);
516530
WOLFSSL_X509* wolfSSL_X509_dup(WOLFSSL_X509*);
517531
518-
/**
532+
/*
519533
* ASN.1
520534
*/
521535
int wolfSSL_ASN1_STRING_length(WOLFSSL_ASN1_STRING*);
@@ -531,7 +545,7 @@ def generate_libwolfssl():
531545
int wolfSSL_ASN1_STRING_to_UTF8(unsigned char **,
532546
WOLFSSL_ASN1_STRING*);
533547
534-
/**
548+
/*
535549
* Misc.
536550
*/
537551
int wolfSSL_library_init(void);

0 commit comments

Comments
 (0)