Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.10.2008(UTC) Сообщений: 70
|
День добрый =)) СОС создается, все нормально, кроме САБЖА. По сути мне нужно перевести CString в BYTE*. То есть у меня есть переменная sSerial, ее нужно поместить в CRLentry[z].SerialNumber.pbData (CRLentry - CRL_ENTRY). Пробовал двумя способами 1) Код:CString SN = "FG6D1";
CERT_RDN_VALUE_BLOB blob;
blob.cbData = strlen(SN);
blob.pbData = (LPBYTE)SN.GetBuffer();
CERT_NAME_VALUE val;
val.dwValueType = CERT_RDN_PRINTABLE_STRING;
val.Value = blob;
CryptEncodeObject(ENCODING, X509_ANY_STRING,
(LPVOID)&val, 0, &CRLentry[0].SerialNumber.cbData);
CRLentry[0].SerialNumber.pbData = (BYTE*)malloc(CRLentry[0].SerialNumber.cbData);
CryptEncodeObject(ENCODING, X509_ANY_STRING,
(LPVOID)&val, CRLentry[0].SerialNumber.pbData, &(CRLentry[0].SerialNumber.cbData));
2) Код:CString SN = "FG6D1";
DWORD const dwSLen= SN .GetLength()/2;
BYTE *pbSNData= new BYTE [dwSLen+1];
LPTSTR szSN= SN .GetBuffer(SN .GetLength());
StrToByte(SN .GetLength(), szSN, pbSNData);
SN .ReleaseBuffer();
CRLentry[0].SerialNumber.pbData = pbSNData;
CRLentry[0].SerialNumber.cbData = dwSLen;
При открытии созданного СОС указанный серийный номер и рядом не лежит.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
первый способ неправильный, никаких ASN.1 кодировок для серийного номера не надо. а что такое StrToByte? |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close