keymaster1_device Yapı Referansı

keymaster1_device Yapı Referansı

#include < keymaster1.h >

Veri alanları

hw_device_t yapısı yaygın
uint32_t client_version
uint32_t bayraklar
geçersiz * bağlam
int(* created_keypair )(const struct keymaster1_device *dev, const keymaster_keypair_t anahtar_türü, const void *anahtar_params, uint8_t **anahtar_blob, size_t *anahtar_blob_uzunluğu)
int(* import_keypair )(const struct keymaster1_device *dev, const uint8_t *anahtar, const size_t anahtar_uzunluğu, uint8_t **anahtar_blob, size_t *anahtar_blob_uzunluğu)
int(* get_keypair_public )(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length, uint8_t **x509_data, size_t *x509_data_length)
int(* delete_keypair )(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
int(* delete_all )(const struct keymaster1_device *dev)
int(* Sign_data )(const struct keymaster1_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *data, const size_t data_length, uint8_t **signed_data, size_t *signed_data_length)
int(* doğrulama_verisi )(const struct keymaster1_device *dev, const void *imzalama_paramları, const uint8_t *key_blob, const size_t anahtar_blob_uzunluğu, const uint8_t *imzalı_veri, const size_t imzalı_veri_uzunluğu, const uint8_t *imza, const size_t imza_uzunluğu)
keymaster_error_t (* get_supported_algorithms )(const struct keymaster1_device *dev, keymaster_algorithm_t **algoritmalar, size_t *algorithms_length)
keymaster_error_t (* get_supported_block_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_amaç_t amacı, keymaster_block_mode_t **modlar, size_t *modes_uzunluğu)
keymaster_error_t (* get_supported_padding_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_amaç_t amacı, keymaster_padding_t **modlar, size_t *modes_uzunluğu)
keymaster_error_t (* get_supported_digests )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_amaç_t amacı, keymaster_digest_t **özetler, size_t *özetler_uzunluk)
keymaster_error_t (* get_supported_import_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_key_format_t **formatlar, size_t *formats_length)
keymaster_error_t (* get_supported_export_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_key_format_t **formatlar, size_t *formats_length)
keymaster_error_t (* add_rng_entropy )(const struct keymaster1_device *dev, const uint8_t *veri, size_t veri_uzunluğu)
keymaster_error_t (* created_key )(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_blob_t *key_blob, keymaster_key_characteristics_t **karakteristikler)
keymaster_error_t (* get_key_characteristics )(const struct keymaster1_device *dev, const keymaster_key_blob_t *key_blob, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_key_characteristics_t **karakteristikler)
keymaster_error_t (* import_key )(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_format_t key_format, const keymaster_blob_t *key_data, keymaster_key_blob_t *key_blob, keymaster_key_characteristics_t **karakteristikler)
keymaster_error_t (* dışa aktarma_anahtarı )(const struct keymaster1_device *dev, keymaster_key_format_t dışa aktarma_format, const keymaster_key_blob_t *key_to_export, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_blob_t *export_data)
keymaster_error_t (* delete_key )(const struct keymaster1_device *dev, const keymaster_key_blob_t *anahtar)
keymaster_error_t (* delete_all_keys )(const struct keymaster1_device *dev)
keymaster_error_t (* begin )(const struct keymaster1_device *dev, keymaster_amaç_t amacı, const keymaster_key_blob_t *anahtar, const keymaster_key_param_set_t *in_params, keymaster_key_param_set_t *out_params, keymaster_operation_handle_t *operation_handle)
keymaster_error_t (* güncelleme )(const struct keymaster1_device *dev, keymaster_operation_handle_t operasyon_tanıtıcısı, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *giriş, size_t *input_consumed, keymaster_key_param_set_t *out_params, keymaster_blob_t *çıkış)
keymaster_error_t (* bitiş )(const struct keymaster1_device *dev, keymaster_operation_handle_t işlem_tanıtıcısı, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *imza, keymaster_key_param_set_t *out_params, keymaster_blob_t *çıkış)
keymaster_error_t (* iptal )(const struct keymaster1_device *dev, keymaster_operation_handle_t operasyon_handle)

Detaylı Açıklama

