  | 
		
 
    
      HP Open Source Security for OpenVMS Volume 2: HP SSL for OpenVMS > Appendix A Data Structures and Header Files 
       
      
      SSL_CTX Structure
      
      
      
      The SSL_CTX structure is defined in ssl.h.    |  
 struct ssl_ctx_st   {    SSL_METHOD *method;  unsigned long options;       unsigned long mode;       STACK_OF(SSL_CIPHER) *cipher_list;   /* same as above but sorted for lookup */    STACK_OF(SSL_CIPHER) *cipher_list_by_id;          struct x509_store_st /* X509_STORE */ *cert_store;   struct lhash_st /* LHASH */ *sessions;  /* a set of SSL_SESSIONs */  /* Most session-ids that will be cached, default is   * SSL_SESSION_CACHE_MAX_SIZE_DEFAULT. 0 is unlimited. */    unsigned long session_cache_size;    struct ssl_session_st *session_cache_head;   struct ssl_session_st *session_cache_tail;        /* This can have one of 2 values, ored together,      * SSL_SESS_CACHE_CLIENT,     * SSL_SESS_CACHE_SERVER,     * Default is SSL_SESSION_CACHE_SERVER, which means only      * SSL_accept which cache SSL_SESSIONS. */        int session_cache_mode;             /* If timeout is not 0, it is the default timeout value set   * when SSL_new() is called.  This has been put in to make    * life easier to set things up */        long session_timeout;     /* If this callback is not null, it will be called each       * time a session id is added to the cache.  If this function         * returns 1, it means that the callback will do a    * SSL_SESSION_free() when it has finished using it.  Otherwise,      * on 0, it means the callback has finished with it.          * If remove_session_cb is not null, it will be called when   * a session-id is removed from the cache.  After the call,   * OpenSSL will SSL_SESSION_free() it. */
   |  
   |  
   |  
  int (*new_session_cb)(struct ssl_st *ssl,SSL_SESSION *sess);         void (*remove_session_cb)(struct ssl_ctx_st *ctx,SSL_SESSION *sess);         SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl,           unsigned char *data,int len,int *copy);      struct       {            int sess_connect;       /* SSL new conn - started */                 int sess_connect_renegotiate;/* SSL reneg - requested */             int sess_connect_good;  /* SSL new conne/reneg - finished */                 int sess_accept;        /* SSL new accept - started */               int sess_accept_renegotiate;/* SSL reneg - requested */              int sess_accept_good;   /* SSL accept/reneg - finished */            int sess_miss;          /* session lookup misses  */                 int sess_timeout;       /* reuse attempt on timeouted session */             int sess_cache_full;    /* session removed due to full cache */              int sess_hit;           /* session reuse actually done */            int sess_cb_hit;        /* session-id that was not                                         * in the cache was                                   * passed back via the callback.  This                                        * indicates that the application is                                          * supplying session-id's from other                                          * processes - spooky :-) */      } stats;          int references;           void (*info_callback)();          /* if defined, these override the X509_verify_cert() calls */     int (*app_verify_callback)();        char *app_verify_arg; /* never used; should be void * */          /* default values to use in SSL structures */     struct cert_st /* CERT */ *cert;     int read_ahead;      int verify_mode;     int verify_depth;    unsigned int sid_ctx_length;         unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH];       int (*default_verify_callback)(int ok,X509_STORE_CTX *ctx);       int purpose;            /* Purpose setting */        int trust;              /* Trust setting */       /* Default password callback. */          pem_password_cb *default_passwd_callback;         /* Default password callback user data. */        void *default_passwd_callback_userdata;           /* get client cert callback */    int (*client_cert_cb)(/* SSL *ssl, X509 **x509, EVP_PKEY **pkey */);      /* what we put in client cert requests */         STACK_OF(X509_NAME) *client_CA;           int quiet_shutdown;       CRYPTO_EX_DATA ex_data;           const EVP_MD *rsa_md5;  /* For SSLv2 - name is 'ssl2-md5' */         const EVP_MD *md5;              /* For SSLv3/TLSv1 'ssl3-md5' */     const EVP_MD *sha1;             /* For SSLv3/TLSv1 'ssl3->sha1' */     STACK_OF(X509) *extra_certs; STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */   };
   |  
   |  
  
      
     | 
    
    
     
  
		 |