LCOV - code coverage report
Current view: top level - Modules - _ssl.h (source / functions) Hit Total Coverage
Test: CPython 3.12 LCOV report [commit acb105a7c1f] Lines: 3 3 100.0 %
Date: 2022-07-20 13:12:14 Functions: 1 1 100.0 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : #ifndef Py_SSL_H
       2                 :            : #define Py_SSL_H
       3                 :            : 
       4                 :            : /* OpenSSL header files */
       5                 :            : #include "openssl/evp.h"
       6                 :            : #include "openssl/x509.h"
       7                 :            : 
       8                 :            : /*
       9                 :            :  * ssl module state
      10                 :            :  */
      11                 :            : typedef struct {
      12                 :            :     /* Types */
      13                 :            :     PyTypeObject *PySSLContext_Type;
      14                 :            :     PyTypeObject *PySSLSocket_Type;
      15                 :            :     PyTypeObject *PySSLMemoryBIO_Type;
      16                 :            :     PyTypeObject *PySSLSession_Type;
      17                 :            :     PyTypeObject *PySSLCertificate_Type;
      18                 :            :     /* SSL error object */
      19                 :            :     PyObject *PySSLErrorObject;
      20                 :            :     PyObject *PySSLCertVerificationErrorObject;
      21                 :            :     PyObject *PySSLZeroReturnErrorObject;
      22                 :            :     PyObject *PySSLWantReadErrorObject;
      23                 :            :     PyObject *PySSLWantWriteErrorObject;
      24                 :            :     PyObject *PySSLSyscallErrorObject;
      25                 :            :     PyObject *PySSLEOFErrorObject;
      26                 :            :     /* Error mappings */
      27                 :            :     PyObject *err_codes_to_names;
      28                 :            :     PyObject *err_names_to_codes;
      29                 :            :     PyObject *lib_codes_to_names;
      30                 :            :     /* socket type from module CAPI */
      31                 :            :     PyTypeObject *Sock_Type;
      32                 :            :     /* Interned strings */
      33                 :            :     PyObject *str_library;
      34                 :            :     PyObject *str_reason;
      35                 :            :     PyObject *str_verify_code;
      36                 :            :     PyObject *str_verify_message;
      37                 :            : } _sslmodulestate;
      38                 :            : 
      39                 :            : static struct PyModuleDef _sslmodule_def;
      40                 :            : 
      41                 :            : Py_LOCAL_INLINE(_sslmodulestate*)
      42                 :      25876 : get_ssl_state(PyObject *module)
      43                 :            : {
      44                 :      25876 :     void *state = PyModule_GetState(module);
      45                 :            :     assert(state != NULL);
      46                 :      25876 :     return (_sslmodulestate *)state;
      47                 :            : }
      48                 :            : 
      49                 :            : #define get_state_type(type) \
      50                 :            :     (get_ssl_state(PyType_GetModuleByDef(type, &_sslmodule_def)))
      51                 :            : #define get_state_ctx(c) (((PySSLContext *)(c))->state)
      52                 :            : #define get_state_sock(s) (((PySSLSocket *)(s))->ctx->state)
      53                 :            : #define get_state_obj(o) ((_sslmodulestate *)PyType_GetModuleState(Py_TYPE(o)))
      54                 :            : #define get_state_mbio(b) get_state_obj(b)
      55                 :            : #define get_state_cert(c) get_state_obj(c)
      56                 :            : 
      57                 :            : /* ************************************************************************
      58                 :            :  * certificate
      59                 :            :  */
      60                 :            : 
      61                 :            : enum py_ssl_encoding {
      62                 :            :     PY_SSL_ENCODING_PEM=X509_FILETYPE_PEM,
      63                 :            :     PY_SSL_ENCODING_DER=X509_FILETYPE_ASN1,
      64                 :            :     PY_SSL_ENCODING_PEM_AUX=X509_FILETYPE_PEM + 0x100,
      65                 :            : };
      66                 :            : 
      67                 :            : typedef struct {
      68                 :            :     PyObject_HEAD
      69                 :            :     X509 *cert;
      70                 :            :     Py_hash_t hash;
      71                 :            : } PySSLCertificate;
      72                 :            : 
      73                 :            : /* ************************************************************************
      74                 :            :  * helpers and utils
      75                 :            :  */
      76                 :            : static PyObject *_PySSL_BytesFromBIO(_sslmodulestate *state, BIO *bio);
      77                 :            : static PyObject *_PySSL_UnicodeFromBIO(_sslmodulestate *state, BIO *bio, const char *error);
      78                 :            : 
      79                 :            : #endif /* Py_SSL_H */

Generated by: LCOV version 1.14