Keymaster1 cihaz tanımı

Keymaster1.h dosyasının 28. satırındaki tanım.

Saha Dokümantasyonu

keymaster_error_t (* iptal)(const struct keymaster1_device *dev, keymaster_operation_handle_t operasyon_tanıtıcı)

begin() ile başlatılan bir şifreleme işlemini iptal ederek tüm dahili kaynakları serbest bırakır ve operation_handle geçersiz kılar.

Keymaster1.h dosyasının 531. satırındaki tanım.

keymaster_error_t (* add_rng_entropy)(const struct keymaster1_device *dev, const uint8_t *veri, size_t veri_uzunluğu)

Anahtar yöneticisi tarafından kullanılan RNG'ye entropi ekler. Bu yöntemle eklenen entropinin, kullanılan tek entropi kaynağı olmayacağı garanti edilir ve RNG'nin (herhangi bir kaynaktan) saldırganın tahmin edemeyeceği (veya kontrol), bu durumda RNG çıkışı rastgele olandan ayırt edilemez. Dolayısıyla herhangi bir kaynağın entropisi iyiyse çıktı da iyi olacaktır.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] veri Karıştırılacak rastgele veriler.
[içinde] veri_uzunluğu data uzunluğu.

Keymaster1.h dosyasının 242. satırındaki tanım.

keymaster_error_t (* begin)(const struct keymaster1_device *dev, keymaster_Amaç_t amacı, const keymaster_key_blob_t *anahtar, const keymaster_key_param_set_t *in_params, keymaster_key_param_set_t *out_params, keymaster_operation_handle_t *operation_handle)

Belirtilen anahtarı kullanarak bir şifreleme işlemi başlatır. Her şey yolundaysa, begin() işlevi KM_ERROR_OK değerini döndürecek ve sonraki update() , Finish() veya abort() çağrılarına iletilmesi gereken bir işlem tanıtıcısı oluşturacaktır.

Keymaster uygulamasının herhangi bir dahili çalışma durumunu temizlemesine izin vermek için, begin() işlevine yapılan her çağrının, bitiş() veya abort() işlevine yapılan sonraki bir çağrıyla eşleştirilmesi kritik öneme sahiptir. Bunun yapılmaması, dahili durum alanının veya diğer dahili kaynakların sızdırılmasına neden olabilir ve sonunda begin() işlevinin, işlemler için yeterli alanı kalmadığında KM_ERROR_TOO_MANY_OPERATIONS döndürmesine neden olabilir. begin() , update() veya Finish()' ten gelen KM_ERROR_OK dışında herhangi bir sonuç, işlemi örtülü olarak iptal eder; bu durumda abort()'un çağrılmasına gerek yoktur (ve çağrılırsa KM_ERROR_INVALID_OPERATION_HANDLE değerini döndürür).

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] amaç İşlemin amacı KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN veya KM_PURPOSE_VERIFY'den biri. AEAD modları için şifreleme ve şifre çözmenin sırasıyla imzalama ve doğrulama anlamına geldiğini ancak KM_PURPOSE_ENCRYPT ve KM_PURPOSE_DECRYPT olarak belirtilmesi gerektiğini unutmayın.
[içinde] anahtar İşlem için kullanılacak anahtar. key purpose uygun bir amacı olmalı ve tüm kullanım gereksinimleri karşılanmalıdır, aksi takdirde begin() uygun bir hata kodu döndürecektir.
[içinde] in_params İşlem için ek parametreler. Bu genellikle KM_TAG_AUTH_TOKEN ile kimlik doğrulama verilerini sağlamak için kullanılır. Oluşturma sırasında KM_TAG_APPLICATION_ID veya KM_TAG_APPLICATION_DATA sağlandıysa bunların burada sağlanması gerekir, aksi takdirde işlem KM_ERROR_INVALID_KEY_BLOB ile başarısız olur. KM_TAG_CALLER_NONCE ile oluşturulan anahtarlarda, nonce veya IV gerektiren işlemler için in_params, KM_TAG_NONCE etiketini içerebilir. AEAD işlemleri için KM_TAG_CHUNK_SIZE burada belirtilir.
[dışarı] out_params Çıkış parametreleri. İşlem başlatmadan ek verileri döndürmek için, özellikle IV veya nonce üreten işlemlerden IV veya nonce'yi döndürmek için kullanılır. Arayan, çıktı parametreleri dizisinin sahipliğini alır ve onu keymaster_free_param_set() ile serbest bırakmalıdır. Herhangi bir çıktı parametresi beklenmiyorsa out_params NULL olarak ayarlanabilir. out_params NULL ise ve çıktı parametreleri oluşturulduysa, begin() işlevi KM_ERROR_OUTPUT_PARAMETER_NULL değerini döndürecektir.
[dışarı] işlem_tanıtıcısı update() , Finish() veya abort() öğelerine iletilmesi gereken yeni oluşturulan işlem tanıtıcısı. Eğer işlem_tanıtıcısı NULL ise, begin() işlevi KM_ERROR_OUTPUT_PARAMETER_NULL değerini döndürecektir.

