اسرار را با keystore ذخیره کنید

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>

مقدار کلیدی که در یک فایل keystore مبتنی بر میزبان تعریف شده است، مقدار تعریف شده در فایل keystore مشخص شده با json-key-store-file را لغو می‌کند.

وقتی چندین فایل ذخیره کلید مبتنی بر میزبان در ذخیره کلید وجود داشته باشد، ترتیب آنها اهمیت پیدا می‌کند. اگر مقدار یک کلید در چندین فایل تعریف شده باشد، مقدار موجود در آخرین فایل، بقیه را لغو می‌کند.