

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Ambil atribut dengan pustaka PKCS \#11 untuk AWS CloudHSM SDK Klien 5
<a name="pkcs11-attributes-retrieve"></a>

Saat aplikasi Anda membaca atribut dari kunci atau objek sertifikat, pustaka PKCS \#11 mengirimkan satu permintaan ke cluster Anda untuk setiap `C_GetAttributeValue` panggilan. Jumlah atribut dalam template tidak mengubah jumlah permintaan. Satu panggilan yang meminta sepuluh atribut mengirimkan satu permintaan. Sepuluh panggilan yang setiap permintaan satu atribut mengirim sepuluh permintaan.

Setiap panggilan membaca atribut objek dari cluster Anda dalam satu permintaan, dan kemudian menyalin nilai yang diminta template Anda. Pustaka PKCS \#11 tidak menyimpan nilai, jadi setiap panggilan mengirimkan permintaan baru.

Untuk mengurangi jumlah permintaan yang dikirim aplikasi Anda, ikuti rekomendasi berikut:
+ Minta setiap atribut yang Anda butuhkan dalam satu template. Buat template tunggal yang berisi semua atribut yang Anda inginkan, dan meneruskannya ke satu `C_GetAttributeValue` panggilan. Contoh berikut membaca tiga atribut kunci dengan satu panggilan.

  ```
  CK_OBJECT_CLASS obj_class;
  CK_BYTE label[128];
  CK_BYTE id[128];
  
  CK_ATTRIBUTE attrs[] = {
          {CKA_CLASS, &obj_class, sizeof(obj_class)},
          {CKA_LABEL, label,       sizeof(label)},
          {CKA_ID,    id,          sizeof(id)},
  };
  
  rv = funcs->C_GetAttributeValue(session, object, attrs,
                                  sizeof(attrs) / sizeof(CK_ATTRIBUTE));
  ```

  Untuk informasi selengkapnya, lihat [ Daftar atribut kunci ](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/attributes/) di GitHub situs web.
+ Minta hanya atribut yang didukung objek Anda dan yang dapat Anda baca. Ketika template Anda menamai atribut yang tidak dimiliki objek, `C_GetAttributeValue` setel `ulValueLen` ke `CK_UNAVAILABLE_INFORMATION` untuk atribut itu dan mengembalikannya`CKR_ATTRIBUTE_TYPE_INVALID`. Atribut sensitif berperilaku dengan cara yang sama dan kembali`CKR_ATTRIBUTE_SENSITIVE`. Dalam kedua kasus tersebut, atribut lain dalam template Anda masih menerima nilainya. Per `ulValueLen` iksa setiap atribut alih-alih hanya nilai pengembalian panggilan. Untuk atribut yang didukung setiap tipe objek, dan untuk atribut yang sensitif, lihat[Tabel atribut perpustakaan PKCS \#11 untuk AWS CloudHSM SDK Klien 5](pkcs11-attributes-interpreting.md).
+ Periksa berapa banyak panggilan yang dilakukan pengikatan bahasa Anda. Pengikatan PKCS \#11 untuk bahasa seperti Python atau Java menentukan berapa banyak `C_GetAttributeValue` panggilan yang dikirim. Beberapa binding mengirim satu panggilan untuk setiap atribut, dan beberapa mengirim dua. Gunakan antarmuka yang disediakan pengikatan Anda untuk membaca beberapa atribut sekaligus, dan ukur panggilan yang dikirim aplikasi Anda.
+ Nilai atribut cache dalam aplikasi Anda. Baca atribut objek satu kali, dan simpan nilai-nilai yang dibutuhkan aplikasi Anda. Anda dapat menggunakan kembali nilai yang di-cache sampai sesuatu mengubah objek. Ketika aplikasi atau pengguna lain dapat memodifikasi objek Anda, segarkan cache Anda setelah mereka melakukannya.
+ Alokasikan buffer Anda sebelum Anda membaca atribut. Standar PKCS \#11 menjelaskan pola dua lintasan untuk nilai panjang variabel. Aplikasi Anda memang `C_GetAttributeValue` gil dengan `pValue` set to `NULL_PTR` untuk mempelajari panjangnya, dan kemudian memanggilnya lagi untuk membaca nilainya. Kedua panggilan mengirim permintaan. Ketika Anda mengetahui ukuran buffer yang menyimpan nilai yang Anda harapkan, alokasikan buffer terlebih dahulu dan baca nilainya dengan satu panggilan.

  Buffer yang terlalu kecil kembali `CKR_BUFFER_TOO_SMALL` untuk atribut itu, dan panggilan masih mengirimkan permintaan. Pilih ukuran buffer yang cukup besar untuk nilai yang Anda harapkan. Atribut yang memegang template, seperti`CKA_WRAP_TEMPLATE`, masih membutuhkan pola dua lintasan.

**catatan**  
Rekomendasi ini berlaku untuk objek utama dan objek sertifikat, dan batasan yang berbeda berlaku untuk masing-masing. Penyimpanan sertifikat memiliki batas laju baca tetap, dan setiap `C_GetAttributeValue` panggilan pada objek sertifikat menggunakan satu operasi baca darinya. Untuk objek utama, atribut throttle HSMS Anda dibaca saat mencapai kapasitas, bukan pada tingkat tetap. Pustaka PKCS \#11 mencoba ulang permintaan tersebut secara otomatis. Mengirim lebih sedikit permintaan membantu aplikasi Anda tetap dalam kedua batas. Untuk informasi selengkapnya, lihat [Batas penyimpanan sertifikat](pkcs11-certificate-storage-limits.md) dan [Pelambatan HSM](troubleshoot-hsm-throttling.md).