Приветствую всех заглянувших на огонек в ветку Встраиванья.
Столкнулся со следующей проблемой.
Очень сильно хочется закодировать версию операционной системы в запрос на сертификат.
Все получается, кроме одного момента.
В главных ролях снимались:
ОС версия строка (тип WideString):
6.1.7601.2OSverName : CERT_NAME_VALUE
AttrBlobOs: CRYPT_ATTR_BLOB
Сюжет фильма такой:
OSverName.dwValueType := CERT_RDN_IA5_STRING;
OSverName.Value.cbData := 20; // для наглядности именно столько нужно, чтобы Целиком закодировать строку 6.1.7601.2
OSverName.Value.pbData := LPByte(GetOsVersion);
CryptEncodeObject(X509_ASN_ENCODING or PKCS_7_ASN_ENCODING, X509_UNICODE_ANY_STRING, @OSverName, 0, AttrBlobOs.cbData);
ShowMessage(SysErrorMessage(GetLastError));
GetMem(AttrBlobOs.pbData ,AttrBlobOs.cbData);
CryptEncodeObject(X509_ASN_ENCODING or PKCS_7_ASN_ENCODING, X509_UNICODE_ANY_STRING , @OSverName, AttrBlobOs.pbData, AttrBlobOs.cbData);
Собственно суть в следующем.
При «съемке» этого захватывающего фильма
OSverName.Value.cbData нельзя "сделать" больше или равным
18.
В итоге, максимум, что удается получить из строки «6.1.7601.2» в запросе это «
6.1.7601».
Есть ли рабочий способ закодировать версию операционной системы целиком?
Отредактировано пользователем 7 октября 2012 г. 5:53:16(UTC)
| Причина: Не указана