2010-07-23 5 views
1

Je souhaite générer des encapsuleurs JNI à partir du code C/C++.Problème avec le code JNI généré par SWIG sur Android

Voici mon fichier d'interface.

/* aes_security.i */ 
%module jni_security_example 
%{ 
    #include "pbkdf2.h" 
%} 

extern int pbkdf2_sha1 (const char *passphrase, size_t passphraseLength, 
     const char *SSID, size_t SSIDlen, 
     unsigned int iterationCount, 
     char *aeskey, size_t keyLength); 

extern int GenrateIV_16_Bytes(unsigned char *IV); 

Voici bout de SWIG généré code Java

public static int pbkdf2_sha1(String passphrase, long passphraseLength, 
String SSID, long SSIDlen, long encryptGrade, String key, 
long keyLength) { 
    return cot_jni_security_exampleJNI.pbkdf2_sha1(passphrase, 
    passphraseLength, SSID, SSIDlen, encryptGrade, key, keyLength); 
} 

public static int GenrateIV_16_Bytes(SWIGTYPE_p_unsigned_char IV) { 
    return cot_jni_security_exampleJNI 
    .GenrateIV_16_Bytes(SWIGTYPE_p_unsigned_char.getCPtr(IV)); 
} 

Voici comment j'invoquer le code JNI.

private String PASSPHRASE = "password"; 
private String SSID = "dummyssid"; 
private long iterationCount = 4096; 

public String pbkdf2SHA1() { 

    int keyLength = 32; 
    char[] aesKey = new char[keyLength]; 
    int result = pbkdf2_sha1(PASSPHRASE, (long) PASSPHRASE.length(), SSID, 
    SSID.length(), iterationCount, aesKey.toString(), 
    (long) keyLength); 
    Log.e(TAG, "Result " + result); 

    return new String(aesKey); 

} 

Le code se compile mais lorsque je l'exécute, il se bloque quelque part dans le code C. Toute aide serait appréciée.

Merci.

Répondre

0

Je donne Java ou JNI. Cependant, il pourrait y avoir un problème dans votre code C. essayez d'appeler pbkdf2_sha1() à partir d'une interface C. Si cela bloque son un problème dans le code C. Sinon, découvrez le point d'impact. Peut être qu'il y a un problème dans le casting quand il prend des arguments

Questions connexes