ذخیره رمزها با keystore

‫Tradefed مفهوم انبار کلید را دربرمی‌گیرد، که در آن می‌توان رمزها را در سرویس انبار کلید ذخیره کرد و در زمان اجرای آزمایش برای استفاده درطول آزمایش درخواست کرد.

استفاده از keystore

برای استفاده از 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 از مخزن کلید برای دریافت مقدار آن پُرسمان می‌کند و از مقدار آن به‌عنوان بخشی از آزمایش استفاده می‌کند.

فایل انبار کلید میزبان‌مبنا

برای تعریف جفت‌های کلید-مقدار مبتنی بر میزبان، می‌توانید یک فایل /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 ملغی می‌شود.

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