Импорт ключа
Добрый день. Я реализую шифрование сообщения при помощи открытого ключа получателя и закрытого отправителя. 
Отправитель - сертификат с закрытым ключом сформированный через КриптоПро CSP
Получатель - сертификат с закрытым ключом. Закрытый ключ расположен на токене РутокенЭЦП
Алгоритм моих действий следующий:
1. Получаем из сертификата получателя BLOB открытого ключа следующим образом:
    if(dwError==ERROR_SUCCESS)
    {
        //Импортируем открытый ключ
        if(m_pcryptoAPI->CryptImportPublicKeyInfoEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
            &(pRecipientCert->pCertInfo->SubjectPublicKeyInfo),
            0,
            0,
            NULL,
            &hRecipientPublicKey))
        {
            //Экспортируем открытый ключ в BLOB
            if(m_pcryptoAPI->CryptExportKey(hRecipientPublicKey,
                NULL,PUBLICKEYBLOB,NULL,pbtPublicKeyBlob,&nPublicKeyBlobSize))
            {
                pbtPublicKeyBlob=new BYTE[nPublicKeyBlobSize];
                if(pbtPublicKeyBlob==NULL)
                    dwError=E_OUTOFMEMORY;
                else
                {
                    if(!m_pcryptoAPI->CryptExportKey(hRecipientPublicKey,
                        NULL,PUBLICKEYBLOB,NULL,pbtPublicKeyBlob,&nPublicKeyBlobSize))
                        dwError=::GetLastError();
                    //Уничтожаем объект открытого ключа, т.к. в дальнейшем будем использовать только его BLOB
                    m_pcryptoAPI->CryptDestroyKey(hRecipientPublicKey);
                    hRecipientPublicKey=NULL;
                }
            }
            else
                dwError=::GetLastError();
        }
        else
            dwError=::GetLastError();
    }2. Получаем закрытый ключ отправителя так:
    if(dwError==ERROR_SUCCESS)
    {
        //Получаем закрытый ключ отправителя
        if(!m_pcryptoAPI->CryptGetUserKey(AT_KEYEXCHANGE,&hSenderPrivateKey))
            dwError=::GetLastError();
    }3. Импортируем открытый ключ получателя на закрытый отправителя
        if(dwError==ERROR_SUCCESS)
    {
        //получаем ключ согласования импортом открытого ключа получателя на закрытый отправителя 
        if(m_pcryptoAPI->CryptImportKey(pbtPublicKeyBlob,nPublicKeyBlobSize,hSenderPrivateKey,NULL,&hAgreeKey))
        {
                }
                else    
                    dwError=::GetLastError();
     }На шаге №3 получаем ошибку 0x80090019 (-2146893799) набор ключей не определен
При этом, если в качестве получателя используется сертификат, закрытый ключ от которого расположен в реестре или на обычной флэшке (сформированный через КриптоПро), то все превосходно отрабатывает.
Вопрос в том, что не так.
