Я пытаюсь внедрить SafetyNet в приложение для Android, но столкнулся с этой проблемой:
JWS, которые я получаю, показывает одноразовый номер как конкретное значение, но оно отличается от того, которое я передал здесь:
Task<SafetyNetApi.AttestationResponse> task = client.attest(nonce.getBytes(), apiKey);
task.addOnSuccessListener(this, new OnSuccessListener<SafetyNetApi.AttestationResponse>() {
@Override
public void onSuccess(SafetyNetApi.AttestationResponse attestationResponse) {
handleJWS(attestationResponse.getJwsResult());
}
}).addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
if (BuildConfig.DEBUG)
Log.d("cts", "fail " + e.toString());
}
});
Я использую nonce.getBytes()
в качестве параметра, так как одноразовый номер, сгенерированный сервером, представляет собой строку.
Я снова и снова перечитывал документацию, но не могу понять, почему значение nonce, которое я получаю как часть JWS, не соответствует значению, которое я указал в методе attest()
. Если это ожидается, почему это так и как я могу заставить сервер ожидать это значение, чтобы проверить его?
Любые идеи?
Спасибо!