Index: mozilla/security/nss/lib/certhigh/ocspt.h |
=================================================================== |
--- mozilla/security/nss/lib/certhigh/ocspt.h (revision 191424) |
+++ mozilla/security/nss/lib/certhigh/ocspt.h (working copy) |
@@ -1,303 +0,0 @@ |
-/* This Source Code Form is subject to the terms of the Mozilla Public |
- * License, v. 2.0. If a copy of the MPL was not distributed with this |
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
- |
-/* |
- * Public header for exported OCSP types. |
- * |
- * $Id: ocspt.h,v 1.12 2012/12/12 16:03:44 wtc%google.com Exp $ |
- */ |
- |
-#ifndef _OCSPT_H_ |
-#define _OCSPT_H_ |
- |
-/* |
- * The following are all opaque types. If someone needs to get at |
- * a field within, then we need to fix the API. Try very hard not |
- * make the type available to them. |
- */ |
-typedef struct CERTOCSPRequestStr CERTOCSPRequest; |
-typedef struct CERTOCSPResponseStr CERTOCSPResponse; |
- |
-/* |
- * XXX I think only those first two above should need to be exported, |
- * but until I know for certain I am leaving the rest of these here, too. |
- */ |
-typedef struct CERTOCSPCertIDStr CERTOCSPCertID; |
-typedef struct CERTOCSPSingleResponseStr CERTOCSPSingleResponse; |
- |
-/* |
- * This interface is described in terms of an HttpClient which |
- * supports at least a specified set of functions. (An implementer may |
- * provide HttpClients with additional functionality accessible only to |
- * users with a particular implementation in mind.) The basic behavior |
- * is provided by defining a set of functions, listed in an |
- * SEC_HttpServerFcnStruct. If the implementor of a SpecificHttpClient |
- * registers his SpecificHttpClient as the default HttpClient, then his |
- * functions will be called by the user of an HttpClient, such as an |
- * OCSPChecker. |
- * |
- * The implementer of a specific HttpClient (e.g., the NSS-provided |
- * DefaultHttpClient), populates an SEC_HttpClientFcnStruct, uses it to |
- * register his client, and waits for his functions to be called. |
- * |
- * For future expandability, the SEC_HttpClientFcnStruct is defined as a |
- * union, with the version field acting as a selector. The proposed |
- * initial version of the structure is given following the definition |
- * of the union. The HttpClientState structure is implementation- |
- * dependent, and should be opaque to the user. |
- */ |
- |
-typedef void * SEC_HTTP_SERVER_SESSION; |
-typedef void * SEC_HTTP_REQUEST_SESSION; |
- |
-/* |
- * This function creates a SEC_HTTP_SERVER_SESSION object. The implementer of a |
- * specific HttpClient will allocate the necessary space, when this |
- * function is called, and will free it when the corresponding FreeFcn |
- * is called. The SEC_HTTP_SERVER_SESSION object is passed, as an opaque object, |
- * to subsequent calls. |
- * |
- * If the function returns SECSuccess, the returned SEC_HTTP_SERVER_SESSION |
- * must be cleaned up with a call to SEC_HttpServer_FreeSession, |
- * after processing is finished. |
- */ |
-typedef SECStatus (*SEC_HttpServer_CreateSessionFcn)( |
- const char *host, |
- PRUint16 portnum, |
- SEC_HTTP_SERVER_SESSION *pSession); |
- |
-/* |
- * This function is called to allow the implementation to attempt to keep |
- * the connection alive. Depending on the underlying platform, it might |
- * immediately return SECSuccess without having performed any operations. |
- * (If a connection has not been kept alive, a subsequent call to |
- * SEC_HttpRequest_TrySendAndReceiveFcn should reopen the connection |
- * automatically.) |
- * |
- * If the connection uses nonblocking I/O, this function may return |
- * SECWouldBlock and store a nonzero value at "pPollDesc". In that case |
- * the caller may wait on the poll descriptor, and should call this function |
- * again until SECSuccess (and a zero value at "pPollDesc") is obtained. |
- */ |
-typedef SECStatus (*SEC_HttpServer_KeepAliveSessionFcn)( |
- SEC_HTTP_SERVER_SESSION session, |
- PRPollDesc **pPollDesc); |
- |
-/* |
- * This function frees the client SEC_HTTP_SERVER_SESSION object, closes all |
- * SEC_HTTP_REQUEST_SESSIONs created for that server, discards all partial results, |
- * frees any memory that was allocated by the client, and invalidates any |
- * response pointers that might have been returned by prior server or request |
- * functions. |
- */ |
-typedef SECStatus (*SEC_HttpServer_FreeSessionFcn)( |
- SEC_HTTP_SERVER_SESSION session); |
- |
-/* |
- * This function creates a SEC_HTTP_REQUEST_SESSION object. The implementer of a |
- * specific HttpClient will allocate the necessary space, when this |
- * function is called, and will free it when the corresponding FreeFcn |
- * is called. The SEC_HTTP_REQUEST_SESSION object is passed, as an opaque object, |
- * to subsequent calls. |
- * |
- * An implementation that does not support the requested protocol variant |
- * (usually "http", but could eventually allow "https") or request method |
- * should return SECFailure. |
- * |
- * Timeout values may include the constants PR_INTERVAL_NO_TIMEOUT (wait |
- * forever) or PR_INTERVAL_NO_WAIT (nonblocking I/O). |
- * |
- * If the function returns SECSuccess, the returned SEC_HTTP_REQUEST_SESSION |
- * must be cleaned up with a call to SEC_HttpRequest_FreeSession, |
- * after processing is finished. |
- */ |
-typedef SECStatus (*SEC_HttpRequest_CreateFcn)( |
- SEC_HTTP_SERVER_SESSION session, |
- const char *http_protocol_variant, /* usually "http" */ |
- const char *path_and_query_string, |
- const char *http_request_method, |
- const PRIntervalTime timeout, |
- SEC_HTTP_REQUEST_SESSION *pRequest); |
- |
-/* |
- * This function sets data to be sent to the server for an HTTP request |
- * of http_request_method == POST. If a particular implementation |
- * supports it, the details for the POST request can be set by calling |
- * this function, prior to activating the request with TrySendAndReceiveFcn. |
- * |
- * An implementation that does not support the POST method should |
- * implement a SetPostDataFcn function that returns immediately. |
- * |
- * Setting http_content_type is optional, the parameter may |
- * by NULL or the empty string. |
- */ |
-typedef SECStatus (*SEC_HttpRequest_SetPostDataFcn)( |
- SEC_HTTP_REQUEST_SESSION request, |
- const char *http_data, |
- const PRUint32 http_data_len, |
- const char *http_content_type); |
- |
-/* |
- * This function sets an additional HTTP protocol request header. |
- * If a particular implementation supports it, one or multiple headers |
- * can be added to the request by calling this function once or multiple |
- * times, prior to activating the request with TryFcn. |
- * |
- * An implementation that does not support setting additional headers |
- * should implement an AddRequestHeaderFcn function that returns immediately. |
- */ |
-typedef SECStatus (*SEC_HttpRequest_AddHeaderFcn)( |
- SEC_HTTP_REQUEST_SESSION request, |
- const char *http_header_name, |
- const char *http_header_value); |
- |
-/* |
- * This function initiates or continues an HTTP request. After |
- * parameters have been set with the Create function and, optionally, |
- * modified or enhanced with the AddParams function, this call creates |
- * the socket connection and initiates the communication. |
- * |
- * If a timeout value of zero is specified, indicating non-blocking |
- * I/O, the client creates a non-blocking socket, and returns a status |
- * of SECWouldBlock and a non-NULL PRPollDesc if the operation is not |
- * complete. In that case all other return parameters are undefined. |
- * The caller is expected to repeat the call, possibly after using |
- * PRPoll to determine that a completion has occurred, until a return |
- * value of SECSuccess (and a NULL value for pPollDesc) or a return |
- * value of SECFailure (indicating failure on the network level) |
- * is obtained. |
- * |
- * http_response_data_len is both input and output parameter. |
- * If a pointer to a PRUint32 is supplied, the http client is |
- * expected to check the given integer value and always set an out |
- * value, even on failure. |
- * An input value of zero means, the caller will accept any response len. |
- * A different input value indicates the maximum response value acceptable |
- * to the caller. |
- * If data is successfully read and the size is acceptable to the caller, |
- * the function will return SECSuccess and set http_response_data_len to |
- * the size of the block returned in http_response_data. |
- * If the data read from the http server is larger than the acceptable |
- * size, the function will return SECFailure. |
- * http_response_data_len will be set to a value different from zero to |
- * indicate the reason of the failure. |
- * An out value of "0" means, the failure was unrelated to the |
- * acceptable size. |
- * An out value of "1" means, the result data is larger than the |
- * accpeptable size, but the real size is not yet known to the http client |
- * implementation and it stopped retrieving it, |
- * Any other out value combined with a return value of SECFailure |
- * will indicate the actual size of the server data. |
- * |
- * The caller is permitted to provide NULL values for any of the |
- * http_response arguments, indicating the caller is not interested in |
- * those values. If the caller does provide an address, the HttpClient |
- * stores at that address a pointer to the corresponding argument, at |
- * the completion of the operation. |
- * |
- * All returned pointers will be owned by the the HttpClient |
- * implementation and will remain valid until the call to |
- * SEC_HttpRequest_FreeFcn. |
- */ |
-typedef SECStatus (*SEC_HttpRequest_TrySendAndReceiveFcn)( |
- SEC_HTTP_REQUEST_SESSION request, |
- PRPollDesc **pPollDesc, |
- PRUint16 *http_response_code, |
- const char **http_response_content_type, |
- const char **http_response_headers, |
- const char **http_response_data, |
- PRUint32 *http_response_data_len); |
- |
-/* |
- * Calling CancelFcn asks for premature termination of the request. |
- * |
- * Future calls to SEC_HttpRequest_TrySendAndReceive should |
- * by avoided, but in this case the HttpClient implementation |
- * is expected to return immediately with SECFailure. |
- * |
- * After calling CancelFcn, a separate call to SEC_HttpRequest_FreeFcn |
- * is still necessary to free resources. |
- */ |
-typedef SECStatus (*SEC_HttpRequest_CancelFcn)( |
- SEC_HTTP_REQUEST_SESSION request); |
- |
-/* |
- * Before calling this function, it must be assured the request |
- * has been completed, i.e. either SEC_HttpRequest_TrySendAndReceiveFcn has |
- * returned SECSuccess, or the request has been canceled with |
- * a call to SEC_HttpRequest_CancelFcn. |
- * |
- * This function frees the client state object, closes all sockets, |
- * discards all partial results, frees any memory that was allocated |
- * by the client, and invalidates all response pointers that might |
- * have been returned by SEC_HttpRequest_TrySendAndReceiveFcn |
- */ |
-typedef SECStatus (*SEC_HttpRequest_FreeFcn)( |
- SEC_HTTP_REQUEST_SESSION request); |
- |
-typedef struct SEC_HttpClientFcnV1Struct { |
- SEC_HttpServer_CreateSessionFcn createSessionFcn; |
- SEC_HttpServer_KeepAliveSessionFcn keepAliveSessionFcn; |
- SEC_HttpServer_FreeSessionFcn freeSessionFcn; |
- SEC_HttpRequest_CreateFcn createFcn; |
- SEC_HttpRequest_SetPostDataFcn setPostDataFcn; |
- SEC_HttpRequest_AddHeaderFcn addHeaderFcn; |
- SEC_HttpRequest_TrySendAndReceiveFcn trySendAndReceiveFcn; |
- SEC_HttpRequest_CancelFcn cancelFcn; |
- SEC_HttpRequest_FreeFcn freeFcn; |
-} SEC_HttpClientFcnV1; |
- |
-typedef struct SEC_HttpClientFcnStruct { |
- PRInt16 version; |
- union { |
- SEC_HttpClientFcnV1 ftable1; |
- /* SEC_HttpClientFcnV2 ftable2; */ |
- /* ... */ |
- } fcnTable; |
-} SEC_HttpClientFcn; |
- |
-/* |
- * ocspMode_FailureIsVerificationFailure: |
- * This is the classic behaviour of NSS. |
- * Any OCSP failure is a verification failure (classic mode, default). |
- * Without a good response, OCSP networking will be retried each time |
- * it is required for verifying a cert. |
- * |
- * ocspMode_FailureIsNotAVerificationFailure: |
- * If we fail to obtain a valid OCSP response, consider the |
- * cert as good. |
- * Failed OCSP attempts might get cached and not retried until |
- * minimumSecondsToNextFetchAttempt. |
- * If we are able to obtain a valid response, the cert |
- * will be considered good, if either status is "good" |
- * or the cert was not yet revoked at verification time. |
- * |
- * Additional failure modes might be added in the future. |
- */ |
-typedef enum { |
- ocspMode_FailureIsVerificationFailure = 0, |
- ocspMode_FailureIsNotAVerificationFailure = 1 |
-} SEC_OcspFailureMode; |
- |
-/* |
- * A ResponderID identifies the responder -- or more correctly, the |
- * signer of the response. The ASN.1 definition of a ResponderID is: |
- * |
- * ResponderID ::= CHOICE { |
- * byName [1] EXPLICIT Name, |
- * byKey [2] EXPLICIT KeyHash } |
- * |
- * Because it is CHOICE, the type of identification used and the |
- * identification itself are actually encoded together. To represent |
- * this same information internally, we explicitly define a type and |
- * save it, along with the value, into a data structure. |
- */ |
- |
-typedef enum { |
- ocspResponderID_other = -1, /* unknown kind of responderID */ |
- ocspResponderID_byName = 1, |
- ocspResponderID_byKey = 2 |
-} CERTOCSPResponderIDType; |
- |
-#endif /* _OCSPT_H_ */ |