Line Flow Count Block(s) Source
1 - /*
2 - * Copyright (C) the libgit2 contributors. All rights reserved.
3 - *
4 - * This file is part of libgit2, distributed under the GNU GPL v2 with
5 - * a Linking Exception. For full terms see the included COPYING file.
6 - */
7 -
8 - #include "git2/errors.h"
9 -
10 - #include "common.h"
11 - #include "global.h"
12 - #include "streams/registry.h"
13 - #include "streams/tls.h"
14 - #include "streams/mbedtls.h"
15 - #include "streams/openssl.h"
16 - #include "streams/stransport.h"
17 -
18 51 2 int git_tls_stream_new(git_stream **out, const char *host, const char *port)
19 - {
20 51 2 int (*init)(git_stream **, const char *, const char *) = NULL;
21 51 2 git_stream_registration custom = {0};
22 - int error;
23 -
24 51 2-5 assert(out && host && port);
25 -
26 51 6,7 if ((error = git_stream_registry_lookup(&custom, GIT_STREAM_TLS)) == 0) {
27 2 8 init = custom.init;
28 49 9 } else if (error == GIT_ENOTFOUND) {
29 - #ifdef GIT_SECURE_TRANSPORT
30 - init = git_stransport_stream_new;
31 - #elif defined(GIT_OPENSSL)
32 49 10 init = git_openssl_stream_new;
33 - #elif defined(GIT_MBEDTLS)
34 - init = git_mbedtls_stream_new;
35 - #endif
36 - } else {
37 ##### 11 return error;
38 - }
39 -
40 51 12 if (!init) {
41 ##### 13 git_error_set(GIT_ERROR_SSL, "there is no TLS stream available");
42 ##### 14 return -1;
43 - }
44 -
45 51 15 return init(out, host, port);
46 - }
47 -
48 ##### 2 int git_tls_stream_wrap(git_stream **out, git_stream *in, const char *host)
49 - {
50 ##### 2 int (*wrap)(git_stream **, git_stream *, const char *) = NULL;
51 ##### 2 git_stream_registration custom = {0};
52 -
53 ##### 2-4 assert(out && in);
54 -
55 ##### 5,6 if (git_stream_registry_lookup(&custom, GIT_STREAM_TLS) == 0) {
56 ##### 7 wrap = custom.wrap;
57 - } else {
58 - #ifdef GIT_SECURE_TRANSPORT
59 - wrap = git_stransport_stream_wrap;
60 - #elif defined(GIT_OPENSSL)
61 ##### 8 wrap = git_openssl_stream_wrap;
62 - #elif defined(GIT_MBEDTLS)
63 - wrap = git_mbedtls_stream_wrap;
64 - #endif
65 - }
66 -
67 ##### 9 if (!wrap) {
68 ##### 10 git_error_set(GIT_ERROR_SSL, "there is no TLS stream available");
69 ##### 11 return -1;
70 - }
71 -
72 ##### 12 return wrap(out, in, host);
73 - }