Tradefed 包含「金鑰儲存庫」的概念,可將密鑰儲存在金鑰儲存庫服務中,並在測試執行階段要求使用。
使用金鑰儲存區
如要使用 KeyStore,請先在全域設定中定義 KeyStore 的來源。
完成後,您就可以透過下列方式使用儲存的金鑰: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 接著會查詢金鑰儲存區,並將其值做為測試的一部分。
以主機為基礎的 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>
主機型金鑰儲存區檔案中定義的金鑰值,會覆寫以 json-key-store-file
指定的金鑰儲存區檔案中定義的值。
如果 KeyStore 中有多個主機型 KeyStore 檔案,順序就非常重要。如果某個鍵的值是在多個檔案中定義,則最後一個檔案中的值會覆寫其他檔案中的值。