| ||||
| ||||
доброго всем времени суток! для передачи сессионого ключа использую шифрование ключами из сертификатов cer/pfx. Из cer ключ импортируется нормально, с импортом из pfx проблема: AssignFile(F, KeyFile); try Reset(F, 1); encCertLen := FileSize(F); GetMem(encCert, encCertLen); try BlockRead(F, encCert^, encCertLen); pPFX.cbData := encCertLen; pPFX.pbData := encCert; GetMem(passw, 2*Length(password)+2); try StringToWideChar(password, passw, Length(password)*2+2); SertStore := PFXImportCertStore(@pPFX,passw, CRYPT_EXPORTABLE); finally FreeMem(passw); end; if (SertStore<>nil) then begin try pCertContext := nil; pCertContext := CertEnumCertificatesInStore(SertStore, nil); // pCertContext := CertEnumCertificatesInStore(SertStore, pCertContext); if (pCertContext<>nil) then try CryptImportPublicKeyInfoEx(bProvider,X509_ASN_ENCODING or PKCS_7_ASN_ENCODING, @pCertContext.pCertInfo.SubjectPublicKeyInfo, CALG_RSA_KEYX, 0, nil, @FpPrivateKey); В дальнейшем при попытке импртировать сессионый ключ if not CryptImportKey(Provider,FKeyBuffer,FKeyBufferSize,FpPrivateKey,0{CRYPT_EXPORTABLE},@Key) then {FKeyBuffer,FKeyBufferSize} здесь лежит сессионый ключ возникает Bad UID. При попытки экспортировать закрытый ключ сразу после импорта из pfx в буфер: Key not valid for use in specified state в чем может быть проблема? заранее спасибо за ответ | ||||
Ответы: | ||||
| ||||
Если вы это пробуете сделать с КриптоПро CSP то не получится. Не поддерживается экспорт долговременного закрытого ключа на пароле в pfx. | ||||