Как использовать атрибуты Microsoft PKCS # 9 SignerInfo в приложении Java? - PullRequest
1 голос
/ 09 февраля 2010

В http://msdn.microsoft.com/en-us/library/system.security.cryptography.pkcs(VS.85).aspx мы видим, что определены следующие атрибуты цифровой подписи:

  • Pkcs9ContentType
  • Pkcs9DocumentDescription
  • Pkcs9DocumentName
  • Pkcs9MessageDigest
  • Pkcs9SigningTime

Из них Pkcs9DocumentDescription и Pkcs9DocumentName отсутствуют в спецификации PKCS # 9 . У меня есть приложение Java, которое использует Bouncy Castle , и я хочу, чтобы мое приложение могло создавать цифровые подписи, которые имеют эти два атрибута.

Итак, у меня два вопроса: как это сделать? Должен ли я сделать это?

1 Ответ

0 голосов
/ 09 февраля 2010

Вам придется вручную создавать атрибуты, используя OID, например:

ObjectIdentifier dnOid = new ObjectIdentifier("1.3.6.1.4.1.311.88.2.1");
ObjectIdentifier ddOid = new ObjectIdentifier("1.3.6.1.4.1.311.88.2.2");
ASN1Set nameSet = new DERSet(new ASN1Encodable[] {new DERPrintableString("name")});
ASN1Set descriptionSet = new DERSet(new ASN1Encodable[] {new DERPrintableString("description"}));
Attribute documentName = new Attribute(dnOid, nameSet);
Attribute documentDescription = new Attribute(ddOid, descriptionSet);

Я должен отметить, что использование DERPrintableString для значения атрибута - моя лучшая догадка. Я не могу найти документацию для указания правильного типа.

Что касается , если вы , нет ничего плохого в использовании атрибутов, которые не из PKCS #9. Вам просто не следует полагаться на то, что внешняя система сможет их использовать.

...