Я использую Google Safet ynet API для проверки как рутированного устройства, так и подделки устройства. И я могу проверить вышеуказанные функции, используя отладочный APK (без подписи). Но для подписанного APK получаю сообщение об ошибке: Invalid Signature
. Пожалуйста, предложите, как решить эту проблему.
SafetyNet.getClient(this).attest(nonce, "API-KEY")
.addOnSuccessListener(this,
new OnSuccessListener<SafetyNetApi.AttestationResponse>() {
@Override
public void onSuccess(SafetyNetApi.AttestationResponse response) {
String jwsResult = response.getJwsResult();
verifyOnline(jwsResult);
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
showDialog("Unable to perform operation due to :");
}
});
проверить онлайн,
private void verifyOnline(final String jws) {
Retrofit retrofit = null;
try {
retrofit = new Retrofit.Builder()
.baseUrl(getString(R.string.base_api_url))
.addConverterFactory(GsonConverterFactory.create())
.build();
RetrofitInterface retrofitInterface = retrofit.create(RetrofitInterface.class);
JWSRequest jwsRequest = new JWSRequest();
jwsRequest.setSignedAttestation(jws);
Call<Response> responseCall = retrofitInterface.getResult(jwsRequest, getString(R.string.api_key));
responseCall.enqueue(new Callback<Response>() {
@Override
public void onResponse(Call<Response> call, retrofit2.Response<Response> response) {
boolean result = response.body().isValidSignature();
if (result) {
decodeJWS(jws);
} else {
showDialog("Unable to perform operation due to invalid signature :");
}
}
@Override
public void onFailure(Call<Response> call, Throwable t) {
showDialog("Something went wrong : " + t.getLocalizedMessage(),11);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}