#ifndef _TSA_TEMPLATES_H_
#define _TSA_TEMPLATES_H_
#include <Security/secasn1t.h>
#include <Security/x509defs.h>
#include <Security/X509Templates.h>
#include <Security/nameTemplates.h>
#include "cmstpriv.h"
#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; CSSM_DATA millis; CSSM_DATA micros; } SecAsn1TSAAccuracy;
typedef struct {
CSSM_DATA version; SecAsn1TSAMessageImprint messageImprint;
TSAPolicyId reqPolicy; CSSM_DATA nonce; CSSM_DATA certReq; CSSM_X509_EXTENSIONS **extensions; } SecAsn1TSATimeStampReq;
#pragma mark ----- TSA Response -----
typedef struct {
CSSM_DATA status;
CSSM_DATA statusString; CSSM_DATA failInfo; } SecAsn1TSAPKIStatusInfo;
typedef SecCmsContentInfo SecTimeStampToken;
typedef struct {
SecAsn1TSAPKIStatusInfo status;
SecTimeStampToken timeStampToken; } SecAsn1TimeStampResp;
typedef struct {
SecAsn1TSAPKIStatusInfo status;
CSSM_DATA timeStampTokenDER; } SecAsn1TimeStampRespDER;
typedef struct {
CSSM_DATA version; TSAPolicyId reqPolicy; SecAsn1TSAMessageImprint messageImprint;
CSSM_DATA serialNumber; CSSM_DATA genTime;
SecAsn1TSAAccuracy accuracy; CSSM_DATA ordering; CSSM_DATA nonce; CSSM_DATA tsa; CSSM_X509_EXTENSIONS **extensions; } 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