当前位置: 首页 > 编程语言 > C#

CMS签名-时间戳和计数器签名之间的区别Share

时间:2023-04-10 21:37:06 C#

CMS签名-时间戳和计数器签名之间的区别).我对TimeStamp的理解是它对当前时间进行签名。不确定是否应该是当前时间+原始签名内容?请帮忙。我的主要困惑是生成的TimeStamp是否被添加到原始签名的Singed/Unsigned属性中。或者它会被添加为CounterSignature吗?时间戳的目的是证明签名是在给定时间之前创建的,因此要使用时间戳,您必须签署数字签名和当前时间。时间戳必须作为未签名属性添加到CMS签名中。除了SignatureTimeStampToken本身就是签名。要向CMS添加时间戳,可以使用SignatureTimeStamp属性,该属性具有1.2.840.113549.1.9.16.2.14对象标识符和ASN.1类型(以下信息均摘自CMS和TSPRFC)SignatureTimeStampToken::=TimeStampTokenTimeStampToken::=ContentInfo--contentType是id-signedData([CMS])--内容是SignedData([CMS])SignedData::=SEQUENCE{版本CMSVersion,digestAlgorithmsDigestAlgorithmIdentifiers,encapContentInfoIncapsulateContentCertificateSetOPTIONAL,crls[1]IMPLICITRevocationInfoChoicesOPTIONAL,signerInfosSignerInfos}在TimeStampToken中,SignedData构造的EncapsulatedContentInfo类型的字段含义如下:eContentType是唯一指定内容类型的对象标识。对于时间戳标记,它被定义为:id-ct-TSTInfoOBJECTIDENTIFIER::={iso(1)member-body(2)us(840)rsadsi(113549)pkcs(1)pkcs-9(9)smime(16)ct(1)4}eContent是内容本身,作为八位字节串携带。eContent应为TSTInfo的DER编码值。时间戳令牌不得包含TSA签名以外的任何签名。TSA证书的证书标识符(ESSCertID)必须作为signerInfo属性包含在SigningCertificate属性中。TSTInfo::=SEQUENCE{versionINTEGER{v1(1)},policyTSAPolicyId,messageImprintMessageImprint,--必须与--TimeStampReqserialNumberINTEGER中的类似字段具有相同的值,--时间戳用户必须准备好适应整数——最多160位。genTimeGeneralizedTime,accuracyAccuracyOPTIONAL,orderingBOOLEANDEFAULTFALSE,nonceINTEGEROPTIONAL,--如果存在类似字段,则必须存在--在TimeStampReq中。在那种情况下,它必须具有相同的值。tsa[0]GeneralNameOPTIONAL,extensions[1]IMPLICITExtensionsOPTIONAL}希望对您有所帮助,以上是C#学习教程:CMS签名——时间戳和反签名有什么区别?了解更多C#学习教程,希望大家多多关注~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: