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()
28 SSL_load_error_strings();
31 if( (c
= SSL_CTX_new(TLSv1_server_method())) != NULL
)
32 SSL_CTX_set_verify(c
, SSL_VERIFY_NONE
, NULL
);
37 int uh_tls_ctx_cert(SSL_CTX
*c
, const char *file
)
41 if( (rv
= SSL_CTX_use_certificate_file(c
, file
, SSL_FILETYPE_PEM
)) < 1 )
42 rv
= SSL_CTX_use_certificate_file(c
, file
, SSL_FILETYPE_ASN1
);
47 int uh_tls_ctx_key(SSL_CTX
*c
, const char *file
)
51 if( (rv
= SSL_CTX_use_PrivateKey_file(c
, file
, SSL_FILETYPE_PEM
)) < 1 )
52 rv
= SSL_CTX_use_PrivateKey_file(c
, file
, SSL_FILETYPE_ASN1
);
57 void uh_tls_ctx_free(struct listener
*l
)
63 int uh_tls_client_accept(struct client
*c
)
67 if( c
->server
&& c
->server
->tls
)
69 c
->tls
= SSL_new(c
->server
->tls
);
72 if( (rv
= SSL_set_fd(c
->tls
, c
->socket
)) < 1 )
74 if( (rv
= SSL_accept(c
->tls
)) < 1 )
95 int uh_tls_client_recv(struct client
*c
, void *buf
, int len
)
97 int rv
= SSL_read(c
->tls
, buf
, len
);
98 return (rv
> 0) ? rv
: -1;
101 int uh_tls_client_send(struct client
*c
, void *buf
, int len
)
103 int rv
= SSL_write(c
->tls
, buf
, len
);
104 return (rv
> 0) ? rv
: -1;
107 void uh_tls_client_close(struct client
*c
)
111 SSL_shutdown(c
->tls
);
This page took 0.049616 seconds and 5 git commands to generate.