本文整理汇总了C++中SSL_set_accept_state函数的典型用法代码示例。如果您正苦于以下问题:C++ SSL_set_accept_state函数的具体用法?C++ SSL_set_accept_state怎么用?C++ SSL_set_accept_state使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SSL_set_accept_state函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SocketException
ClientSocket *SSLSocketIO::Accept(ListenSocket *s)
{
if (s->io == &NormalSocketIO)
throw SocketException("Attempting to accept on uninitialized socket with SSL");
sockaddrs conaddr;
socklen_t size = sizeof(conaddr);
int newsock = accept(s->GetFD(), &conaddr.sa, &size);
#ifndef INVALID_SOCKET
const int INVALID_SOCKET = -1;
#endif
if (newsock < 0 || newsock == INVALID_SOCKET)
throw SocketException("Unable to accept connection: " + Anope::LastError());
ClientSocket *newsocket = s->OnAccept(newsock, conaddr);
me->service.Init(newsocket);
SSLSocketIO *io = anope_dynamic_static_cast<SSLSocketIO *>(newsocket->io);
io->sslsock = SSL_new(server_ctx);
if (!io->sslsock)
throw SocketException("Unable to initialize SSL socket");
SSL_set_accept_state(io->sslsock);
if (!SSL_set_fd(io->sslsock, newsocket->GetFD()))
throw SocketException("Unable to set SSL fd");
newsocket->flags[SF_ACCEPTING] = true;
this->FinishAccept(newsocket);
return newsocket;
}
示例2: dtls_server_input_handler
static ioa_socket_handle dtls_server_input_handler(dtls_listener_relay_server_type* server,
ioa_socket_handle s,
ioa_network_buffer_handle nbh)
{
FUNCSTART;
if (!server || !nbh) {
return NULL;
}
SSL* connecting_ssl = NULL;
BIO *wbio = NULL;
struct timeval timeout;
/* Create BIO */
wbio = BIO_new_dgram(s->fd, BIO_NOCLOSE);
(void)BIO_dgram_set_peer(wbio, (struct sockaddr*) &(server->sm.m.sm.nd.src_addr));
/* Set and activate timeouts */
timeout.tv_sec = DTLS_MAX_RECV_TIMEOUT;
timeout.tv_usec = 0;
BIO_ctrl(wbio, BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, &timeout);
#if DTLSv1_2_SUPPORTED
if(get_dtls_version(ioa_network_buffer_data(nbh),
(int)ioa_network_buffer_get_size(nbh)) == 1) {
connecting_ssl = SSL_NEW(server->dtls_ctx_v1_2);
} else {
connecting_ssl = SSL_NEW(server->dtls_ctx);
}
#else
{
connecting_ssl = SSL_NEW(server->dtls_ctx);
}
#endif
SSL_set_accept_state(connecting_ssl);
SSL_set_bio(connecting_ssl, NULL, wbio);
SSL_set_options(connecting_ssl, SSL_OP_COOKIE_EXCHANGE);
SSL_set_max_cert_list(connecting_ssl, 655350);
ioa_socket_handle rc = dtls_accept_client_connection(server, s, connecting_ssl,
&(server->sm.m.sm.nd.src_addr),
&(server->addr),
nbh);
if (!rc) {
if (!(SSL_get_shutdown(connecting_ssl) & SSL_SENT_SHUTDOWN)) {
SSL_set_shutdown(connecting_ssl, SSL_RECEIVED_SHUTDOWN);
SSL_shutdown(connecting_ssl);
}
SSL_FREE(connecting_ssl);
}
return rc;
}
示例3: engine_init_server
VALUE engine_init_server(VALUE self, VALUE mini_ssl_ctx) {
VALUE obj;
SSL_CTX* ctx;
SSL* ssl;
ms_conn* conn = engine_alloc(self, &obj);
ID sym_key = rb_intern("key");
VALUE key = rb_funcall(mini_ssl_ctx, sym_key, 0);
ID sym_cert = rb_intern("cert");
VALUE cert = rb_funcall(mini_ssl_ctx, sym_cert, 0);
ID sym_ca = rb_intern("ca");
VALUE ca = rb_funcall(mini_ssl_ctx, sym_ca, 0);
ID sym_verify_mode = rb_intern("verify_mode");
VALUE verify_mode = rb_funcall(mini_ssl_ctx, sym_verify_mode, 0);
ctx = SSL_CTX_new(SSLv23_server_method());
conn->ctx = ctx;
SSL_CTX_use_certificate_file(ctx, RSTRING_PTR(cert), SSL_FILETYPE_PEM);
SSL_CTX_use_PrivateKey_file(ctx, RSTRING_PTR(key), SSL_FILETYPE_PEM);
if (!NIL_P(ca)) {
SSL_CTX_load_verify_locations(ctx, RSTRING_PTR(ca), NULL);
}
SSL_CTX_set_options(ctx, SSL_OP_CIPHER_SERVER_PREFERENCE | SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_SINGLE_DH_USE | SSL_OP_SINGLE_ECDH_USE);
SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
SSL_CTX_set_cipher_list(ctx, "HIGH:[email protected]");
DH *dh = get_dh1024();
SSL_CTX_set_tmp_dh(ctx, dh);
EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_secp521r1);
if (ecdh) {
SSL_CTX_set_tmp_ecdh(ctx, ecdh);
EC_KEY_free(ecdh);
}
ssl = SSL_new(ctx);
conn->ssl = ssl;
SSL_set_app_data(ssl, NULL);
if (NIL_P(verify_mode)) {
/* SSL_set_verify(ssl, SSL_VERIFY_NONE, NULL); */
} else {
SSL_set_verify(ssl, NUM2INT(verify_mode), engine_verify_callback);
}
SSL_set_bio(ssl, conn->read, conn->write);
SSL_set_accept_state(ssl);
return obj;
}
示例4: SSL_set_accept_state
/* 准备接受状态
*/
int32 ssl_io::init_accept( int32 fd )
{
if ( init_ssl_ctx( fd ) < 0 ) return -1;
_fd = fd;
SSL_set_accept_state( X_SSL( _ssl_ctx ) );
return do_handshake();
}
示例5: ssl_resume
/** Given an accepted connection on the listening socket, resume SSL.
* \param sock an accepted socket (returned by accept())
* \param state pointer to place to return connection state.
* \return an SSL object to associate with the listen end of this connection.
*/
SSL *
ssl_resume(int sock, int *state)
{
SSL *ssl;
ssl = ssl_setup_socket(sock);
SSL_set_accept_state(ssl);
*state = ssl_handshake(ssl);
return ssl;
}
示例6: ServerSession
SecuredServerSession::SecuredServerSession(SessionsEventLoop *eventLoop, int sock, const sockaddr_storage &sockAddr)
: ServerSession(eventLoop, sock, sockAddr)
{
if (!(m_SSL = SSL_new(Server::instance()->sslContext())))
throw std::runtime_error(ERR_error_string(ERR_get_error(), nullptr));
if (!SSL_set_fd(m_SSL, sock))
throw std::runtime_error(ERR_error_string(SSL_get_error(m_SSL, 0), nullptr));
SSL_set_accept_state(m_SSL);
}
示例7: openssl_ssl_ctx_new_ssl
static int openssl_ssl_ctx_new_ssl(lua_State*L)
{
SSL_CTX* ctx = CHECK_OBJECT(1, SSL_CTX, "openssl.ssl_ctx");
int server = 0;
int mode_idx = 2;
SSL *ssl = SSL_new(ctx);
int ret = 1;
BIO* bio = NULL;
if (auxiliar_isclass(L, "openssl.bio", 2))
{
BIO *bi = CHECK_OBJECT(2, BIO, "openssl.bio");
BIO *bo = bi;
CRYPTO_add(&bi->references, 1, CRYPTO_LOCK_BIO);
if (auxiliar_isclass(L, "openssl.bio", 3))
{
bo = CHECK_OBJECT(3, BIO, "openssl.bio");
CRYPTO_add(&bo->references, 1, CRYPTO_LOCK_BIO);
mode_idx = 4;
}
else
mode_idx = 3;
SSL_set_bio(ssl, bi, bo);
ret = 1;
}
else if (lua_isnumber(L, 2))
{
ret = SSL_set_fd(ssl, luaL_checkint(L, 2));
mode_idx = 3;
}
if (ret == 1 && !lua_isnoneornil(L, mode_idx))
{
server = auxiliar_checkboolean(L, mode_idx);
}
if (ret == 1)
{
if (server)
SSL_set_accept_state(ssl);
else
SSL_set_connect_state(ssl);
PUSH_OBJECT(ssl, "openssl.ssl");
openssl_newvalue(L, ssl);
}
else
{
SSL_free(ssl);
return openssl_pushresult(L, ret);
}
return 1;
}
示例8: handle_accept
/* libev read handler for the bound socket. Socket is accepted,
* the proxystate is allocated and initalized, and we're off the races
* connecting to the backend */
static void handle_accept(struct ev_loop *loop, ev_io *w, int revents) {
(void) revents;
struct sockaddr_storage addr;
socklen_t sl = sizeof(addr);
int client = accept(w->fd, (struct sockaddr *) &addr, &sl);
if (client == -1) {
assert(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN);
return;
}
setnonblocking(client);
int back = create_back_socket();
if (back == -1) {
close(client);
perror("{backend-connect}");
return;
}
SSL_CTX * ctx = (SSL_CTX *)w->data;
SSL *ssl = SSL_new(ctx);
SSL_set_mode(ssl, SSL_MODE_ENABLE_PARTIAL_WRITE);
SSL_set_accept_state(ssl);
SSL_set_fd(ssl, client);
proxystate *ps = (proxystate *)malloc(sizeof(proxystate));
ps->fd_up = client;
ps->fd_down = back;
ps->ssl = ssl;
ps->want_shutdown = 0;
ps->remote_ip = addr;
ringbuffer_init(&ps->ring_up);
ringbuffer_init(&ps->ring_down);
/* set up events */
ev_io_init(&ps->ev_r_up, client_read, client, EV_READ);
ev_io_init(&ps->ev_w_up, client_write, client, EV_WRITE);
ev_io_init(&ps->ev_r_handshake, client_handshake, client, EV_READ);
ev_io_init(&ps->ev_w_handshake, client_handshake, client, EV_WRITE);
ev_io_init(&ps->ev_w_down, handle_connect, back, EV_WRITE);
ev_io_start(loop, &ps->ev_w_down);
ps->ev_r_up.data = ps;
ps->ev_w_up.data = ps;
ps->ev_r_down.data = ps;
ps->ev_w_down.data = ps;
ps->ev_r_handshake.data = ps;
ps->ev_w_handshake.data = ps;
}
示例9: hr_setup_ssl
void hr_setup_ssl(struct http_session *hr, struct uwsgi_gateway_socket *ugs) {
hr->ssl = SSL_new(ugs->ctx);
SSL_set_fd(hr->ssl, hr->session.main_peer->fd);
SSL_set_accept_state(hr->ssl);
#ifdef UWSGI_SPDY
SSL_set_ex_data(hr->ssl, uhttp.spdy_index, hr);
#endif
uwsgi_cr_set_hooks(hr->session.main_peer, hr_ssl_read, NULL);
hr->session.close = hr_session_ssl_close;
hr->func_write = hr_ssl_write;
}
示例10: ssl
Engine::Engine(ContextWrapper & ctx, engine_enum kind)
: ssl( SSL_new(ctx.getCtx()) )
, bioIn( BIO_new(BIO_s_mem()) )
, bioOut( BIO_new(BIO_s_mem()) )
, checked_peer_certificate(false)
{
SSL_set_bio(ssl, bioIn, bioOut);
if( kind == CLIENT )
SSL_set_connect_state(ssl);
else
SSL_set_accept_state(ssl);
}
示例11: ssl_Connection_set_accept_state
@return: None\n\
";
static PyObject *
ssl_Connection_set_accept_state(ssl_ConnectionObj *self, PyObject *args)
{
if (!PyArg_ParseTuple(args, ":set_accept_state"))
return NULL;
SSL_set_accept_state(self->ssl);
Py_INCREF(Py_None);
return Py_None;
}
示例12: assert
bool KSSLSocket::bind_fd()
{
assert(ssl==NULL);
ssl = SSL_new(ctx);
if (ssl==NULL) {
return false;
}
if (SSL_set_fd(ssl, sockfd)!=1) {
return false;
}
SSL_set_accept_state(ssl);
return true;
}
示例13: setup_ssl
/** setup SSL connection to the client */
static SSL*
setup_ssl(int s, SSL_CTX* ctx)
{
SSL* ssl = SSL_new(ctx);
if(!ssl) return NULL;
SSL_set_accept_state(ssl);
(void)SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
if(!SSL_set_fd(ssl, s)) {
SSL_free(ssl);
return NULL;
}
return ssl;
}
示例14: set_psk_server_callback
PyObject* set_psk_server_callback(PyObject* self, PyObject* args) {
PyObject* sock;
if (!PyArg_ParseTuple(args, "O", &sock))
return NULL;
SSL* ssl = ((PySSLObject*)sock)->ssl;
SSL_set_accept_state(ssl);
SSL_set_psk_server_callback(ssl, psk_server_cb);
if(!SSL_use_psk_identity_hint(ssl, psk_identity)) {
PyErr_SetString(Error, "use_psk_identity_hint failed");
return NULL;
}
return Py_BuildValue("l", (long)ssl);
}
示例15: MS_TRACE
void DtlsTransport::Run(Role localRole)
{
MS_TRACE();
MS_ASSERT(localRole == Role::CLIENT || localRole == Role::SERVER, "local DTLS role must be 'client' or 'server'");
Role previousLocalRole = this->localRole;
if (localRole == previousLocalRole)
{
MS_ERROR("same local DTLS role provided, doing nothing");
return;
}
// If the previous local DTLS role was 'client' or 'server' do reset.
if (previousLocalRole == Role::CLIENT || previousLocalRole == Role::SERVER)
{
MS_DEBUG("resetting DTLS due to local role change");
Reset();
}
// Update local role.
this->localRole = localRole;
// Set state and notify the listener.
this->state = DtlsState::CONNECTING;
this->listener->onDtlsConnecting(this);
switch (this->localRole)
{
case Role::CLIENT:
MS_DEBUG("running [role:client]");
SSL_set_connect_state(this->ssl);
SSL_do_handshake(this->ssl);
SendPendingOutgoingDtlsData();
SetTimeout();
break;
case Role::SERVER:
MS_DEBUG("running [role:server]");
SSL_set_accept_state(this->ssl);
SSL_do_handshake(this->ssl);
break;
default:
MS_ABORT("invalid local DTLS role");
break;
}
}