使用密钥库存储密钥

Tradefed 包含密钥库的概念,该概念是指可以将密钥存储在密钥库服务中,还可以在测试运行时请求密钥,以便在测试期间使用。

使用密钥库

若要使用密钥库,您需要先在全局配置中定义密钥库的源。

完成后,即可通过 USE_KEYSTORE@{key} 使用存储的密钥:

JSONFileKeyStore

Tradefed 核心中的实现示例使用了一个 JSON 密钥库,即 JSONFileKeyStoreClient。要使用此密钥库,您应定义一个包含键值映射的 JSON 密钥文件。

例如,您可以将 /path/to/keystore.json 文件定义为:

{
  "test_account": "foo@gmail.com",
  "test_account_pwd": "helloworld",
  "wifi_lab_ssid": "Google_private_AP",
  "wifi_lab_pwd": "secret123",
}

然后,您应在 TF 全局配置文件中添加以下行:

<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
</key_store>

在执行相关测试时,您现在可以将值作为 USE_KEYSTORE@test_account 传入,TF 随后会从密钥库中查询该键,并将其值用作测试的一部分。

基于主机的密钥库文件

如需定义基于主机的键值对,您可以将 /path/to/keystore_ssid.json 文件定义为:

{
  "host_a.*\\.corp\\.com": {
    "wifi_lab_ssid": "ssid_a",
    "wifi_lab_pwd": "secret_a"
  },
  "host_b.*\\.corp\\.com": {
    "wifi_lab_ssid": "ssid_b",
    "wifi_lab_pwd": "secret_b"
  }
}

该文件中的条目的键是主机名的正则表达式 (regex) 模式,而值是任何具有匹配主机名的主机的键值对集。

然后,更新 TF 全局配置文件以包含基于主机的密钥库文件:

<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
<option name="host-based-key-store-file" value="/path/to/keystore-ssid.json" />
</key_store>

在基于主机的密钥库文件中定义的键会替换在 json-key-store-file 指定的密钥库文件中定义的密钥的值。

当密钥库中存在多个基于主机的密钥库文件时,顺序很重要。如果某个文件的值已在多个文件中定义,则最后一个文件中的值将替换余下的值。