Search in sources :

Example 1 with AttestationData

use of com.google.android.gms.safetynet.AttestationData in project android_packages_apps_GmsCore by microg.

the class SafetyNetClientServiceImpl method attestWithApiKey.

@Override
public void attestWithApiKey(final ISafetyNetCallbacks callbacks, final byte[] nonce, String apiKey) throws RemoteException {
    if (nonce == null) {
        callbacks.onAttestationData(new Status(CommonStatusCodes.DEVELOPER_ERROR), null);
        return;
    }
    if (!SafetyNetPrefs.get(context).isEnabled()) {
        Log.d(TAG, "ignoring SafetyNet request, it's disabled");
        callbacks.onAttestationData(Status.CANCELED, null);
        return;
    }
    new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                try {
                    attestation.buildPayload(nonce);
                    RemoteDroidGuardConnector conn = new RemoteDroidGuardConnector(context);
                    Bundle bundle = new Bundle();
                    bundle.putString("contentBinding", attestation.getPayloadHashBase64());
                    RemoteDroidGuardConnector.Result dg = conn.guard("attest", Long.toString(LastCheckinInfo.read(context).androidId), bundle);
                    if (!SafetyNetPrefs.get(context).isOfficial() || dg != null && dg.getStatusCode() == 0 && dg.getResult() != null) {
                        if (dg != null && dg.getStatusCode() == 0 && dg.getResult() != null) {
                            attestation.setDroidGaurdResult(Base64.encodeToString(dg.getResult(), Base64.NO_WRAP + Base64.NO_PADDING + Base64.URL_SAFE));
                        }
                        AttestationData data = new AttestationData(attestation.attest());
                        callbacks.onAttestationData(Status.SUCCESS, data);
                    } else {
                        callbacks.onAttestationData(dg == null ? Status.INTERNAL_ERROR : new Status(dg.getStatusCode()), null);
                    }
                } catch (IOException e) {
                    Log.w(TAG, e);
                    callbacks.onAttestationData(Status.INTERNAL_ERROR, null);
                }
            } catch (RemoteException e) {
                Log.w(TAG, e);
            }
        }
    }).start();
}
Also used : Status(com.google.android.gms.common.api.Status) AttestationData(com.google.android.gms.safetynet.AttestationData) RemoteDroidGuardConnector(org.microg.gms.droidguard.RemoteDroidGuardConnector) Bundle(android.os.Bundle) IOException(java.io.IOException) RemoteException(android.os.RemoteException)

Aggregations

Bundle (android.os.Bundle)1 RemoteException (android.os.RemoteException)1 Status (com.google.android.gms.common.api.Status)1 AttestationData (com.google.android.gms.safetynet.AttestationData)1 IOException (java.io.IOException)1 RemoteDroidGuardConnector (org.microg.gms.droidguard.RemoteDroidGuardConnector)1