Сохранить сертификат в контейнере

Рутокен L 64K080Z
Мне необходимо положить в контейнер с ключами обмена сертификат.
Сертификат не соответствует паре, экспортирован из контейнера, затем контейнер (по ошибке ) удален и создана ключевая пара обмена ключей в контейнере с тем же именем.

все процедуры генерации, экспорта, подписи, верификации работают.

помогите кто может

CryptSetKeyParam
возвращает
System Error. Code: -2146893819.
Плохие данные
0000047E



function ImportCert(cont, path: string): Boolean;
var
hProv: HCRYPTPROV;
SignKey: HCRYPTKEY;
cert: TMemoryStream;
db: TStringList;
l: Cardinal;
begin
cert := TMemoryStream.Create;
cert.LoadFromFile(path);//загружаю сохраненный сертификат *.cer
Result := False;
try

if not CryptAcquireContext(@hProv, PChar(cont), prov, PROV_GOST_2001_DH, 0)
then
Exit;

if not CryptGetUserKey(hProv, AT_KEYEXCHANGE, @SignKey) then
Exit;

if not CryptSetKeyParam(SignKey, KP_CERTIFICATE, cert.Memory, 0) then
Exit;

Result := true;

finally
// уничтожаем ключ
CryptDestroyKey(SignKey);
// освобождает дескриптор криптопровайдера
CryptReleaseContext(hProv, 0);
cert.Free;
end;
end;

Re: Сохранить сертификат в контейнере

ed06 пишет:

Сертификат не соответствует паре, экспортирован из контейнера, затем контейнер (по ошибке ) удален и создана ключевая пара обмена ключей в контейнере с тем же именем.

Здравствуйте!

Правильно ли я понял, что Вы удалили контейнер с ключами, пересоздали его с тем же именем, сгенерировали новую ключевую пару и хотите поместить в контейнер старый сертификат, от уничтоженного открытого ключа? Ключ новый, а сертификат старый, ему не соответствующий?