diff --git a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java index d32c299074a96..0e195bcc98e06 100644 --- a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java +++ b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java @@ -29,6 +29,7 @@ import android.hardware.weaver.V1_0.WeaverStatus; import android.os.RemoteException; import android.os.UserManager; import android.security.GateKeeper; +import android.security.Scrypt; import android.service.gatekeeper.GateKeeperResponse; import android.service.gatekeeper.IGateKeeperService; import android.util.ArrayMap; @@ -1173,11 +1174,10 @@ public class SyntheticPasswordManager { } protected byte[] scrypt(String password, byte[] salt, int N, int r, int p, int outLen) { - return nativeScrypt(password.getBytes(), salt, N, r, p, outLen); + return new Scrypt().scrypt(password.getBytes(), salt, N, r, p, outLen); } native long nativeSidFromPasswordHandle(byte[] handle); - native byte[] nativeScrypt(byte[] password, byte[] salt, int N, int r, int p, int outLen); protected static ArrayList toByteArrayList(byte[] data) { ArrayList result = new ArrayList(data.length); diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp index b85489a92464a..6d7219173b323 100644 --- a/services/core/jni/Android.bp +++ b/services/core/jni/Android.bp @@ -126,7 +126,6 @@ cc_defaults { static_libs: [ "android.hardware.broadcastradio@common-utils-1x-lib", - "libscrypt_static", ], product_variables: { diff --git a/services/core/jni/com_android_server_locksettings_SyntheticPasswordManager.cpp b/services/core/jni/com_android_server_locksettings_SyntheticPasswordManager.cpp index bc13fdec6cbcf..9dd6032497da9 100644 --- a/services/core/jni/com_android_server_locksettings_SyntheticPasswordManager.cpp +++ b/services/core/jni/com_android_server_locksettings_SyntheticPasswordManager.cpp @@ -27,10 +27,6 @@ #include -extern "C" { -#include "crypto_scrypt.h" -} - namespace android { static jlong android_server_SyntheticPasswordManager_nativeSidFromPasswordHandle(JNIEnv* env, jobject, jbyteArray handleArray) { @@ -48,38 +44,9 @@ static jlong android_server_SyntheticPasswordManager_nativeSidFromPasswordHandle } } -static jbyteArray android_server_SyntheticPasswordManager_nativeScrypt(JNIEnv* env, jobject, jbyteArray password, jbyteArray salt, jint N, jint r, jint p, jint outLen) { - if (!password || !salt) { - return NULL; - } - - int passwordLen = env->GetArrayLength(password); - int saltLen = env->GetArrayLength(salt); - jbyteArray ret = env->NewByteArray(outLen); - - jbyte* passwordPtr = (jbyte*)env->GetByteArrayElements(password, NULL); - jbyte* saltPtr = (jbyte*)env->GetByteArrayElements(salt, NULL); - jbyte* retPtr = (jbyte*)env->GetByteArrayElements(ret, NULL); - - int rc = crypto_scrypt((const uint8_t *)passwordPtr, passwordLen, - (const uint8_t *)saltPtr, saltLen, N, r, p, (uint8_t *)retPtr, - outLen); - env->ReleaseByteArrayElements(password, passwordPtr, JNI_ABORT); - env->ReleaseByteArrayElements(salt, saltPtr, JNI_ABORT); - env->ReleaseByteArrayElements(ret, retPtr, 0); - - if (!rc) { - return ret; - } else { - SLOGE("scrypt failed"); - return NULL; - } -} - static const JNINativeMethod sMethods[] = { /* name, signature, funcPtr */ {"nativeSidFromPasswordHandle", "([B)J", (void*)android_server_SyntheticPasswordManager_nativeSidFromPasswordHandle}, - {"nativeScrypt", "([B[BIIII)[B", (void*)android_server_SyntheticPasswordManager_nativeScrypt}, }; int register_android_server_SyntheticPasswordManager(JNIEnv* env) {