当前位置: 首页 > 知识库问答 >
问题:

来自Google SafetyNet的JWS包含不同于我在attest()中提交的nonce值

苏淇
2023-03-14

我试图在一个Android应用程序中实现SafetyNet,但遇到了这个问题:

 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());
        }
    });

有什么想法吗?

谢了!

共有1个答案

杜成和
2023-03-14

我也遇到了同样的问题,只是想出了问题:nonce,apkDigestSha256和apkCertificateDigestSha256的值都是Base64编码的!参见https://github.com/googlesamples/android-play-safetynet/blob/master/server/java/src/main/java/attestationstatement.java

为了将您的nonce与来自JWS的nonce进行比较,您必须执行以下操作:

Arrays.equals(yourNonce, Base64.decode(attestationStatement.nonce(), Base64.DEFAULT))
 类似资料:
  • 问题内容: 我目前有以下sql查询 它返回给定用户和日期的总计[单位]。 但是,我想根据新的标准(即[Units]是否在“可充电”位置)来生成两个单独的总计单位。tblTimeSheets中有一个称为Chargeable的字段,它是一个布尔值(true表示chargeable,false表示false)。如何将其合并为每种类型的单位显示两个总和? 问题答案: 您可以将与一起使用来计算单独的总计:

  • 我有文件,像这样: 我希望现在这是清楚的,谢谢!

  • 当我只为一些特定的测试用例运行代码时,我得到了一个“由于超时错误而终止”。即使我的代码为其他测试用例成功编译。有人能帮我吗 问题陈述 一个能被2整除的数字叫做偶数。Continue是与break语句相反的循环控制语句,它不终止循环,而是强制执行循环的下一次迭代。Sohan很想知道给定范围内的偶数总数,但他的朋友不喜欢数字。 输入格式 第一行将包含测试用例的数量。然后测试用例如下:每个测试用例包含一

  • 我需要写一个gradle脚本来在每次提交时自动版本化我的应用程序。我还需要在测试人员的应用程序中包含提交散列作为参考。 我对自动版本控制通常的工作方式感到困惑。有人可以解释自动归因过程吗?

  • 下面我有两个箱子。 案例1和案例2之间的区别在于案例2具有在中,但案例1在中具有。 问题是关于案例2的输出:为什么包含两个不同的值,一个是,另一个是字符串“B”?

  • 问题内容: 当要依赖的测试与具有此批注的测试属于同一类时,批注的属性可以正常工作。但是,如果要测试的方法和依赖的方法位于不同的类中,则该方法不起作用。示例如下: 有什么办法可以解决这个限制?一种简单的解决方法是在该调用中创建测试。但这将是过多的重复。 问题答案: 将方法放在中并使用。 建议验证*中的配置,并在该处出现问题时抛出错误,以使测试无法运行。这样,测试可以只关注测试。