1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/*
* Copyright 2014 Couchbase, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
extern "C" LCB_NO_SSL
/**
* Create a new SSL context to be used to establish SSL policy.
* @param cafile Optional path to CA file
* @param noverify To not attempt to verify server's certificate
* @param errp a pointer to contain the error code if initialization failed
* @param settings settings structure, used for logging.
*
* @return A new SSL context, or NULL on error.
*/
lcbio_pSSLCTX
;
/**
* Free the SSL context. This should be done when libcouchbase has nothing else
* to do with the certificate
* @param ctx
*/
void
;
/**
* Apply the SSL settings to a given socket.
*
* The socket must be newly connected and must not have already been initialized
* with SSL (i.e. lcbio_ssl_check() returns false).
*
* @param sock The socket to which SSL should be applied
* @param sctx The context returned by lcbio_ssl_new()
* @return
*/
lcb_error_t
;
/**
* Checks whether the given socket is using SSL
* @param sock The socket to check
* @return true if using SSL, false if plain (or not yet applied)
*/
int
;
/**
* Retrieves the internal error code from the SSL object within the socket.
* Should only be called if lcbio_ssl_check() is true.
*
* @param sock
* @return An error code (if present), or LCB_SUCCESS if there is no internal
* error code.
*/
lcb_error_t
;
/**
* @brief
* Initialize any application-level globals needed for SSL support
* @todo There is currently nothing checking if this hasn't been called more
* than once.
*/
void
;
;
/**
* Apply SSL to the socket if the socket should use SSL and is not already
* an SSL socket. This is a convenience function that:
*
* 1. Checks the settings to see if SSL is enabled
* 2. Checks to see if the socket already has SSL (lcbio_ssl_check())
* 3. Calls lcbio_ssl_apply if (1) and (2) are true.
*
* @param sock The socket to SSLify
* @param settings The settings structure from whence the context and policy are
* derived.
* @return
*/
lcb_error_t
;
/**@}*/
}