Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(850)

Side by Side Diff: nss/lib/certhigh/ocspt.h

Issue 1843333003: Update NSPR to 4.12 and NSS to 3.23 on iOS (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/nss.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* This Source Code Form is subject to the terms of the Mozilla Public 1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this 2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 4
5 /* 5 /*
6 * Public header for exported OCSP types. 6 * Public header for exported OCSP types.
7 */ 7 */
8 8
9 #ifndef _OCSPT_H_ 9 #ifndef _OCSPT_H_
10 #define _OCSPT_H_ 10 #define _OCSPT_H_
(...skipping 28 matching lines...) Expand all
39 * DefaultHttpClient), populates an SEC_HttpClientFcnStruct, uses it to 39 * DefaultHttpClient), populates an SEC_HttpClientFcnStruct, uses it to
40 * register his client, and waits for his functions to be called. 40 * register his client, and waits for his functions to be called.
41 * 41 *
42 * For future expandability, the SEC_HttpClientFcnStruct is defined as a 42 * For future expandability, the SEC_HttpClientFcnStruct is defined as a
43 * union, with the version field acting as a selector. The proposed 43 * union, with the version field acting as a selector. The proposed
44 * initial version of the structure is given following the definition 44 * initial version of the structure is given following the definition
45 * of the union. The HttpClientState structure is implementation- 45 * of the union. The HttpClientState structure is implementation-
46 * dependent, and should be opaque to the user. 46 * dependent, and should be opaque to the user.
47 */ 47 */
48 48
49 typedef void * SEC_HTTP_SERVER_SESSION; 49 typedef void *SEC_HTTP_SERVER_SESSION;
50 typedef void * SEC_HTTP_REQUEST_SESSION; 50 typedef void *SEC_HTTP_REQUEST_SESSION;
51 51
52 /* 52 /*
53 * This function creates a SEC_HTTP_SERVER_SESSION object. The implementer of a 53 * This function creates a SEC_HTTP_SERVER_SESSION object. The implementer of a
54 * specific HttpClient will allocate the necessary space, when this 54 * specific HttpClient will allocate the necessary space, when this
55 * function is called, and will free it when the corresponding FreeFcn 55 * function is called, and will free it when the corresponding FreeFcn
56 * is called. The SEC_HTTP_SERVER_SESSION object is passed, as an opaque object, 56 * is called. The SEC_HTTP_SERVER_SESSION object is passed, as an opaque object,
57 * to subsequent calls. 57 * to subsequent calls.
58 * 58 *
59 * If the function returns SECSuccess, the returned SEC_HTTP_SERVER_SESSION 59 * If the function returns SECSuccess, the returned SEC_HTTP_SERVER_SESSION
60 * must be cleaned up with a call to SEC_HttpServer_FreeSession, 60 * must be cleaned up with a call to SEC_HttpServer_FreeSession,
61 * after processing is finished. 61 * after processing is finished.
62 */ 62 */
63 typedef SECStatus (*SEC_HttpServer_CreateSessionFcn)( 63 typedef SECStatus (*SEC_HttpServer_CreateSessionFcn)(
64 const char *host, 64 const char *host,
65 PRUint16 portnum, 65 PRUint16 portnum,
66 SEC_HTTP_SERVER_SESSION *pSession); 66 SEC_HTTP_SERVER_SESSION *pSession);
67 67
68 /* 68 /*
69 * This function is called to allow the implementation to attempt to keep 69 * This function is called to allow the implementation to attempt to keep
70 * the connection alive. Depending on the underlying platform, it might 70 * the connection alive. Depending on the underlying platform, it might
71 * immediately return SECSuccess without having performed any operations. 71 * immediately return SECSuccess without having performed any operations.
72 * (If a connection has not been kept alive, a subsequent call to 72 * (If a connection has not been kept alive, a subsequent call to
73 * SEC_HttpRequest_TrySendAndReceiveFcn should reopen the connection 73 * SEC_HttpRequest_TrySendAndReceiveFcn should reopen the connection
74 * automatically.) 74 * automatically.)
75 * 75 *
76 * If the connection uses nonblocking I/O, this function may return 76 * If the connection uses nonblocking I/O, this function may return
77 * SECWouldBlock and store a nonzero value at "pPollDesc". In that case 77 * SECWouldBlock and store a nonzero value at "pPollDesc". In that case
78 * the caller may wait on the poll descriptor, and should call this function 78 * the caller may wait on the poll descriptor, and should call this function
79 * again until SECSuccess (and a zero value at "pPollDesc") is obtained. 79 * again until SECSuccess (and a zero value at "pPollDesc") is obtained.
80 */ 80 */
81 typedef SECStatus (*SEC_HttpServer_KeepAliveSessionFcn)( 81 typedef SECStatus (*SEC_HttpServer_KeepAliveSessionFcn)(
82 SEC_HTTP_SERVER_SESSION session, 82 SEC_HTTP_SERVER_SESSION session,
83 PRPollDesc **pPollDesc); 83 PRPollDesc **pPollDesc);
84 84
85 /* 85 /*
86 * This function frees the client SEC_HTTP_SERVER_SESSION object, closes all 86 * This function frees the client SEC_HTTP_SERVER_SESSION object, closes all
87 * SEC_HTTP_REQUEST_SESSIONs created for that server, discards all partial resul ts, 87 * SEC_HTTP_REQUEST_SESSIONs created for that server, discards all partial resul ts,
88 * frees any memory that was allocated by the client, and invalidates any 88 * frees any memory that was allocated by the client, and invalidates any
89 * response pointers that might have been returned by prior server or request 89 * response pointers that might have been returned by prior server or request
90 * functions. 90 * functions.
91 */ 91 */
92 typedef SECStatus (*SEC_HttpServer_FreeSessionFcn)( 92 typedef SECStatus (*SEC_HttpServer_FreeSessionFcn)(
93 SEC_HTTP_SERVER_SESSION session); 93 SEC_HTTP_SERVER_SESSION session);
94 94
95 /* 95 /*
96 * This function creates a SEC_HTTP_REQUEST_SESSION object. The implementer of a 96 * This function creates a SEC_HTTP_REQUEST_SESSION object. The implementer of a
97 * specific HttpClient will allocate the necessary space, when this 97 * specific HttpClient will allocate the necessary space, when this
98 * function is called, and will free it when the corresponding FreeFcn 98 * function is called, and will free it when the corresponding FreeFcn
99 * is called. The SEC_HTTP_REQUEST_SESSION object is passed, as an opaque object , 99 * is called. The SEC_HTTP_REQUEST_SESSION object is passed, as an opaque object ,
100 * to subsequent calls. 100 * to subsequent calls.
101 * 101 *
102 * An implementation that does not support the requested protocol variant 102 * An implementation that does not support the requested protocol variant
103 * (usually "http", but could eventually allow "https") or request method 103 * (usually "http", but could eventually allow "https") or request method
104 * should return SECFailure. 104 * should return SECFailure.
105 * 105 *
106 * Timeout values may include the constants PR_INTERVAL_NO_TIMEOUT (wait 106 * Timeout values may include the constants PR_INTERVAL_NO_TIMEOUT (wait
107 * forever) or PR_INTERVAL_NO_WAIT (nonblocking I/O). 107 * forever) or PR_INTERVAL_NO_WAIT (nonblocking I/O).
108 * 108 *
109 * If the function returns SECSuccess, the returned SEC_HTTP_REQUEST_SESSION 109 * If the function returns SECSuccess, the returned SEC_HTTP_REQUEST_SESSION
110 * must be cleaned up with a call to SEC_HttpRequest_FreeSession, 110 * must be cleaned up with a call to SEC_HttpRequest_FreeSession,
111 * after processing is finished. 111 * after processing is finished.
112 */ 112 */
113 typedef SECStatus (*SEC_HttpRequest_CreateFcn)( 113 typedef SECStatus (*SEC_HttpRequest_CreateFcn)(
114 SEC_HTTP_SERVER_SESSION session, 114 SEC_HTTP_SERVER_SESSION session,
115 const char *http_protocol_variant, /* usually "http" */ 115 const char *http_protocol_variant, /* usually "http" */
116 const char *path_and_query_string, 116 const char *path_and_query_string,
117 const char *http_request_method, 117 const char *http_request_method,
118 const PRIntervalTime timeout, 118 const PRIntervalTime timeout,
119 SEC_HTTP_REQUEST_SESSION *pRequest); 119 SEC_HTTP_REQUEST_SESSION *pRequest);
120 120
121 /* 121 /*
122 * This function sets data to be sent to the server for an HTTP request 122 * This function sets data to be sent to the server for an HTTP request
123 * of http_request_method == POST. If a particular implementation 123 * of http_request_method == POST. If a particular implementation
124 * supports it, the details for the POST request can be set by calling 124 * supports it, the details for the POST request can be set by calling
125 * this function, prior to activating the request with TrySendAndReceiveFcn. 125 * this function, prior to activating the request with TrySendAndReceiveFcn.
126 * 126 *
127 * An implementation that does not support the POST method should 127 * An implementation that does not support the POST method should
128 * implement a SetPostDataFcn function that returns immediately. 128 * implement a SetPostDataFcn function that returns immediately.
129 * 129 *
130 * Setting http_content_type is optional, the parameter may 130 * Setting http_content_type is optional, the parameter may
131 * by NULL or the empty string. 131 * by NULL or the empty string.
132 */ 132 */
133 typedef SECStatus (*SEC_HttpRequest_SetPostDataFcn)( 133 typedef SECStatus (*SEC_HttpRequest_SetPostDataFcn)(
134 SEC_HTTP_REQUEST_SESSION request, 134 SEC_HTTP_REQUEST_SESSION request,
135 const char *http_data, 135 const char *http_data,
136 const PRUint32 http_data_len, 136 const PRUint32 http_data_len,
137 const char *http_content_type); 137 const char *http_content_type);
138 138
139 /* 139 /*
140 * This function sets an additional HTTP protocol request header. 140 * This function sets an additional HTTP protocol request header.
141 * If a particular implementation supports it, one or multiple headers 141 * If a particular implementation supports it, one or multiple headers
142 * can be added to the request by calling this function once or multiple 142 * can be added to the request by calling this function once or multiple
143 * times, prior to activating the request with TryFcn. 143 * times, prior to activating the request with TryFcn.
144 * 144 *
145 * An implementation that does not support setting additional headers 145 * An implementation that does not support setting additional headers
146 * should implement an AddRequestHeaderFcn function that returns immediately. 146 * should implement an AddRequestHeaderFcn function that returns immediately.
147 */ 147 */
148 typedef SECStatus (*SEC_HttpRequest_AddHeaderFcn)( 148 typedef SECStatus (*SEC_HttpRequest_AddHeaderFcn)(
149 SEC_HTTP_REQUEST_SESSION request, 149 SEC_HTTP_REQUEST_SESSION request,
150 const char *http_header_name, 150 const char *http_header_name,
151 const char *http_header_value); 151 const char *http_header_value);
152 152
153 /* 153 /*
154 * This function initiates or continues an HTTP request. After 154 * This function initiates or continues an HTTP request. After
155 * parameters have been set with the Create function and, optionally, 155 * parameters have been set with the Create function and, optionally,
156 * modified or enhanced with the AddParams function, this call creates 156 * modified or enhanced with the AddParams function, this call creates
157 * the socket connection and initiates the communication. 157 * the socket connection and initiates the communication.
158 * 158 *
159 * If a timeout value of zero is specified, indicating non-blocking 159 * If a timeout value of zero is specified, indicating non-blocking
160 * I/O, the client creates a non-blocking socket, and returns a status 160 * I/O, the client creates a non-blocking socket, and returns a status
161 * of SECWouldBlock and a non-NULL PRPollDesc if the operation is not 161 * of SECWouldBlock and a non-NULL PRPollDesc if the operation is not
(...skipping 11 matching lines...) Expand all
173 * An input value of zero means, the caller will accept any response len. 173 * An input value of zero means, the caller will accept any response len.
174 * A different input value indicates the maximum response value acceptable 174 * A different input value indicates the maximum response value acceptable
175 * to the caller. 175 * to the caller.
176 * If data is successfully read and the size is acceptable to the caller, 176 * If data is successfully read and the size is acceptable to the caller,
177 * the function will return SECSuccess and set http_response_data_len to 177 * the function will return SECSuccess and set http_response_data_len to
178 * the size of the block returned in http_response_data. 178 * the size of the block returned in http_response_data.
179 * If the data read from the http server is larger than the acceptable 179 * If the data read from the http server is larger than the acceptable
180 * size, the function will return SECFailure. 180 * size, the function will return SECFailure.
181 * http_response_data_len will be set to a value different from zero to 181 * http_response_data_len will be set to a value different from zero to
182 * indicate the reason of the failure. 182 * indicate the reason of the failure.
183 * An out value of "0" means, the failure was unrelated to the 183 * An out value of "0" means, the failure was unrelated to the
184 * acceptable size. 184 * acceptable size.
185 * An out value of "1" means, the result data is larger than the 185 * An out value of "1" means, the result data is larger than the
186 * accpeptable size, but the real size is not yet known to the http client 186 * accpeptable size, but the real size is not yet known to the http client
187 * implementation and it stopped retrieving it, 187 * implementation and it stopped retrieving it,
188 * Any other out value combined with a return value of SECFailure 188 * Any other out value combined with a return value of SECFailure
189 * will indicate the actual size of the server data. 189 * will indicate the actual size of the server data.
190 * 190 *
191 * The caller is permitted to provide NULL values for any of the 191 * The caller is permitted to provide NULL values for any of the
192 * http_response arguments, indicating the caller is not interested in 192 * http_response arguments, indicating the caller is not interested in
193 * those values. If the caller does provide an address, the HttpClient 193 * those values. If the caller does provide an address, the HttpClient
194 * stores at that address a pointer to the corresponding argument, at 194 * stores at that address a pointer to the corresponding argument, at
195 * the completion of the operation. 195 * the completion of the operation.
196 * 196 *
197 * All returned pointers will be owned by the the HttpClient 197 * All returned pointers will be owned by the the HttpClient
198 * implementation and will remain valid until the call to 198 * implementation and will remain valid until the call to
199 * SEC_HttpRequest_FreeFcn. 199 * SEC_HttpRequest_FreeFcn.
200 */ 200 */
201 typedef SECStatus (*SEC_HttpRequest_TrySendAndReceiveFcn)( 201 typedef SECStatus (*SEC_HttpRequest_TrySendAndReceiveFcn)(
202 SEC_HTTP_REQUEST_SESSION request, 202 SEC_HTTP_REQUEST_SESSION request,
203 PRPollDesc **pPollDesc, 203 PRPollDesc **pPollDesc,
204 PRUint16 *http_response_code, 204 PRUint16 *http_response_code,
205 const char **http_response_content_type, 205 const char **http_response_content_type,
206 const char **http_response_headers, 206 const char **http_response_headers,
207 const char **http_response_data, 207 const char **http_response_data,
208 PRUint32 *http_response_data_len); 208 PRUint32 *http_response_data_len);
209 209
210 /* 210 /*
211 * Calling CancelFcn asks for premature termination of the request. 211 * Calling CancelFcn asks for premature termination of the request.
212 * 212 *
213 * Future calls to SEC_HttpRequest_TrySendAndReceive should 213 * Future calls to SEC_HttpRequest_TrySendAndReceive should
214 * by avoided, but in this case the HttpClient implementation 214 * by avoided, but in this case the HttpClient implementation
215 * is expected to return immediately with SECFailure. 215 * is expected to return immediately with SECFailure.
216 * 216 *
217 * After calling CancelFcn, a separate call to SEC_HttpRequest_FreeFcn 217 * After calling CancelFcn, a separate call to SEC_HttpRequest_FreeFcn
218 * is still necessary to free resources. 218 * is still necessary to free resources.
219 */ 219 */
220 typedef SECStatus (*SEC_HttpRequest_CancelFcn)( 220 typedef SECStatus (*SEC_HttpRequest_CancelFcn)(
221 SEC_HTTP_REQUEST_SESSION request); 221 SEC_HTTP_REQUEST_SESSION request);
222 222
223 /* 223 /*
224 * Before calling this function, it must be assured the request 224 * Before calling this function, it must be assured the request
225 * has been completed, i.e. either SEC_HttpRequest_TrySendAndReceiveFcn has 225 * has been completed, i.e. either SEC_HttpRequest_TrySendAndReceiveFcn has
226 * returned SECSuccess, or the request has been canceled with 226 * returned SECSuccess, or the request has been canceled with
227 * a call to SEC_HttpRequest_CancelFcn. 227 * a call to SEC_HttpRequest_CancelFcn.
228 * 228 *
229 * This function frees the client state object, closes all sockets, 229 * This function frees the client state object, closes all sockets,
230 * discards all partial results, frees any memory that was allocated 230 * discards all partial results, frees any memory that was allocated
231 * by the client, and invalidates all response pointers that might 231 * by the client, and invalidates all response pointers that might
232 * have been returned by SEC_HttpRequest_TrySendAndReceiveFcn 232 * have been returned by SEC_HttpRequest_TrySendAndReceiveFcn
233 */ 233 */
234 typedef SECStatus (*SEC_HttpRequest_FreeFcn)( 234 typedef SECStatus (*SEC_HttpRequest_FreeFcn)(
235 SEC_HTTP_REQUEST_SESSION request); 235 SEC_HTTP_REQUEST_SESSION request);
236 236
237 typedef struct SEC_HttpClientFcnV1Struct { 237 typedef struct SEC_HttpClientFcnV1Struct {
238 SEC_HttpServer_CreateSessionFcn createSessionFcn; 238 SEC_HttpServer_CreateSessionFcn createSessionFcn;
239 SEC_HttpServer_KeepAliveSessionFcn keepAliveSessionFcn; 239 SEC_HttpServer_KeepAliveSessionFcn keepAliveSessionFcn;
240 SEC_HttpServer_FreeSessionFcn freeSessionFcn; 240 SEC_HttpServer_FreeSessionFcn freeSessionFcn;
241 SEC_HttpRequest_CreateFcn createFcn; 241 SEC_HttpRequest_CreateFcn createFcn;
242 SEC_HttpRequest_SetPostDataFcn setPostDataFcn; 242 SEC_HttpRequest_SetPostDataFcn setPostDataFcn;
243 SEC_HttpRequest_AddHeaderFcn addHeaderFcn; 243 SEC_HttpRequest_AddHeaderFcn addHeaderFcn;
244 SEC_HttpRequest_TrySendAndReceiveFcn trySendAndReceiveFcn; 244 SEC_HttpRequest_TrySendAndReceiveFcn trySendAndReceiveFcn;
245 SEC_HttpRequest_CancelFcn cancelFcn; 245 SEC_HttpRequest_CancelFcn cancelFcn;
246 SEC_HttpRequest_FreeFcn freeFcn; 246 SEC_HttpRequest_FreeFcn freeFcn;
247 } SEC_HttpClientFcnV1; 247 } SEC_HttpClientFcnV1;
248 248
249 typedef struct SEC_HttpClientFcnStruct { 249 typedef struct SEC_HttpClientFcnStruct {
250 PRInt16 version; 250 PRInt16 version;
251 union { 251 union {
252 SEC_HttpClientFcnV1 ftable1; 252 SEC_HttpClientFcnV1 ftable1;
253 /* SEC_HttpClientFcnV2 ftable2; */ 253 /* SEC_HttpClientFcnV2 ftable2; */
254 /* ... */ 254 /* ... */
255 } fcnTable; 255 } fcnTable;
256 } SEC_HttpClientFcn; 256 } SEC_HttpClientFcn;
257 257
258 /* 258 /*
259 * ocspMode_FailureIsVerificationFailure: 259 * ocspMode_FailureIsVerificationFailure:
260 * This is the classic behaviour of NSS. 260 * This is the classic behaviour of NSS.
261 * Any OCSP failure is a verification failure (classic mode, default). 261 * Any OCSP failure is a verification failure (classic mode, default).
262 * Without a good response, OCSP networking will be retried each time 262 * Without a good response, OCSP networking will be retried each time
263 * it is required for verifying a cert. 263 * it is required for verifying a cert.
264 * 264 *
265 * ocspMode_FailureIsNotAVerificationFailure: 265 * ocspMode_FailureIsNotAVerificationFailure:
(...skipping 20 matching lines...) Expand all
286 * byName [1] EXPLICIT Name, 286 * byName [1] EXPLICIT Name,
287 * byKey [2] EXPLICIT KeyHash } 287 * byKey [2] EXPLICIT KeyHash }
288 * 288 *
289 * Because it is CHOICE, the type of identification used and the 289 * Because it is CHOICE, the type of identification used and the
290 * identification itself are actually encoded together. To represent 290 * identification itself are actually encoded together. To represent
291 * this same information internally, we explicitly define a type and 291 * this same information internally, we explicitly define a type and
292 * save it, along with the value, into a data structure. 292 * save it, along with the value, into a data structure.
293 */ 293 */
294 294
295 typedef enum { 295 typedef enum {
296 ocspResponderID_other = -1,»» /* unknown kind of responderID */ 296 ocspResponderID_other = -1, /* unknown kind of responderID */
297 ocspResponderID_byName = 1, 297 ocspResponderID_byName = 1,
298 ocspResponderID_byKey = 2 298 ocspResponderID_byKey = 2
299 } CERTOCSPResponderIDType; 299 } CERTOCSPResponderIDType;
300 300
301 #endif /* _OCSPT_H_ */ 301 #endif /* _OCSPT_H_ */
OLDNEW
« no previous file with comments | « nss/lib/certhigh/ocspsig.c ('k') | nss/lib/certhigh/ocspti.h » ('j') | nss/lib/util/secoid.c » ('J')

Powered by Google App Engine
This is Rietveld 408576698