| 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 14.09.2008(UTC)
 Сообщений: 4
 
 | 
            
		      
                Добрый день, Пытаюсь написать JNI-процедуру, которая бы импортировала открытый ключ в X.509-формате: Код:
JNIEXPORT jint JNICALL Java_be_cardon_nativecall_cryptoapi_CryptoAPICalls_CryptImportPublicKey
  (JNIEnv *env, jobject obj, jint hProv, jbyteArray keyEncoded) {
#define szOID_CP_GOST_R3410EL "1.2.643.2.2.19"
#define ENCODING              X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
#define ALG_TYPE_GR3410       (7 << 9)
#define ALG_SID_GR3410        30
#define ALG_SID_GR3410EL      35
#define CALG_GR3410           (ALG_CLASS_SIGNATURE | ALG_TYPE_GR3410 | ALG_SID_GR3410)
#define CALG_GR3410EL         (ALG_CLASS_SIGNATURE | ALG_TYPE_GR3410 | ALG_SID_GR3410EL)
		LPBYTE pbKeyEncoded = (LPBYTE)env->GetByteArrayElements(keyEncoded, 0);
		DWORD dwKeyLen = env->GetArrayLength(keyEncoded);
		LPBYTE pvStructIfno;
		DWORD cbStructInfo = 0;
		HCRYPTKEY hKey;
		CryptDecodeObject(ENCODING, szOID_CP_GOST_R3410EL, pbKeyEncoded, dwKeyLen, 0, NULL, &cbStructInfo);
		if (cbStructInfo == 0){
			const char* msg = "Failed to decode public key";
			throwCryptoAPIException(env, msg);
		}
		pvStructIfno = new BYTE[cbStructInfo];
		if (!CryptDecodeObject(ENCODING, szOID_CP_GOST_R3410EL, pbKeyEncoded, dwKeyLen, 0, pvStructIfno, &cbStructInfo)){
			const char* msg = "Failed to decode public key";
			throwCryptoAPIException(env, msg);
		}
		if (!CryptImportPublicKeyInfoEx(hProv, ENCODING, (PCERT_PUBLIC_KEY_INFO)pvStructIfno, CALG_GR3410, 0, NULL, &hKey)){
			const char* msg = "Failed to import public key";
			throwCryptoAPIException(env, msg);
		}
		env->ReleaseByteArrayElements(keyEncoded, (jbyte*)pbKeyEncoded, JNI_ABORT);
		return (jint)hKey;
}
 Вызов CryptImportPublicKeyInfoEx дает ошибку 0x8009310b (ASN.1 bad tag value met) Пробовал вызывать с CALG_GR3410EL -- тот же эффект. Ключ передается нормальный (по крайней мере, такой же как в сертификате):   На всякий случай он же в аттаче Что посоветуете? С уважением, Владислав Бабин Вложение(я):   pub.key (1kb) загружен 16 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 | 
            
		      
                hProv - откуда получается? | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 14.09.2008(UTC)
 Сообщений: 4
 
 | 
            
		      
                Сам облажался. Вместо szOID_CP_GOST_R3410EL нужно писать X509_PUBLIC_KEY_INFO и тогда все работает | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close