]> git.saurik.com Git - apple/security.git/blobdiff - Security/libsecurity_smime/lib/tsaTemplates.h
Security-57031.1.35.tar.gz
[apple/security.git] / Security / libsecurity_smime / lib / tsaTemplates.h
diff --git a/Security/libsecurity_smime/lib/tsaTemplates.h b/Security/libsecurity_smime/lib/tsaTemplates.h
new file mode 100644 (file)
index 0000000..5fd1e06
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2012,2014 Apple Inc. All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ *
+ * tsaTemplates.h -  ASN1 templates Time Stamping Authority requests and responses.
+ * see rfc3161.asn1 for ASN.1 and other comments
+ */
+
+#ifndef        _TSA_TEMPLATES_H_
+#define _TSA_TEMPLATES_H_
+
+#include <Security/secasn1t.h>
+#include <Security/x509defs.h>      /* CSSM_X509_ALGORITHM_IDENTIFIER */
+#include <Security/X509Templates.h> /* NSS_CertExtension */
+#include <Security/nameTemplates.h> /* NSS_GeneralName and support */
+#include "cmstpriv.h"               /* SecCmsContentInfo */
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#pragma mark ----- TSA Request -----
+
+
+typedef CSSM_OID TSAPolicyId;
+
+typedef struct {
+       CSSM_X509_ALGORITHM_IDENTIFIER  hashAlgorithm;
+       CSSM_DATA                       hashedMessage;
+} SecAsn1TSAMessageImprint;
+
+typedef struct {
+       CSSM_DATA                               seconds;    // INTEGER optional
+       CSSM_DATA                               millis;     // INTEGER optional
+       CSSM_DATA                               micros;     // INTEGER optional
+} SecAsn1TSAAccuracy;
+
+typedef struct {
+    CSSM_DATA                   version;            // INTEGER (1)
+    SecAsn1TSAMessageImprint    messageImprint;
+    TSAPolicyId                 reqPolicy;          // OPTIONAL
+    CSSM_DATA                   nonce;              // INTEGER optional
+    CSSM_DATA                   certReq;            // BOOL
+    CSSM_X509_EXTENSIONS        **extensions;       // [0] IMPLICIT Extensions OPTIONAL
+} SecAsn1TSATimeStampReq;
+
+#pragma mark ----- TSA Response -----
+
+typedef struct {
+    CSSM_DATA                   status;
+       CSSM_DATA                   statusString;      // OPTIONAL
+    CSSM_DATA                   failInfo;          // OPTIONAL
+} SecAsn1TSAPKIStatusInfo;
+
+typedef SecCmsContentInfo SecTimeStampToken;
+
+typedef struct {
+    SecAsn1TSAPKIStatusInfo     status;
+    SecTimeStampToken           timeStampToken;     // OPTIONAL
+} SecAsn1TimeStampResp;
+
+/*
+    We use this to grab the raw DER, but not decode it for subsequent
+    re-insertion into a CMS message as an unsigned attribute
+*/
+    
+typedef struct {
+    SecAsn1TSAPKIStatusInfo     status;
+    CSSM_DATA                   timeStampTokenDER;     // OPTIONAL
+} SecAsn1TimeStampRespDER;
+
+typedef struct {
+    CSSM_DATA                   version;            // DEFAULT 1    *****
+    TSAPolicyId                 reqPolicy;          // OPTIONAL
+    SecAsn1TSAMessageImprint    messageImprint;
+    CSSM_DATA                   serialNumber;       // INTEGER
+    CSSM_DATA                   genTime;
+    SecAsn1TSAAccuracy          accuracy;           // OPTIONAL
+    CSSM_DATA                   ordering;           // BOOLEAN DEFAULT FALSE
+    CSSM_DATA                   nonce;              // INTEGER optional
+    CSSM_DATA                   tsa;                // [0] GeneralName         OPTIONAL
+    CSSM_X509_EXTENSIONS        **extensions;       // [1] IMPLICIT Extensions OPTIONAL
+} SecAsn1TSATSTInfo;
+
+typedef enum {
+       PKIS_Granted = 0,
+       PKIS_GrantedWithMods = 1,
+       PKIS_Rejection = 2,
+       PKIS_Waiting = 3,
+       PKIS_RevocationWarning = 4,
+       PKIS_RevocationNotification = 5
+} SecAsn1TSAPKIStatus;
+
+typedef enum {
+       FI_BadAlg = 0,
+       FI_BadRequest = 2,
+       FI_BadDataFormat = 5,
+       FI_TimeNotAvailable = 14,
+       FI_UnacceptedPolicy = 15,
+       FI_UnacceptedExtension = 16,
+       FI_AddInfoNotAvailable = 17,
+       FI_SystemFailure = 25
+} SecAsn1TSAPKIFailureInfo;
+
+    
+#ifdef  __cplusplus
+}
+#endif
+
+#endif /* _TSA_TEMPLATES_H_ */
+