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