📄 ssl_ctx_sess_set_get_cb.pod
字号:
=pod=head1 NAMESSL_CTX_sess_set_new_cb, SSL_CTX_sess_set_remove_cb, SSL_CTX_sess_set_get_cb, SSL_CTX_sess_get_new_cb, SSL_CTX_sess_get_remove_cb, SSL_CTX_sess_get_get_cb - provide callback functions for server side external session caching=head1 SYNOPSIS #include <openssl/ssl.h> void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, int (*new_session_cb)(SSL *, SSL_SESSION *)); void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, void (*remove_session_cb)(SSL_CTX *ctx, SSL_SESSION *)); void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, SSL_SESSION (*get_session_cb)(SSL *, unsigned char *, int, int *)); int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, SSL_SESSION *sess); void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, SSL_SESSION *sess); SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, unsigned char *data, int len, int *copy); 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);=head1 DESCRIPTIONSSL_CTX_sess_set_new_cb() sets the callback function, which is automaticallycalled whenever a new session was negotiated.SSL_CTX_sess_set_remove_cb() sets the callback function, which isautomatically called whenever a session is removed by the SSL engine,because it is considered faulty or the session has become obsolete becauseof exceeding the timeout value.SSL_CTX_sess_set_get_cb() sets the callback function which is called,whenever a SSL/TLS client proposed to resume a session but the sessioncould not be found in the internal session cache (seeL<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>).(SSL/TLS server only.)SSL_CTX_sess_get_new_cb(), SSL_CTX_sess_get_remove_cb(), andSSL_CTX_sess_get_get_cb() allow to retrieve the function pointers of theprovided callback functions. If a callback function has not been set,the NULL pointer is returned.=head1 NOTESIn order to allow external session caching, synchronization with the internalsession cache is realized via callback functions. Inside these callbackfunctions, session can be saved to disk or put into a database using theL<d2i_SSL_SESSION(3)|d2i_SSL_SESSION(3)> interface.The new_session_cb() is called, whenever a new session has been negotiatedand session caching is enabled (seeL<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>).The new_session_cb() is passed the B<ssl> connection and the ssl sessionB<sess>. If the callback returns B<0>, the session will be immediatelyremoved again.The remove_session_cb() is called, whenever the SSL engine removes a sessionfrom the internal cache. This happens when the session is removed becauseit is expired or when a connection was not shutdown cleanly. It also happensfor all sessions in the internal session cache whenL<SSL_CTX_free(3)|SSL_CTX_free(3)> is called. The remove_session_cb() is passedthe B<ctx> and the ssl session B<sess>. It does not provide any feedback.The get_session_cb() is only called on SSL/TLS servers with the session idproposed by the client. The get_session_cb() is always called, also whensession caching was disabled. The get_session_cb() is passed theB<ssl> connection, the session id of length B<length> at the memory locationB<data>. With the parameter B<copy> the callback can require theSSL engine to increment the reference count of the SSL_SESSION object,Normally the reference count is not incremented and therefore thesession must not be explicitly freed withL<SSL_SESSION_free(3)|SSL_SESSION_free(3)>.=head1 SEE ALSOL<ssl(3)|ssl(3)>, L<d2i_SSL_SESSION(3)|d2i_SSL_SESSION(3)>,L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>,L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)>,L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>,L<SSL_CTX_free(3)|SSL_CTX_free(3)>=cut
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -