1
C/C++ 코드에서 JNI 래퍼를 생성하려고합니다.SWIG에서 생성 된 JNI 코드가 Android에서 발생했습니다.
여기 내 인터페이스 파일입니다. 여기
/* 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);
여기
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));
}
내가 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);
}
코드가 컴파일되지만 C 코드의 어딘가에서 충돌이 발생합니다. 어떤 도움을 주시면 감사하겠습니다.
감사합니다.