Keymaster1.h dosyasının 451. satırındaki tanım.

uint32_t client_version

BU KULLANIMDAN KALDIRILMIŞTIR. Bunun yerine keymaster_module başlatma işlemindeki yeni "module_api_version" ve "hal_api_version" alanlarını kullanın.

Keymaster1.h dosyasının 41. satırındaki tanım.

hw_device_t ortak yapısı

Keymaster cihazının ortak yöntemleri. Bu yapının kullanıcıları, hw_device_t'nin bir keymaster_device'e referans verdiğinin bilindiği bağlamlarda keymaster_device işaretçisine bir hw_device_t göndereceğinden, bu, keymaster_device'ın ilk üyesi olmalıdır .

Keymaster1.h dosyasının 35. satırındaki tanım.

geçersiz* bağlam

keymaster1.h dosyasının 48. satırındaki tanım.

int(* delete_all)(const struct keymaster1_device *dev)
Kullanımdan kaldırıldı:
Donanım anahtar deposundaki tüm anahtarları siler. Anahtar deposu tamamen sıfırlandığında kullanılır.

Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.

Başarı durumunda 0'ı veya 0'dan küçük bir hata kodunu döndürür.

Keymaster1.h dosyasının 100. satırındaki tanım.

keymaster_error_t (* delete_all_keys)(const struct keymaster1_device *dev)

Donanım anahtar deposundaki tüm anahtarları siler. Anahtar deposu tamamen sıfırlandığında kullanılır. Bu işlevi çağırdıktan sonra, herhangi bir işlem için önceden oluşturulmuş veya içe aktarılmış anahtar bloblarını kullanmak mümkün olmayacaktır.

Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.

Keymaster1.h dosyasının 407. satırındaki tanım.

keymaster_error_t (* delete_key)(const struct keymaster1_device *dev, const keymaster_key_blob_t *anahtar)

Anahtar bloğuyla ilişkili anahtarı veya anahtar çiftini siler. Bu işlevi çağırdıktan sonra anahtarı başka herhangi bir işlem için kullanmak mümkün olmayacaktır. Yabancı güven köklerinden gelen anahtarlara uygulanabilir (anahtarlar mevcut güven kökü altında kullanılamaz).

Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] anahtar Silinecek anahtar.

Keymaster1.h dosyasının 395. satırındaki tanım.

int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
Kullanımdan kaldırıldı:
Anahtar bloğuyla ilişkili anahtar çiftini siler.

Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.

Başarı durumunda 0'ı veya 0'dan küçük bir hata kodunu döndürür.

keymaster1.h dosyasının 88. satırındaki tanım.

keymaster_error_t (* dışa aktarma_anahtarı)(const struct keymaster1_device *dev, keymaster_key_format_t dışa aktarma_format, const keymaster_key_blob_t *key_to_export, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_blob_t *export_data)

Belirtilen formatta bir bayt dizisi döndürerek ortak anahtarı dışarı aktarır.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] dışa aktarma biçimi Anahtarı dışa aktarmak için kullanılacak format.
[içinde] key_to_export İhracatın anahtarı.
[dışarı] dışa aktarma_verileri Dışa aktarılan anahtar malzeme. Arayan kişi mülkiyeti üstlenir.
[dışarı] dışa aktarma_veri_uzunluğu export_data uzunluğu.

