14.10.2004 15:47:46Authenticated Attributes Ответов: 10
Александр
Добрый день?
Хочу добавить к CMSG_SIGNER_ENCODE_INFO аутентифицируемый аттрибут в виде строки текста. Какой ОИД мне нужно указать в параметре pszObjId структуры CRYPT_ATTRIBUTE? И нужно ли кодировать эту строку (если нужно, то в какой тип)?
Спасибо.
 
Ответы:
15.10.2004 11:07:48kure
Есть стандартизованный набор атрибутов.
Они определены в PKCS#9.

http://www.rsasecurity.com/rsalabs/node.asp?id=2124

Если не подходит существующий, можно определить свой.
15.10.2004 11:30:36Александр
Ни один тип аттрибута для использования в PKCS#7 мне не подходит. Ведь мне нужно добавить, по сути дела, комментарии. как мне зарегистрировать свой ОИД? и будут ли этот тип аттрибута понимать другие приложения?
15.10.2004 11:44:31kure
Конечно не будут понимать.
Ведь если вы хотите добавить атрибут, то добавляете какие то определенные требования по его интерпретированию.
А их нужно огласить.
15.10.2004 11:54:57Александр
Пояните пожалуйста как мне это можно сделать.
15.10.2004 12:24:54kure
Описывает атрибут, его назначение, порядок его создания и требования по его интерпретации при обработке.
Если он используется только в вашем ПО сами обеспечиваете его создание и обработку.
Если хотите чтобы он обрабатывался в другом ПО (если это технически возможно), ту нужно это отразить в трребованиях (нр, порядок использования ЭЦП в документообороте).
15.10.2004 13:25:33Александр
Какими функциями CryptoApi это можно сделать?
18.10.2004 12:07:38Александр
Может быть вопрос не совсем понятен.
Я имел в виду: какими функциями CryptoApi можно зарегистрировать свой ОИД, и какими функциями с ним потом работать?
18.10.2004 16:20:57kure
Аутентифицируемые атрибуты входят в структуру
CMSG_SIGNER_ENCODE_INFO

typedef struct _CMSG_SIGNER_ENCODE_INFO { DWORD cbSize; PCERT_INFO pCertInfo; HCRYPTPROV hCryptProv; DWORD dwKeySpec; CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; void* pvHashAuxInfo; DWORD cAuthAttr; PCRYPT_ATTRIBUTE rgAuthAttr; DWORD cUnauthAttr; PCRYPT_ATTRIBUTE rgUnauthAttr; CERT_ID SignerId; CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm; void* pvHashEncryptionAuxInfo;
} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;

Соответственно атрибут это структура
typedef struct _CRYPT_ATTRIBUTE { LPSTR pszObjId;
DWORD cValue;
PCRYPT_ATTR_BLOB rgValue;
} CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE;

идентификатор - LPSTR
18.10.2004 16:20:57kure
Аутентифицируемые атрибуты входят в структуру
CMSG_SIGNER_ENCODE_INFO

typedef struct _CMSG_SIGNER_ENCODE_INFO { DWORD cbSize; PCERT_INFO pCertInfo; HCRYPTPROV hCryptProv; DWORD dwKeySpec; CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; void* pvHashAuxInfo; DWORD cAuthAttr; PCRYPT_ATTRIBUTE rgAuthAttr; DWORD cUnauthAttr; PCRYPT_ATTRIBUTE rgUnauthAttr; CERT_ID SignerId; CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm; void* pvHashEncryptionAuxInfo;
} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;

Соответственно атрибут это структура
typedef struct _CRYPT_ATTRIBUTE { LPSTR pszObjId;
DWORD cValue;
PCRYPT_ATTR_BLOB rgValue;
} CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE;

идентификатор - LPSTR
18.10.2004 16:36:34Александр
Всё то, что Вы написали, мне известно, а меня интересовало как программно это можно реализовать.

Ладно оставим этот вопрос. :=)