使用 KeyStore 儲存密鑰

Tradefed 包含「金鑰庫」概念,可將密鑰儲存在金鑰庫服務中,並在測試執行期間要求使用這些密鑰。

使用 KeyStore

如要使用 KeyStore,您必須先在全域設定中定義 KeyStore 的來源。

完成後,您可以透過以下方式使用儲存的金鑰:USE_KEYSTORE@{key}

JSONFileKeyStore

Tradefed 核心中的範例實作會使用 JSON 金鑰庫 JSONFileKeyStoreClient。如要使用這個 KeyStore,您必須定義含有鍵值對應的 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 就會查詢 KeyStore,並將其值用於測試。

主機金鑰庫檔案

如要定義以主機為基礎的鍵/值組合,您可以將 /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 全域設定檔,納入主機式 KeyStore 檔案:

<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>

主機式 KeyStore 檔案中定義的鍵值會覆寫透過 json-key-store-file 指定的 KeyStore 檔案中定義的鍵值。

如果 KeyStore 中有多個主機金鑰庫檔案,順序就會造成影響。如果金鑰的值是在多個檔案中定義,則最後一個檔案中的值會覆寫其餘的值。