Добавить время подписания в подписанную CMS PKCS7?

Я пытаюсь добавить атрибут времени подписи в файл, который я подписываю с помощью SignedCMS.

private byte[] signFile(byte[] fileContent, X509Certificate2 verificationCert)
{
   ContentInfo contentInfo = new ContentInfo(fileContent);

   SignedCms signedCMS = new SignedCms(contentInfo);

   CmsSigner cmsSigner = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, verificationCert);

   Oid signedDate = new Oid("1.2.840.113549.1.9.5"); //oid for PKCS #9 signing time 

   signedDate.Value = DateTime.Now.ToString();

   CryptographicAttributeObject cryptoAtty = new CryptographicAttributeObject(signedDate);

   cmsSigner.SignedAttributes.Add(cryptoAtty);

   signedCMS.ComputeSignature(cmsSigner, false);

   byte[] encoded = signedCMS.Encode();

   return encoded;
}

ошибка при кодировании:

CryptographicException: The object identifier is poorly formatted. 

любые идеи о том, как правильно добавить момент подписания? Я думаю, что мне, возможно, придется преобразовать время подписания в ASN.1 закодированный объект и добавьте это в cryptoAttyзначения. Как преобразовать дату / время в ASN.1 объект, закодированный?

1 ответов


alt text

Ну, это было легко.

cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime());