Проблема с ключами.
От: MuzOboz Россия  
Дата: 13.10.03 06:44
Оценка:
Заранее прошу прощенья, если не совсем в тот форум...
Проблема с цифрофой подписью (DSA). Клиент на VC++, сервер на JAVA.
Посредством CryptoAPI создаем ключи и экспортируем public key: (проверки пропущены)
    HCRYPTPROV    hProvd = 0;
    HCRYPTKEY hKey = 0;
    DWORD dwBlobLen = 0;
    PBYTE    pbKeyBlob = NULL;
    FILE *hDestination;
 
    // активизация криптопровайдера
  CryptAcquireContext(&hProvd, NULL, "Microsoft Base DSS Cryptographic Provider",
                  PROV_DSS, 0); 
 if(lastError == NTE_BAD_KEYSET){
    CryptAcquireContext(&hProv, NULL, "Microsoft Base DSS Cryptographic Provider",
        PROV_DSS, CRYPT_NEWKEYSET);

 //showError(GetLastError());
 // генерация ключа
  res = CryptGenKey(hProvd, CALG_DSS_SIGN, CRYPT_EXPORTABLE, &hKey );
 // создание public ключа
  res = CryptGetUserKey(hProvd, AT_SIGNATURE, &hKey);
 // экспортирование ключа
  res = CryptExportKey(hKey, 0, PUBLICKEYBLOB, 0, NULL, &dwBlobLen);
  pbKeyBlob = new BYTE[dwBlobLen];
  res = CryptExportKey(hKey, 0, PUBLICKEYBLOB, 0, pbKeyBlob, &dwBlobLen);
  // --- сохранение ключа в файле
  hDestination = fopen("c:\\publicKey.key", "wb");
  fwrite(pbKeyBlob, 1, dwBlobLen, hDestination);
  fclose(hDestination);

  delete[]pbKeyBlob;

Затем из кода JAVA пытаюсь загрузить этот ключ:
    byte[] key = null;
    PublicKey publicKey = null;
    try{
    // readKeyFromFile - читает из файла и возвращает его содержимое в виде byte[]
        if( (key = readKeyFromFile("с:/publicKey.key")) != null )  
            publicKey = new DSAPublicKey(key);

        }catch(Exception ex){
            System.err.println("Error [readPublicKey]: " + ex.toString());
        }

В результате получаю:
java.security.InvalidKeyException: invalid key format
Может кто сталкивался с такой проблемой?
Заранее спасибо.
Re: Проблема с ключами.
От: pvnic  
Дата: 13.10.03 07:41
Оценка:
Здравствуйте, MuzOboz, Вы писали:

попробуй сгенерить ключи на обоих языках, и посмотри, совпадают форматы(длины, значения и т.д.)...
Re[2]: Проблема с ключами.
От: MuzOboz Россия  
Дата: 13.10.03 09:25
Оценка:
Пробовал, на при генерации ключа из CryptAPI размер файла с ключом получается 444 байта,
а из JAVA 443. (При задании длины ключа 1024 байта). Возможно я с флагами что не так делаю..
Re[3]: Проблема с ключами.
От: pvnic  
Дата: 13.10.03 10:42
Оценка:
Здравствуйте, MuzOboz, Вы писали:

MO>Пробовал, на при генерации ключа из CryptAPI размер файла с ключом получается 444 байта,

MO>а из JAVA 443. (При задании длины ключа 1024 байта). Возможно я с флагами что не так делаю..

а символы совпадают? может там в конец дописать #10 or #13?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.