получение недействительной подписи для android подписанного APK с помощью API safet ynet - PullRequest
0 голосов
/ 25 марта 2020

Я использую 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();
    }
  }
...