Keymaster1.h dosyasının 377. satırındaki tanım.

keymaster_error_t (* bitiş)(const struct keymaster1_device *dev, keymaster_operation_handle_t işlem_tanıtıcısı, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *imza, keymaster_key_param_set_t *out_params, keymaster_blob_t *çıkış)

begin() ile başlatılan bir şifreleme işlemini sonlandırır ve operation_handle geçersiz kılar.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] işlem_tanıtıcısı begin() tarafından döndürülen işlem tanıtıcısı. Bu tanıtıcı geçersiz kılınacak.
[içinde] parametreler İşlem için ek parametreler. AEAD modları için bu, KM_TAG_ADDITIONAL_DATA'yı belirtmek için kullanılır, ancak yalnızca update() için hiçbir giriş verisi sağlanmadıysa.
[içinde] imza begin() çağrısında belirtilen amacın KM_PURPOSE_VERIFY olması durumunda doğrulanacak imza.
[dışarı] çıktı Varsa çıktı verileri. Arayan, tahsis edilen arabelleğin sahipliğini üstlenir.

Bitirilen işlem bir imza doğrulaması veya AEAD modu şifre çözme ise ve doğrulama başarısız olursa, Finish() işlevi KM_ERROR_VERIFICATION_FAILED sonucunu döndürür.

Keymaster1.h dosyasının 521. satırındaki tanım.

uint32_t bayrakları

Keymaster_common.h'de keymaster0_devices::flags için tanımlanan bayraklara bakın

Keymaster1.h dosyasının 46. satırındaki tanım.

keymaster_error_t (* created_key)(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_blob_t *key_blob, keymaster_key_characteristics_t **karakteristikler)

Bir anahtar bloğu ve/veya anahtarın açıklamasını döndürerek bir anahtar veya anahtar çifti oluşturur.

Anahtar oluşturma parametreleri, params sağlanan anahtar yöneticisi etiketi/değer çiftleri olarak tanımlanır. Tam liste için keymaster_tag_t'ye bakın. Yararlı anahtarların oluşturulması için her zaman gerekli olan bazı değerler şunlardır:

  • KM_TAG_ALGORİTHM;
  • KM_TAG_PURPOSE; Ve
  • (KM_TAG_USER_SECURE_ID ve KM_TAG_USER_AUTH_TYPE) veya KM_TAG_NO_AUTH_REQUIRED.

KM_TAG_AUTH_TIMEOUT, KM_TAG_NO_AUTH_REQUIRED mevcut olmadığı sürece veya kullanıcının her kullanım için kimlik doğrulaması yapması gerekmediği sürece genel olarak belirtilmelidir.

KM_TAG_BLOCK_MODE, KM_TAG_PADDING, KM_TAG_MAC_LENGTH ve KM_TAG_DIGEST, bunları gerektiren algoritmalar için belirtilmelidir.

Aşağıdaki etiketler belirtilmeyebilir; değerleri uygulamayla sağlanacaktır.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] parametreler Anahtar oluşturma parametreleri dizisi.
[içinde] params_count params uzunluğu.
[dışarı] anahtar_blob oluşturulan anahtarı döndürür. key_blob NULL olmamalıdır. Arayan kişi key_blob->key_material'in sahipliğini üstlenir ve onu serbest bırakması gerekir().
[dışarı] özellikler NULL değilse oluşturulan anahtarın özelliklerini döndürür. NULL değilse, arayan kişi sahipliği üstlenir ve keymaster_free_characteristics() ile yeniden konumlandırma yapması gerekir. KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ve KM_TAG_APPLICATION_DATA'nın hiçbir zaman döndürülmediğini unutmayın.

Keymaster1.h dosyasının 282. satırındaki tanım.

int(* created_keypair)(const struct keymaster1_device *dev, const keymaster_keypair_t key_type, const void *key_params, uint8_t **key_blob, size_t *key_blob_length)
Kullanımdan kaldırıldı:
Genel ve özel anahtar üretir. Döndürülen anahtar bloğu opaktır ve daha sonra imzalama ve doğrulama için sağlanmalıdır.

