2 * uhttpd - Tiny single-threaded httpd - TLS helper
4 * Copyright (C) 2010 Jo-Philipp Wich <xm@subsignal.org>
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 #include "uhttpd-tls.h"
21 #include "uhttpd-utils.h"
24 SSL_CTX
* uh_tls_ctx_init()
27 SSL_load_error_strings();
30 if( (c
= SSL_CTX_new(TLSv1_server_method())) != NULL
)
31 SSL_CTX_set_verify(c
, SSL_VERIFY_NONE
, NULL
);
36 int uh_tls_ctx_cert(SSL_CTX
*c
, const char *file
)
40 if( (rv
= SSL_CTX_use_certificate_file(c
, file
, SSL_FILETYPE_PEM
)) < 1 )
41 rv
= SSL_CTX_use_certificate_file(c
, file
, SSL_FILETYPE_ASN1
);
46 int uh_tls_ctx_key(SSL_CTX
*c
, const char *file
)
50 if( (rv
= SSL_CTX_use_PrivateKey_file(c
, file
, SSL_FILETYPE_PEM
)) < 1 )
51 rv
= SSL_CTX_use_PrivateKey_file(c
, file
, SSL_FILETYPE_ASN1
);
56 void uh_tls_ctx_free(struct listener
*l
)
62 void uh_tls_client_accept(struct client
*c
)
64 if( c
->server
&& c
->server
->tls
)
66 c
->tls
= SSL_new(c
->server
->tls
);
67 SSL_set_fd(c
->tls
, c
->socket
);
71 int uh_tls_client_recv(struct client
*c
, void *buf
, int len
)
73 int rv
= SSL_read(c
->tls
, buf
, len
);
74 return (rv
> 0) ? rv
: -1;
77 int uh_tls_client_send(struct client
*c
, void *buf
, int len
)
79 int rv
= SSL_write(c
->tls
, buf
, len
);
80 return (rv
> 0) ? rv
: -1;
83 void uh_tls_client_close(struct client
*c
)
This page took 0.046649 seconds and 5 git commands to generate.