Здравствуйте, пробовали сделать наоборот - создаем подпись в jcp, я проверяю в csp - результат тот же - false
все необходимое для работы проверено, поэтому привожу код непосредственно по работе с принятыми данными
FILE *hFile;
BYTE rgbFile[BUFSIZE];
DWORD cbRead = 0;
BOOL bResult = false;
HCRYPTKEY hPubKey;
hFile = fopen("/media/58FF-9FCC/newCertificate.cer", "r+b");
if(hFile)
printf("The file was opened successfully\n");
else
printf("The error of file opening");
do
{
cbRead = (DWORD)fread(rgbFile, 1, BUFSIZE, hFile);
if(!cbRead)
{
bResult = TRUE;
break;
}
}
while(!feof(hFile));
printf("Number of items read is %d \n", cbRead);
if (pSignerCert = CertCreateCertificateContext(CERT_TYPE, rgbFile, cbRead))
{
printf("a new certificate has been created\n");
if(CryptImportPublicKeyInfo(hProv, CERT_TYPE, &(pSignerCert->pCertInfo->SubjectPublicKeyInfo), &hPubKey))
printf("import was successfully performed\n");
else
{ printf("import was bad");
return -1;
}
unsigned char* sign = NULL;
int leng;
std::string inp = "aba7cc287acbf39a593594f6060930530553413d58c5bb974dd179590c8680ef3bac67bdc27822f7a4437b9468eece2c366bd2231073e61d0feb20fa34f6d997";
//подпись
std::cout << inp.length() << std::endl;
string_to_bytearray(inp, sign, leng);
for(i = 0 ; i < leng ; i++)
{
printf("%02x ",sign[i]); //делаю для проверки функции, которую взял со сторонних сайтов ибо родной такой функции нет - как будет видно по выводу - рез-т //аналогичен
}
if (!CryptVerifySignature(hHash, (BYTE*) sign, (DWORD) leng, hPubKey, 0, 0)) {
printf("\nvse ploho");
return -1;
}
delete[] sign;
Вывод работы:
The file was opened successfully
Number of items read is 787
a new certificate has been created
import was successfully performed
128
ab a7 cc 28 7a cb f3 9a 59 35 94 f6 06 09 30 53 05 53 41 3d 58 c5 bb 97 4d d1 79 59 0c 86 80 ef 3b ac 67 bd c2 78 22 f7 a4 43 7b 94 68 ee ce 2c 36 6b d2 23 10 73 e6 1d 0f eb 20 fa 34 f6 d9 97
vse ploho
Как видно - импорт ключа открытого из сертификата, присланного мне коллегой, прошел успешно...hHash - хэндл хэша снятого с той же строки "Some Data 1", однако проверка подписи возвращает FALSE
Буду очень признателен за любую оказанную помощь!!