TSA收到申请消息后,无论申请成功还是失败,都要给请求方返回一个响应消息,该响应消息或者是正确的时间戳,或者是包含了失败信息的时间戳。
定义时间戳响应消息的ASN.1数据格式如下:
TimeStampResp ::= SEQUENCE {
status PKIStatusInfo,
timeStampToken TimeStampToken OPTIONAL
}
其中:
PKIStatusInfo ::= SEQUENCE {
status PKIStatus,
statusString PKIFreeText OPTIONAL,
failInfo PKIFailureInfo OPTIONAL
}
其中:
PKIStatus ::= INTEGER {
granted (0),
-- when the PKIStatus contains the value zero a TimeStampToken, as
requested, is present.
grantedWithMods (1),
-- when the PKIStatus contains the value one a TimeStampToken,
with modifications, is present.
rejection (2),
waiting (3),
revocationWarning (4),
Adams, et al. Standards Track [Page 6]
RFC 3161 Time-Stamp Protocol (TSP) August 2001
-- this message contains a warning that a revocation is
-- imminent
revocationNotification (5)
-- notification that a revocation has occurred
}
PKIStatusInfo 中的status值为0或者1时,响应消息中的timeStampToken就应出现,否则timeStampToken就不能出现。
status不能有除PKIStatus外的其他值,请求方如果收到一个不识别的值,必须报告错误。
申请失败时用statusString给出一个说明原因的字符串。statusString的类型是PKIFreeText,PKIFreeText的定义为:
PKIFreeText ::= SEQUENCE SIZE(1..MAX) OF UTF8Sting
每一个UTF-8 String应包含一个语言标签,该标签按照RFC 3066定义,用来指示UTF-8 String的语言。
failInfo用来说明时间戳请求被拒绝的具体原因,具体值如下:
PKIFailureInfo ::= BIT STRING {
badAlg (0), -- 申请使用了不支持的算法
badRequest (2), -- 非法的申请
badDataFormat (5), -- 数据格式错误
timeNotAvailable (14), -- TSA的可信时间源出现问题
unacceptedPolicy (15), -- 不支持申请消息中声明的策略
unacceptedExtension (16), -- 申请消息中包含了不支持的扩展
addInfoNotAvailable (17) -- 有不理解或不可用的附加信息
systemFailure (25) -- 系统内部错误
}
failInfo不能有除PKIFailureInfo外的其他值,请求方如果收到一个不识别的值,必须报告错误。