Döndürür: Başarı durumunda 0 veya 0'dan küçük bir hata kodu.

Keymaster1.h dosyasının 56. satırındaki tanım.

keymaster_error_t (* get_key_characteristics)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key_blob, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_key_characteristics_t **karakteristikler)

Belirtilen anahtarın özelliklerini veya key_blob geçersizse KM_ERROR_INVALID_KEY_BLOB'yi döndürür (uygulamaların anahtarın bütünlüğünü tam olarak doğrulaması gerekir). client_id ve app_data, anahtar oluşturulduğunda veya içe aktarıldığında sağlanan kimlik ve veriler olmalı veya oluşturma sırasında KM_TAG_APPLICATION_ID ve/veya KM_TAG_APPLICATION_DATA sağlanmadıysa boş olmalıdır. Bu değerler döndürülen özelliklere dahil değildir. Arayan kişi, keymaster_free_characteristics() ile serbest bırakılması gereken tahsis edilmiş özellikler nesnesinin sahipliğini üstlenir.

KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ve KM_TAG_APPLICATION_DATA'nın hiçbir zaman döndürülmediğini unutmayın.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] anahtar_blob Özellikleri almanın anahtarı.
[içinde] Müşteri Kimliği İstemci kimliği verileri veya ilişkilendirilmemişse NULL.
[içinde] uygulama_kimliği Uygulama verileri veya ilişkilendirilmemişse NULL.
[dışarı] özellikler Temel özellikler.

Keymaster1.h dosyasının 309. satırındaki tanım.

int(* get_keypair_public)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length, uint8_t **x509_data, size_t *x509_data_length)
Kullanımdan kaldırıldı:
Bir anahtar çiftinin ortak anahtar kısmını alır. Genel anahtarın X.509 biçiminde (Java standardı) kodlanmış bayt dizisinde olması gerekir.

Başarı durumunda 0 veya 0'dan küçük bir hata kodu döndürür. Hata durumunda x509_data tahsis edilmemelidir.

Keymaster1.h dosyasının 76. satırındaki tanım.

keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device *dev, keymaster_algorithm_t **algoritmalar, size_t *algorithms_length)

Algoritmaların desteklenmesini sağlar.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[dışarı] algoritmalar Desteklenen algoritma dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakması gerekir().
[dışarı] algoritmalar_uzunluğu algorithms uzunluğu.

Keymaster1.h dosyasının 133. satırındaki tanım.

keymaster_error_t (* get_supported_block_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_amaç_t amacı, keymaster_block_mode_t **modlar, size_t *modes_uzunluğu)

Belirtilen algoritma için desteklenen blok modlarını alır.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] algoritma Desteklenen modların döndürüleceği algoritma.
[dışarı] modlar Desteklenen mod dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakması gerekir().
[dışarı] mod_uzunluğu modes uzunluğu.

Keymaster1.h dosyasının 149. satırındaki tanım.

keymaster_error_t (* get_supported_digests)(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_amaç_t amacı, keymaster_digest_t **digests, size_t *digests_length)

Belirtilen algoritma için desteklenen özetleri alır. Arayan, tahsis edilen dizinin sahipliğini üstlenir.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] algoritma Desteklenen özetlerin döndürüleceği algoritma.
[dışarı] özetler Desteklenen özet dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakması gerekir().
[dışarı] özetler_uzunluğu digests uzunluğu.

Keymaster1.h dosyasının 187. satırındaki tanım.

keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_key_format_t **formatlar, size_t *formats_length)

Belirtilen algoritmanın anahtarları için desteklenen anahtar dışarı aktarma biçimlerini alır. Arayan, tahsis edilen dizinin sahipliğini üstlenir.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] algoritma Desteklenen biçimlerin döndürüleceği algoritma.
[dışarı] formatlar Desteklenen format dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakması gerekir().
[dışarı] format_uzunluğu formats uzunluğu.

Keymaster1.h dosyasının 224. satırındaki tanım.

keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_key_format_t **formatlar, size_t *formats_length)

