LCOV - code coverage report
Current view: | top level - Modules - _ssl.h (source / functions) |  |  | Hit | Total | Coverage
Test: | CPython 3.12 LCOV report [commit 5e6661bce9] |  | Lines: | 3 | 3 | 100.0 %
Date: | 2023-03-20 08:15:36 |  | 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                 :         36 : get_ssl_state(PyObject *module)
          43                 :            : {
          44                 :         36 :     void *state = PyModule_GetState(module);
          45                 :            :     assert(state != NULL);
          46                 :         36 :     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