Belirtilen algoritmanın anahtarları için desteklenen anahtar içe aktarma biçimlerini alır. Arayan, tahsis edilen dizinin sahipliğini üstlenir.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] algoritma Desteklenen biçimlerin döndürüleceği algoritma.
[dışarı] formatlar Desteklenen format dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakması gerekir().
[dışarı] format_uzunluğu formats uzunluğu.

Keymaster1.h dosyasının 206. satırındaki tanım.

keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_amaç_t amacı, keymaster_padding_t **modlar, size_t *modes_uzunluğu)

Belirtilen algoritma için desteklenen doldurma modlarını alır. Arayan, tahsis edilen dizinin sahipliğini üstlenir.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] algoritma Desteklenen doldurma modlarının döndürüleceği algoritma.
[dışarı] modlar Desteklenen dolgu modları dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakması gerekir().
[dışarı] mod_uzunluğu modes uzunluğu.

Keymaster1.h dosyasının 168. satırındaki tanım.

keymaster_error_t (* import_key)(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_format_t key_format, const keymaster_blob_t *key_data, keymaster_key_blob_t *key_blob, keymaster_key_characteristics_t **karakteristikler)

Bir anahtar veya anahtar çiftini içe aktararak bir anahtar bloğunu ve/veya anahtarın açıklamasını döndürür.

Anahtar içe aktarma parametrelerinin çoğu, "params" içinde sağlanan anahtar yönetici etiketi/değer çiftleri olarak tanımlanır. Tam liste için keymaster_tag_t'ye bakın. Yararlı anahtarların içe aktarılması için her zaman gerekli olan değerler şunlardır:

  • KM_TAG_ALGORİTHM;
  • KM_TAG_PURPOSE; Ve
  • (KM_TAG_USER_SECURE_ID ve KM_TAG_USER_AUTH_TYPE) veya KM_TAG_NO_AUTH_REQUIRED.

KM_TAG_AUTH_TIMEOUT genel olarak belirtilmelidir. Belirtilmemişse kullanıcının her kullanımda kimlik doğrulaması yapması gerekir.

Aşağıdaki etiketler belirtilmediği takdirde varsayılan değerleri alacaktır:

  • KM_TAG_KEY_SIZE, sağlanan anahtarın boyutunu varsayılan olarak ayarlayacaktır.
  • KM_TAG_RSA_PUBLIC_EXPONENT, varsayılan olarak sağlanan anahtardaki değere ayarlanır (RSA anahtarları için)

Aşağıdaki etiketler belirtilmeyebilir; değerleri uygulamayla sağlanacaktır.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] parametreler İçe aktarılan anahtarı tanımlayan parametreler.
[içinde] params_count params girişlerin sayısı.
[içinde] anahtar_format anahtar_verilerdeki anahtar verinin biçimini belirtir.
[dışarı] anahtar_blob Opak anahtar bloğunu döndürmek için kullanılır. NULL olmamalıdır. Arayan kişi, içerilen key_material'ın sahipliğini üstlenir.
[dışarı] özellikler İçe aktarılan anahtarın özelliklerini döndürmek için kullanılır. NULL olabilir, bu durumda hiçbir özellik döndürülmeyecektir. NULL değilse, arayan kişi sahipliği üstlenir ve keymaster_free_characteristics() ile yeniden konumlandırma yapması gerekir. KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ve KM_TAG_APPLICATION_DATA'nın hiçbir zaman döndürülmediğini unutmayın.

Keymaster1.h dosyasının 357. satırındaki tanım.

int(* import_keypair)(const struct keymaster1_device *dev, const uint8_t *anahtar, const size_t anahtar_uzunluğu, uint8_t **anahtar_blob, size_t *anahtar_blob_uzunluğu)
Kullanımdan kaldırıldı:
Genel ve özel anahtar çiftini içe aktarır. İçe aktarılan anahtarlar DER kodlamalı (Java standardı) PKCS#8 formatında olacaktır. İade edilen anahtar bloğu opaktır ve daha sonra imza ve doğrulama için sağlanacaktır.

Döndürür: Başarı durumunda 0 veya 0'dan küçük bir hata kodu.

keymaster1.h dosyasının 66. satırındaki tanım.

int(* işaret_verisi)(const struct keymaster1_device *dev, const void *imzalama_paramları, const uint8_t *key_blob, const size_t anahtar_blob_uzunluğu, const uint8_t *data, const size_t veri_uzunluğu, uint8_t **imzalı_veri, size_t *imzalı_veri_uzunluğu)
Kullanımdan kaldırıldı:
Daha önce oluşturulmuş bir anahtar bloğunu kullanarak verileri imzalar. Bu, asimetrik bir anahtar veya gizli bir anahtar kullanabilir.

Döndürür: Başarı durumunda 0 veya 0'dan küçük bir hata kodu.

Keymaster1.h dosyasının 108. satırındaki tanım.

keymaster_error_t (* güncelleme)(const struct keymaster1_device *dev, keymaster_operation_handle_t operasyon_tanıtıcısı, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *giriş, size_t *input_consumed, keymaster_key_param_set_t *out_params, keymaster_blob_t *çıkış)

begin() ile başlatılan devam eden bir şifreleme işlemine veri sağlar ve muhtemelen çıktı alır.

Eğer işlem_tanıtıcısı geçersizse, update() işlevi KM_ERROR_INVALID_OPERATION_HANDLE değerini döndürecektir.

update() veri arabelleğinde sağlanan verilerin tümünü tüketmeyebilir. update(), *data_consumed'da tüketilen miktarı döndürecektir. Arayan kişi, tüketilmemiş verileri bir sonraki aramada sağlamalıdır.

Parametreler
[içinde] geliştirici Keymaster cihaz yapısı.
[içinde] işlem_tanıtıcısı begin() tarafından döndürülen işlem tanıtıcısı.
[içinde] in_params İşlem için ek parametreler. AEAD modları için bu, KM_TAG_ADDITIONAL_DATA'yı belirtmek için kullanılır. Birden fazla update() çağrısında ek verilerin sağlanabileceğini, ancak yalnızca giriş verileri sağlanana kadar sağlanabileceğini unutmayın.
[içinde] giriş begin() çağrısında belirlenen parametrelere göre işlenecek veriler. update() işlevinin sağlanan tüm verileri tüketebileceğini veya tüketmeyebileceğini unutmayın. Bkz. input_consumed .
[dışarı] girdi_tüketilen update() tarafından tüketilen veri miktarı. Bu, sağlanan miktardan azsa, arayan kişinin geri kalanı bir sonraki update() çağrısında sağlaması gerekir.
[dışarı] out_params Çıkış parametreleri. İşlemden ek veri döndürmek için kullanılır Arayan, çıktı parametreleri dizisinin sahipliğini alır ve onu keymaster_free_param_set() ile serbest bırakmalıdır. Herhangi bir çıktı parametresi beklenmiyorsa out_params NULL olarak ayarlanabilir. out_params NULL ise ve çıktı parametreleri oluşturulduysa, begin() işlevi KM_ERROR_OUTPUT_PARAMETER_NULL değerini döndürecektir.
[dışarı] çıktı Varsa çıktı verileri. Arayan, tahsis edilen arabelleğin sahipliğini üstlenir. çıktı NULL olmamalıdır.

update() işlevinin herhangi bir çıktı sağlayamayabileceğini unutmayın; bu durumda çıktı->veri_uzunluğu sıfır olur ve çıktı->veri NULL veya sıfır uzunlukta olabilir (böylece arayan kişi onu her zaman serbest bırakmalıdır()).

Keymaster1.h dosyasının 495. satırındaki tanım.

int(* doğrulama_verisi)(const struct keymaster1_device *dev, const void *imzalama_paramları, const uint8_t *key_blob, const size_t anahtar_blob_uzunluğu, const uint8_t *signed_data, const size_t imzalı_veri_uzunluğu, const uint8_t *imza, const size_t imza_uzunluğu)
Kullanımdan kaldırıldı:
Bir anahtar bloğuyla imzalanmış verileri doğrular. Bu, asimetrik bir anahtar veya gizli bir anahtar kullanabilir.

Döndürür: Başarılı doğrulamada 0 veya 0'dan küçük bir hata kodu.

Keymaster1.h dosyasının 118. satırındaki tanım.


Bu yapıya ilişkin belgeler aşağıdaki dosyadan oluşturulmuştur: