Anahtar Yöneticisi İşlevleri, Anahtar Yöneticisi İşlevleri

Bu sayfada Keymaster Donanım Soyutlama Katmanlarının (HAL'ler) uygulayıcılarına yardımcı olacak ayrıntılar sağlanmaktadır. API'deki her işlevi ve bu işlevin hangi Keymaster sürümünün mevcut olduğunu kapsar ve varsayılan uygulamayı açıklar. Etiketler için Keymaster Etiketler sayfasına bakın.

Genel uygulama yönergeleri

Aşağıdaki yönergeler API'deki tüm işlevler için geçerlidir.

Giriş işaretçisi parametreleri

Versiyon : 1, 2

Belirli bir çağrı için kullanılmayan giriş işaretçisi parametreleri NULL olabilir. Arayanın yer tutucuları sağlamasına gerek yoktur. Örneğin, bazı anahtar türleri ve modlar, start için inParams bağımsız değişkenindeki herhangi bir değeri kullanmayabilir; dolayısıyla çağıran, inParams NULL olarak ayarlayabilir veya boş bir parametre kümesi sağlayabilir. Arayanlar ayrıca kullanılmayan parametreleri de sağlayabilir ve Keymaster yöntemleri hata vermemelidir.

Gerekli giriş parametresi NULL ise, Keymaster yöntemleri ErrorCode::UNEXPECTED_NULL_POINTER değerini döndürmelidir.

Keymaster 3'ten başlayarak hiçbir işaretçi parametresi yoktur. Tüm parametreler değer veya sabit referanslarla iletilir.

Çıkış işaretçisi parametreleri

Versiyon : 1, 2

Giriş işaretçisi parametrelerine benzer şekilde, kullanılmayan çıkış işaretçisi parametreleri NULL olabilir. Bir yöntemin NULL olduğu bulunan bir çıktı parametresindeki verileri döndürmesi gerekiyorsa ErrorCode::OUTPUT_PARAMETER_NULL döndürmelidir.

Keymaster 3'ten başlayarak hiçbir işaretçi parametresi yoktur. Tüm parametreler değer veya sabit referanslarla iletilir.

API'nin kötüye kullanımı

Versiyon : 1, 2, 3

Arayanların mantıklı olmayan veya aptalca olan ancak teknik olarak yanlış olmayan isteklerde bulunabilmesinin birçok yolu vardır. Keymaster uygulamalarının bu gibi durumlarda başarısız olması veya bir teşhis vermesi gerekmez. Çok küçük anahtarların kullanılması, ilgisiz giriş parametrelerinin belirtilmesi, IV'lerin veya tekrarların yeniden kullanılması, amaçsız anahtarların üretilmesi (dolayısıyla işe yaramaz) ve benzerleri uygulamalar tarafından teşhis edilmemelidir. Gerekli parametrelerin atlanması, gerekli parametrelerin geçersiz belirtilmesi ve benzeri hataların teşhis edilmesi gerekir.

Keymaster modüllerine yapılan çağrıların anlamlı ve kullanışlı olmasını sağlamak uygulamaların, çerçevenin ve Android anahtar deposunun sorumluluğundadır.

Fonksiyonlar

getDonanımÖzellikleri

Sürüm : 3

Yeni getHardwareFeatures yöntemi, istemcilere temeldeki güvenli donanımın bazı önemli özelliklerini gösterir. Yöntem hiçbir argüman almaz ve tümü boolean olmak üzere dört değer döndürür:

  • Anahtarlar güvenli donanımda (TEE vb.) saklanıyorsa ve oradan asla ayrılmıyorsa isSecure true .
  • supportsEllipticCurve , donanım NIST eğrileriyle (P-224, P-256, P-384 ve P-521) Eliptik Eğri şifrelemesini destekliyorsa true .
  • supportsSymmetricCryptography donanım AES ve HMAC dahil olmak üzere simetrik şifrelemeyi destekliyorsa true .
  • Donanım, güvenli bir ortama eklenen bir anahtarla imzalanan Keymaster ortak anahtar kanıtlama sertifikalarının oluşturulmasını destekliyorsa, supportsAttestation true .

Bu yöntemin döndürebileceği tek hata kodları ErrorCode:OK , ErrorCode::KEYMASTER_NOT_CONFIGURED veya güvenli donanımla iletişim başarısızlığını belirten hata kodlarından biridir.

getHardwareFeatures()
    generates(bool isSecure, bool supportsEllipticCurve, bool supportsSymmetricCryptography,
              bool supportsAttestation, bool supportsAllDigests, string keymasterName,
              string keymasterAuthorName);

yapılandır

Versiyon 2

Bu işlev Keymaster 2'de tanıtıldı ve Keymaster 3'te kullanımdan kaldırıldı, çünkü bu bilgiler sistem özellikleri dosyalarında mevcuttur ve üretici uygulamaları başlatma sırasında bu dosyaları okur.

Anahtar yöneticisini yapılandırır. Bu yöntem cihaz açıldıktan sonra ve kullanılmadan önce bir kez çağrılır. Anahtar yöneticisine KM_TAG_OS_VERSION ve KM_TAG_OS_PATCHLEVEL sağlamak için kullanılır. Bu yöntem çağrılıncaya kadar diğer tüm yöntemler KM_ERROR_KEYMASTER_NOT_CONFIGURED değerini döndürür. Bu yöntemle sağlanan değerler, anahtar yöneticisi tarafından önyükleme başına yalnızca bir kez kabul edilir. Sonraki çağrılar KM_ERROR_OK değerini döndürür ancak hiçbir şey yapmaz.

Anahtar yöneticisi uygulaması güvenli donanımdaysa ve sağlanan işletim sistemi sürümü ve yama düzeyi değerleri, önyükleyici tarafından güvenli donanıma sağlanan değerlerle eşleşmiyorsa (veya önyükleyici değer sağlamadıysa), bu yöntem, KM_ERROR_INVALID_ARGUMENT değerini ve diğer tüm işlemleri döndürür. yöntemler KM_ERROR_KEYMASTER_NOT_CONFIGURED değerini döndürmeye devam eder.

keymaster_error_t (*configure)(const struct keymaster2_device* dev,
                               const keymaster_key_param_set_t* params);

addRngEntropy

Versiyon : 1, 2, 3

Bu işlev Keymaster 1'de add_rng_entropy olarak tanıtıldı ve Keymaster 3'te yeniden adlandırıldı.

Anahtarlar, IV'ler vb. için rastgele sayılar oluşturmak için Keymaster 1 uygulaması tarafından kullanılan havuza arayan tarafından sağlanan entropiyi ekler.

Keymaster uygulamalarının, sağlanan entropiyi, aynı zamanda bir donanım rastgele sayı üretecinden dahili olarak üretilen entropiyi de içermesi gereken havuzlarına güvenli bir şekilde karıştırması gerekir. Karıştırma, addRngEntropy tarafından sağlanan bitler veya donanım tarafından oluşturulan bitler üzerinde tam kontrole sahip olan ancak her ikisinde de olmayan bir saldırganın, entropi havuzundan üretilen bitleri tahmin etmede göz ardı edilemez bir avantaja sahip olmayacağı şekilde ele alınmalıdır.

Dahili havuzlarındaki entropiyi tahmin etmeye çalışan Keymaster uygulamaları, addRngEntropy tarafından sağlanan verilerin hiç entropi içermediğini varsayar. Keymaster uygulamaları, tek bir çağrıda 2 KiB'den fazla veri verilirse ErrorCode::INVALID_INPUT_LENGTH döndürebilir.

anahtar oluştur

Versiyon : 1, 2, 3

Bu işlev, Keymaster 1'de generate_key olarak tanıtıldı ve Keymaster 3'te yeniden adlandırıldı.

Anahtara kalıcı olarak bağlanan ilgili yetkilendirmeleri belirten yeni bir şifreleme anahtarı oluşturur. Keymaster uygulamaları, bir anahtarın üretim zamanında belirtilen yetkilerle tutarsız bir şekilde kullanılmasını imkansız hale getirir. Güvenli donanımın uygulayamayacağı yetkilendirmelerle ilgili olarak, güvenli donanımın yükümlülüğü, anahtarla ilişkili uygulanamayan yetkilendirmelerin değiştirilememesini sağlamakla sınırlıdır, böylece getKeyCharacteristics'e yapılan her çağrı orijinal değeri döndürür. Ayrıca, generateKey döndürdüğü özellikler, yetkilendirmeleri donanım tarafından zorlanan ve yazılım tarafından zorlanan listeler arasında doğru şekilde tahsis eder. Daha fazla ayrıntı için getKeyCharacteristics'e bakın.

generateKey için sağlanan parametreler, oluşturulan anahtarın türüne bağlıdır. Bu bölüm, her anahtar türü için gerekli ve isteğe bağlı etiketleri özetlemektedir. Türü belirtmek için Tag::ALGORİTMA her zaman gereklidir.

RSA anahtarları

Bir RSA anahtarı oluşturmak için aşağıdaki parametreler gereklidir.

  • Tag::KEY_SIZE genel modülün boyutunu bit cinsinden belirtir. Atlanırsa yöntem ErrorCode::UNSUPPORTED_KEY_SIZE değerini döndürür. Desteklenen değerler 1024, 2048, 3072 ve 4096'dır. Önerilen değerlerin tümü, 8'in katı olan anahtar boyutlarıdır.
  • Tag::RSA_PUBLIC_EXPONENT, RSA genel üs değerini belirtir. Atlanırsa yöntem ErrorCode::INVALID_ARGUMENT değerini döndürür. Desteklenen değerler 3 ve 65537'dir. Önerilen değerlerin tümü 2^64'e kadar olan asal değerlerdir.

Bir RSA anahtarı oluşturmak için aşağıdaki parametreler gerekli değildir ancak bunlar olmadan bir RSA anahtarı oluşturmak, kullanılamaz bir anahtar üretir. Ancak bu parametreler atlanırsa generateKey işlevi hata döndürmez.

  • Tag::PURPOSE izin verilen amaçları belirtir. RSA anahtarları için tüm amaçların herhangi bir kombinasyonda desteklenmesi gerekir.
  • Tag::DIGEST, yeni anahtarla kullanılabilecek özet algoritmalarını belirtir. Tüm özet algoritmalarını desteklemeyen uygulamaların, desteklenmeyen özetleri içeren anahtar oluşturma isteklerini kabul etmesi gerekir. Desteklenmeyen özetler, döndürülen temel özelliklerdeki "yazılım tarafından uygulanan" listeye yerleştirilmelidir. Bunun nedeni, anahtarın diğer özetlerle kullanılabilmesi, ancak özetlemenin yazılımda gerçekleştirilmesidir. Daha sonra Digest::NONE ile işlemi gerçekleştirmek için donanım çağrılır.
  • Tag::PADDING, yeni anahtarla kullanılabilecek dolgu modlarını belirtir. Tüm özet algoritmalarını desteklemeyen uygulamaların, desteklenmeyen herhangi bir özet algoritması belirtilirse, yazılım tarafından uygulanan temel özellikler listesine PaddingMode::RSA_PSS ve PaddingMode::RSA_OAEP yerleştirmesi gerekir.

ECDSA anahtarları

Bir ECDSA anahtarı oluşturmak için yalnızca Tag::KEY_SIZE gereklidir. EC grubunu seçmek için kullanılır. Desteklenen değerler sırasıyla NIST p-224, p-256, p-384 ve p521 eğrilerini gösteren 224, 256, 384 ve 521'dir.

Tag::DIGEST ayrıca kullanışlı bir ECDSA anahtarı için de gereklidir, ancak oluşturma için gerekli değildir.

AES anahtarları

AES anahtarı oluşturmak için yalnızca Tag::KEY_SIZE gereklidir. Atlanırsa yöntem ErrorCode::UNSUPPORTED_KEY_SIZE değerini döndürür. Desteklenen değerler 128 ve 256'dır ve 192 bit AES anahtarları için isteğe bağlı destek vardır.

Aşağıdaki parametreler özellikle AES anahtarlarıyla ilgilidir ancak bir anahtar oluşturmak için gerekli değildir:

  • Tag::BLOCK_MODE yeni anahtarın kullanılabileceği blok modlarını belirtir.
  • Tag::PADDING kullanılabilecek dolgu modlarını belirtir. Bu yalnızca ECB ve CBC modları için geçerlidir.

GCM blok modu belirtildiyse Tag::MIN_MAC_LENGTH değerini sağlayın. Atlanırsa yöntem ErrorCode::MISSING_MIN_MAC_LENGTH değerini döndürür. Etiketin değeri 8'in katıdır ve 96 ile 128 arasındadır.

HMAC anahtarları

HMAC anahtarının oluşturulması için aşağıdaki parametreler gereklidir:

  • Tag::KEY_SIZE anahtar boyutunu bit cinsinden belirtir. 64'ten küçük değerler ve 8'in katı olmayan değerler desteklenmez. 64'ten 512'ye kadar 8'in tüm katları desteklenir. Daha büyük değerler desteklenebilir.
  • Tag::MIN_MAC_LENGTH, bu anahtarla oluşturulabilecek veya doğrulanabilecek minimum MAC uzunluğunu belirtir. Değer 8'in katı ve en az 64'tür.
  • Tag::DIGEST anahtarın özet algoritmasını belirtir. Tam olarak bir özet belirtildi, aksi takdirde ErrorCode::UNSUPPORTED_DIGEST değerini döndürün. Özet güven uygulaması tarafından desteklenmiyorsa, ErrorCode::UNSUPPORTED_DIGEST değerini döndürün.

Temel özellikler

Özellikler bağımsız değişkeni NULL değilse, generateKey yeni oluşturulan anahtarın özelliklerini uygun şekilde donanım tarafından zorlanan ve yazılım tarafından zorlanan listelere bölünmüş olarak döndürür. Hangi özelliklerin hangi listede yer aldığını öğrenmek için getKeyCharacteristics'e bakın. Döndürülen özellikler , Tag::APPLICATION_ID ve Tag::APPLICATION_DATA dışında, anahtar oluşturma için belirtilen tüm parametreleri içerir. Bu etiketler anahtar parametrelerin içinde yer aldıysa, döndürülen özelliklerden çıkarılırlar, böylece döndürülen anahtar blob incelenerek değerlerinin bulunması mümkün olmaz. Ancak bunlar anahtar blob'a kriptografik olarak bağlıdır, dolayısıyla anahtar kullanıldığında doğru değerler sağlanmazsa kullanım başarısız olur. Benzer şekilde, Tag::ROOT_OF_TRUST anahtara kriptografik olarak bağlıdır, ancak anahtar oluşturma veya içe aktarma sırasında belirtilmeyebilir ve hiçbir zaman döndürülmez.

Sağlanan etiketlere ek olarak, Trustlet aynı zamanda KeyOrigin::GENERATED değerine sahip Tag::ORIGIN değerini de ekler ve anahtar geri dönmeye dayanıklıysa,

Etiket::ROLLBACK_RESISTANT .

Geri alma direnci

Geri alma direnci, bir anahtarın deleteKey veya deleteAllKeys ile silindiğinde, güvenli donanım tarafından bir daha asla kullanılamayacağının garanti edildiği anlamına gelir. Geri alma direnci olmayan uygulamalar, genellikle oluşturulan veya içe aktarılan anahtar materyali arayan kişiye bir anahtar bloğu, şifrelenmiş ve kimliği doğrulanmış bir form olarak döndürür. Anahtar deposu anahtar bloğunu sildiğinde anahtar kaybolur ancak daha önce anahtar malzemesini almayı başaran bir saldırgan, onu cihaza geri yükleme potansiyeline sahiptir.

Güvenli donanım, silinen anahtarların daha sonra geri yüklenemeyeceğini garanti ediyorsa, anahtar geri alınmaya karşı dirençlidir. Bu genellikle ek anahtar meta verilerinin, bir saldırgan tarafından manipüle edilemeyecek güvenilir bir konumda saklanmasıyla yapılır. Mobil cihazlarda bunun için kullanılan mekanizma genellikle Tekrar Korumalı Bellek Bloklarıdır (RPMB). Oluşturulabilecek anahtarların sayısı esasen sınırsız olduğundan ve geri alma direnci için kullanılan güvenilir depolamanın boyutu sınırlı olabileceğinden, yeni anahtar için geri alma direnci sağlanamasa bile bu yöntemin başarılı olması gerekir. Bu durumda anahtar özelliklere Tag::ROLLBACK_RESISTANT eklenmemelidir.

getKeyÖzellikleri

Versiyon : 1, 2, 3

Bu işlev, Keymaster 1'de get_key_characteristics olarak tanıtıldı ve Keymaster 3'te yeniden adlandırıldı.

Sağlanan anahtarla ilişkili parametreleri ve yetkilendirmeleri iki gruba ayrılmış olarak döndürür: donanım tarafından zorlanan ve yazılım tarafından zorlanan. Buradaki açıklama, createdKey ve importKey tarafından döndürülen temel özellikler listeleri için de aynı şekilde geçerlidir.

Anahtar oluşturma veya içe aktarma sırasında Tag::APPLICATION_ID sağlandıysa, clientId bağımsız değişkeninde bu yönteme aynı değer sağlanır. Aksi takdirde yöntem ErrorCode::INVALID_KEY_BLOB değerini döndürür. Benzer şekilde, oluşturma veya içe aktarma sırasında Tag::APPLICATION_DATA sağlandıysa, appData bağımsız değişkeninde bu yönteme aynı değer sağlanır.

Bu yöntemin döndürdüğü özellikler, belirtilen anahtarın türünü ve kullanımını tamamen açıklar.

Belirli bir etiketin donanım tarafından zorlanan listeye mi yoksa yazılım tarafından zorlanan listeye mi ait olduğuna karar vermenin genel kuralı, etiketin anlamının güvenli donanım tarafından tamamen güvence altına alınması durumunda donanım tarafından zorlandığıdır. Aksi halde yazılım zorlanır. Aşağıda, doğru tahsisi belirsiz olabilecek belirli etiketlerin bir listesi bulunmaktadır:

  • Tag::ALGORITHM , Tag::KEY_SIZE ve Tag::RSA_PUBLIC_EXPONENT anahtarın kendine özgü özellikleridir. Donanım tarafından güvenliği sağlanan herhangi bir anahtar için bu etiketler donanım tarafından uygulanan listede olacaktır.
  • Güvenli donanım tarafından desteklenen Tag::DIGEST değerleri donanım destekli listeye yerleştirilir. Desteklenmeyen özetler yazılım tarafından desteklenen listeye eklenir.
  • Tag::PADDING değerleri, yazılım tarafından belirli bir doldurma modunun gerçekleştirilmesi gerekme ihtimali olmadığı sürece, genellikle donanım tarafından desteklenen listede yer alır. Bu durumda yazılım tarafından uygulanan listeye girerler. Güvenli donanım tarafından desteklenmeyen özet algoritmalarıyla PSS veya OAEP dolgusuna izin veren RSA anahtarları için böyle bir olasılık ortaya çıkar.
  • Tag::USER_SECURE_ID ve Tag::USER_AUTH_TYPE, yalnızca kullanıcı kimlik doğrulamasının donanım tarafından zorlanması durumunda donanım tarafından zorlanır. Bunu başarmak için Keymaster güven uygulaması ve ilgili kimlik doğrulama güven uygulaması güvenli olmalı ve kimlik doğrulama belirteçlerini imzalamak ve doğrulamak için kullanılan gizli bir HMAC anahtarını paylaşmalıdır. Ayrıntılar için Kimlik Doğrulama sayfasına bakın.
  • Tag::ACTIVE_DATETIME , Tag::ORIGINATION_EXPIRE_DATETIME ve Tag::USAGE_EXPIRE_DATETIME etiketleri, doğruluğu doğrulanabilir bir duvar saatine erişim gerektirir. Çoğu güvenli donanımın yalnızca güvenli olmayan işletim sistemi tarafından sağlanan zaman bilgilerine erişimi vardır; bu, etiketlerin yazılım tarafından zorlandığı anlamına gelir.
  • Tag::ORIGIN her zaman donanıma bağlı anahtarlar için donanım listesindedir. Bu listedeki varlığı, daha yüksek katmanların bir anahtarın donanım destekli olduğunu belirleme şeklidir.

içe aktarmaAnahtarı

Versiyon : 1, 2, 3

Bu işlev Keymaster 1'de import_key olarak tanıtıldı ve Keymaster 3'te yeniden adlandırıldı.

Anahtar materyali Keymaster donanımına aktarır. Anahtar tanımı parametreleri ve çıktı özellikleri, aşağıdaki istisnalar dışında, generateKey ile aynı şekilde işlenir:

  • Giriş parametrelerinde Tag::KEY_SIZE ve Tag::RSA_PUBLIC_EXPONENT (yalnızca RSA anahtarları için) gerekli değildir. Sağlanmadığı takdirde Trustlet, sağlanan anahtar materyalden değerleri çıkarır ve anahtar özelliklere uygun etiketleri ve değerleri ekler. Parametreler sağlanırsa güven uygulaması bunları anahtar malzemeye göre doğrular. Uyuşmazlık durumunda yöntem ErrorCode::IMPORT_PARAMETER_MISMATCH değerini döndürür.
  • Döndürülen Tag::ORIGIN, KeyOrigin::IMPORTED ile aynı değere sahiptir.

ihracatAnahtarı

Versiyon : 1, 2, 3

Bu işlev Keymaster 1'de export_key olarak tanıtıldı ve Keymaster 3'te yeniden adlandırıldı.

Keymaster RSA veya EC anahtar çiftinden genel anahtarı dışa aktarır.

Anahtar oluşturma veya içe aktarma sırasında Tag::APPLICATION_ID sağlandıysa, clientId bağımsız değişkeninde bu yönteme aynı değer sağlanır. Aksi takdirde yöntem ErrorCode::INVALID_KEY_BLOB değerini döndürür. Benzer şekilde, oluşturma veya içe aktarma sırasında Tag::APPLICATION_DATA sağlandıysa, appData bağımsız değişkeninde bu yönteme aynı değer sağlanır.

silAnahtar

Versiyon : 1, 2, 3

Bu işlev Keymaster 1'de delete_key olarak tanıtıldı ve Keymaster 3'te yeniden adlandırıldı.

Sağlanan anahtarı siler. Bu yöntem isteğe bağlıdır ve yalnızca geri alma direnci sağlayan Keymaster modülleri tarafından uygulanır.

Tüm Anahtarları sil

Versiyon : 1, 2, 3

Bu işlev, Keymaster 1'de delete_all_keys olarak tanıtıldı ve Keymaster 3'te yeniden adlandırıldı.

Tüm anahtarları siler. Bu yöntem isteğe bağlıdır ve yalnızca geri alma direnci sağlayan Keymaster modülleri tarafından uygulanır.

Onay Kimliklerini yok et

Sürüm : 3

destroyAttestationIds() yöntemi, yeni (isteğe bağlı ancak şiddetle tavsiye edilen) kimlik doğrulama özelliğini kalıcı olarak devre dışı bırakmak için kullanılır. Bu yöntem çağrıldıktan sonra TEE'nin kimlik doğrulamasının kalıcı olarak devre dışı bırakılmasını sağlamanın bir yolu yoksa, kimlik doğrulaması hiçbir şekilde uygulanmamalıdır; bu durumda bu yöntem hiçbir şey yapmaz ve ErrorCode::UNIMPLEMENTED değerini döndürür. Kimlik doğrulaması destekleniyorsa bu yöntemin uygulanması gerekir ve gelecekteki tüm kimlik doğrulama girişimlerini kalıcı olarak devre dışı bırakmalıdır. Yöntem herhangi bir sayıda çağrılabilir. Kimlik doğrulaması zaten kalıcı olarak devre dışı bırakılmışsa, yöntem hiçbir şey yapmaz ve ErrorCode::OK değerini döndürür.

Bu yöntemin döndürebileceği tek hata kodları ErrorCode::UNIMPLEMENTED (kimlik doğrulaması desteklenmiyorsa), ErrorCode:OK , ErrorCode::KEYMASTER_NOT_CONFIGURED veya güvenli donanımla iletişim başarısızlığını belirten hata kodlarından biridir.

başlamak

Versiyon : 1, 2, 3

Belirtilen amaç için, belirtilen parametrelerle (uygun olduğu şekilde) belirtilen anahtarı kullanarak bir şifreleme işlemi başlatır ve işlemi tamamlamak için güncelleme ve bitirme ile kullanılan bir işlem tanıtıcısını döndürür. İşlem tanıtıcısı aynı zamanda kimliği doğrulanmış işlemlerde "meydan okuma" belirteci olarak da kullanılır ve bu tür işlemler için kimlik doğrulama belirtecinin challenge alanına dahil edilir.

Bir Keymaster uygulaması en az 16 eşzamanlı işlemi destekler. Anahtar deposu 15'e kadar kullanır ve vold'ün parola şifrelemesi için kullanması için bir tane kalır. Keystore'da devam eden 15 işlem olduğunda ( begin çağrıldı, ancak finish veya abort henüz çağrılmadı) ve 16. işlemi başlatmak için bir istek aldığında, etkin operasyonların sayısını azaltmak için en son kullanılan operasyonda abort çağırır. Yeni istenen işlemi başlatmaya begin önce 14'e kadar.

Anahtar oluşturma veya içe aktarma sırasında Tag::APPLICATION_ID veya Tag::APPLICATION_DATA belirtildiyse, begin ​​çağrıları, bu yöntemin inParams bağımsız değişkeninde orijinal olarak belirtilen değerlere sahip etiketleri içerir.

Yetkilendirmenin uygulanması

Bu yöntem sırasında, uygulamanın bunları "donanım tarafından uygulanan" özelliklere yerleştirmesi ve işlemin bir genel anahtar işlemi olmaması durumunda, aşağıdaki anahtar yetkilendirmeleri Trustlet tarafından zorunlu kılınır. RSA veya EC anahtarlarıyla KeyPurpose::ENCRYPT ve KeyPurpose::VERIFY anlamına gelen ortak anahtar işlemlerinin, yetkilendirme gereksinimleri karşılanmasa bile başarılı olmasına izin verilir.

  • Tag::PURPOSE : begin() çağrısında belirtilen amacın, istenen işlem bir genel anahtar işlemi olmadığı sürece, anahtar yetkilendirmelerindeki amaçlardan biriyle eşleşmesi gerekir. Belirtilen amaç eşleşmiyorsa ve işlem bir genel anahtar işlemi değilse, begin ErrorCode::UNSUPPORTED_PURPOSE değerini döndürecektir. Açık anahtar işlemleri asimetrik şifreleme veya doğrulama işlemleridir.
  • Tag::ACTIVE_DATETIME yalnızca güvenilir bir UTC zaman kaynağı mevcutsa uygulanabilir. Geçerli tarih ve saat etiket değerinden önceyse yöntem ErrorCode::KEY_NOT_YET_VALID değerini döndürür.
  • Tag::ORIGINATION_EXPIRE_DATETIME yalnızca güvenilir bir UTC zaman kaynağı mevcutsa uygulanabilir. Geçerli tarih ve saat etiket değerinden sonraysa ve amaç KeyPurpose::ENCRYPT veya KeyPurpose::SIGN ise, yöntem ErrorCode::KEY_EXPIRED döndürür.
  • Tag::USAGE_EXPIRE_DATETIME yalnızca güvenilir bir UTC zaman kaynağı mevcutsa uygulanabilir. Geçerli tarih ve saat etiket değerinden sonraysa ve amaç KeyPurpose::DECRYPT veya KeyPurpose::VERIFY ise, yöntem ErrorCode::KEY_EXPIRED döndürür.
  • Tag::MIN_SECONDS_BETWEEN_OPS, anahtarın son kullanımını gösteren güvenilir bir göreceli zamanlayıcıyla karşılaştırılır. Son kullanım süresi artı etiket değeri geçerli saatten küçükse, yöntem ErrorCode::KEY_RATE_LIMIT_EXCEEDED döndürür. Önemli uygulama ayrıntıları için etiket açıklamasına bakın.
  • Tag::MAX_USES_PER_BOOT, önyükleme zamanından bu yana anahtarın kullanımını izleyen güvenli bir sayaçla karşılaştırılır. Önceki kullanımların sayısı etiket değerini aşarsa yöntem ErrorCode::KEY_MAX_OPS_EXCEEDED döndürür.
  • Tag::USER_SECURE_ID, yalnızca anahtarda ayrıca Tag::AUTH_TIMEOUT varsa bu yöntemle uygulanır. Anahtar her ikisine de sahipse, bu yöntemin inParams geçerli bir Tag::AUTH_TOKEN alması gerekir. Kimlik doğrulama belirtecinin geçerli olması için aşağıdakilerin hepsinin doğru olması gerekir:
    • HMAC alanı doğru şekilde doğrulanır.
    • Anahtardaki Tag::USER_SECURE_ID değerlerinden en az biri, belirteçteki güvenli kimlik değerlerinden en az biriyle eşleşiyor.
    • Anahtarda, belirteçteki kimlik doğrulama türüyle eşleşen bir Tag::USER_AUTH_TYPE bulunur.

    Bu koşullardan herhangi biri karşılanmazsa yöntem ErrorCode::KEY_USER_NOT_AUTHENTICATED değerini döndürür.

  • Tag::CALLER_NONCE arayanın bir tek seferlik veya başlatma vektörünü (IV) belirtmesine olanak tanır. Anahtarda bu etiket yoksa ancak arayan kişi bu yönteme Tag::NONCE sağladıysa, ErrorCode::CALLER_NONCE_PROHIBITED döndürülür.
  • Tag::BOOTLOADER_ONLY anahtarı yalnızca önyükleyicinin kullanabileceğini belirtir. Bu yöntem, önyükleyicinin yürütülmesi tamamlandıktan sonra yalnızca önyükleyici anahtarıyla çağrılırsa, ErrorCode::INVALID_KEY_BLOB döndürür.

RSA anahtarları

Tüm RSA anahtar işlemleri inParams tam olarak bir doldurma modunu belirtir. Belirtilmezse veya birden fazla kez belirtilirse, yöntem ErrorCode::UNSUPPORTED_PADDING_MODE değerini döndürür.

OAEP dolgu moduyla RSA şifreleme ve şifre çözme işlemleri gibi, RSA imzalama ve doğrulama işlemlerinin de bir özete ihtiyacı vardır. Bu durumlarda arayan kişi inParams tam olarak bir özet belirtir. Belirtilmezse veya birden fazla kez belirtilirse, yöntem ErrorCode::UNSUPPORTED_DIGEST değerini döndürür.

Özel anahtar işlemleri ( KeyPurpose::DECYPT ve KeyPurpose::SIGN ) özet ve dolgu yetkilendirmesine ihtiyaç duyar; bu, anahtar yetkilendirmelerinin belirtilen değerleri içermesi gerektiği anlamına gelir. Değilse, yöntem uygun şekilde ErrorCode::INCOMPATIBLE_DIGEST veya ErrorCode::INCOMPATIBLE_PADDING döndürür. Genel anahtar işlemlerine ( KeyPurpose::ENCRYPT ve KeyPurpose::VERIFY ) yetkisiz özet veya dolgu ile izin verilir.

PaddingMode::NONE dışında tüm RSA dolgu modları yalnızca belirli amaçlar için geçerlidir. Özellikle, PaddingMode::RSA_PKCS1_1_5_SIGN ve PaddingMode::RSA_PSS yalnızca imzalamayı ve doğrulamayı desteklerken, PaddingMode::RSA_PKCS1_1_1_5_ENCRYPT ve PaddingMode::RSA_OAEP yalnızca şifrelemeyi ve şifre çözmeyi destekler. Belirtilen mod belirtilen amacı desteklemiyorsa, yöntem ErrorCode::UNSUPPORTED_PADDING_MODE değerini döndürür.

Doldurma modları ve özetler arasında bazı önemli etkileşimler vardır:

  • PaddingMode::NONE "ham" bir RSA işleminin gerçekleştirildiğini gösterir. İmzalıyor veya doğruluyorsanız, özet için Digest::NONE belirtilir. Dolgusuz şifreleme veya şifre çözme için özet gerekli değildir.
  • PaddingMode::RSA_PKCS1_1_5_SIGN dolgusu bir özet gerektirir. Özet Digest::NONE olabilir; bu durumda Keymaster uygulaması DigestInfo yapısını ekleyemediği için uygun bir PKCS#1 v1.5 imza yapısı oluşturamaz. Bunun yerine uygulama 0x00 || 0x01 || PS || 0x00 || M , burada M sağlanan mesajdır ve PS doldurma dizesidir. RSA anahtarının boyutu mesajdan en az 11 bayt daha büyük olmalıdır, aksi takdirde yöntem ErrorCode::INVALID_INPUT_LENGTH döndürür.
  • PaddingMode::RSA_PKCS1_1_1_5_ENCRYPT dolgusu özet gerektirmez.
  • PaddingMode::RSA_PSS dolgusu bir özet gerektirir ve bu Digest::NONE olmayabilir. Digest::NONE belirtilirse, yöntem ErrorCode::INCOMPATIBLE_DIGEST değerini döndürür. Ek olarak, RSA anahtarının boyutu, özetin çıktı boyutundan en az 2 + D bayt daha büyük olmalıdır; burada D, bayt cinsinden özetin boyutudur. Aksi halde yöntem ErrorCode::INCOMPATIBLE_DIGEST değerini döndürür. Tuz boyutu D'dir.
  • PaddingMode::RSA_OAEP dolgusu bir özet gerektirir ve bu Digest::NONE olmayabilir. Digest::NONE belirtilirse, yöntem ErrorCode::INCOMPATIBLE_DIGEST değerini döndürür.

EC anahtarları

EC tuş işlemleri inParams tam olarak bir doldurma modunu belirtir. Belirtilmezse veya birden fazla kez belirtilirse, yöntem ErrorCode::UNSUPPORTED_PADDING_MODE değerini döndürür.

Özel anahtar işlemleri ( KeyPurpose::SIGN ), özet ve dolgu yetkilendirmesine ihtiyaç duyar; bu, anahtar yetkilendirmelerinin belirtilen değerleri içermesi gerektiği anlamına gelir. Değilse, ErrorCode::INCOMPATIBLE_DIGEST değerini döndürün. Genel anahtar işlemlerine ( KeyPurpose::VERIFY ) yetkisiz özet veya dolgu ile izin verilir.

AES anahtarları

AES tuş işlemleri inParams tam olarak bir blok modunu ve bir doldurma modunu belirtir. Değerlerden biri belirtilmemişse veya birden fazla belirtildiyse, ErrorCode::UNSUPPORTED_BLOCK_MODE veya ErrorCode::UNSUPPORTED_PADDING_MODE değerini döndürün. Belirtilen modların anahtar tarafından yetkilendirilmesi gerekir, aksi takdirde yöntem ErrorCode::INCOMPATIBLE_BLOCK_MODE veya ErrorCode::INCOMPATIBLE_PADDING_MODE değerini döndürür.

Blok modu BlockMode::GCM ise inParams , Tag::MAC_LENGTH değerini belirtir ve belirtilen değer, 128'den büyük olmayan veya anahtar yetkilendirmelerindeki Tag::MIN_MAC_LENGTH değerinden küçük olmayan 8'in katıdır. 128'den büyük veya 8'in katı olmayan MAC uzunlukları için ErrorCode::UNSUPPORTED_MAC_LENGTH değerini döndürün. Anahtarın minimum uzunluğundan daha kısa değerler için ErrorCode::INVALID_MAC_LENGTH değerini döndürün.

Blok modu BlockMode::GCM veya BlockMode::CTR ise, belirtilen doldurma modunun PaddingMode::NONE olması gerekir. BlockMode::ECB veya BlockMode::CBC için mod, PaddingMode::NONE veya PaddingMode::PKCS7 olabilir. Doldurma modu bu koşulları karşılamıyorsa ErrorCode::INCOMPATIBLE_PADDING_MODE değerini döndürün.

Blok modu BlockMode::CBC , BlockMode::CTR veya BlockMode::GCM ise, bir başlatma vektörü veya nonce gereklidir. Çoğu durumda, arayanların IV veya tek seferlik bir ilaç vermemesi gerekir. Bu durumda, Keymaster uygulaması rastgele bir IV veya nonce oluşturur ve bunu outParams içindeki Tag::NONCE aracılığıyla döndürür. CBC ve CTR IV'ler 16 bayttır. GCM nonce'ları 12 bayttır. Anahtar yetkilendirmeleri Tag::CALLER_NONCE içeriyorsa, arayan kişi inParams Tag::NONCE içeren bir IV/nonce sağlayabilir. Tag::CALLER_NONCE yetkili olmadığında bir nonce sağlanırsa, ErrorCode::CALLER_NONCE_PROHIBITED değerini döndürün. Tag::CALLER_NONCE yetkilendirildiğinde bir tek seferlik sağlanmadıysa, rastgele bir IV/tek seferlik oluşturun.

HMAC anahtarları

HMAC anahtar işlemleri inParams Tag::MAC_LENGTH değerini belirtir. Belirtilen değer, özet uzunluğundan büyük veya anahtar yetkilendirmelerindeki Tag::MIN_MAC_LENGTH değerinden küçük olmayan 8'in katı olmalıdır. Özet uzunluğundan büyük veya 8'in katı olmayan MAC uzunlukları için ErrorCode::UNSUPPORTED_MAC_LENGTH değerini döndürün. Anahtarın minimum uzunluğundan daha kısa değerler için ErrorCode::INVALID_MAC_LENGTH değerini döndürün.

güncelleme

Versiyon : 1, 2, 3

begin ile başlayan devam eden bir işlemde işlenecek verileri sağlar. İşlem, operationHandle parametresi tarafından belirtilir.

Arabellek işleme için daha fazla esneklik sağlamak amacıyla, bu yöntemin uygulamaları sağlanandan daha az veri tüketme seçeneğine sahiptir. Arayan, sonraki aramalarda verilerin geri kalanını beslemek için döngüden sorumludur. Tüketilen girdi miktarı inputConsumed parametresinde döndürülür. İşlem daha fazlasını kabul edemediği sürece uygulamalar her zaman en az bir bayt tüketir; sıfır bayttan fazlası sağlanırsa ve sıfır bayt tüketilirse arayanlar bunu bir hata olarak kabul eder ve işlemi iptal eder.

Uygulamalar ayrıca güncelleme sonucunda ne kadar verinin döndürüleceğini de seçebilir. Bu yalnızca şifreleme ve şifre çözme işlemleriyle ilgilidir çünkü imzalama ve doğrulama bitene kadar hiçbir veri döndürmez. Verileri ara belleğe almak yerine mümkün olduğunca erken döndürün.

Hata yönetimi

Bu yöntem ErrorCode::OK dışında bir hata kodu döndürürse işlem iptal edilir ve işlem tanıtıcısı geçersiz kılınır. Tanıtıcının gelecekte bu yöntemle ( finiş veya iptal) kullanılması, ErrorCode::INVALID_OPERATION_HANDLE değerini döndürür.

Yetkilendirmenin uygulanması

Anahtar yetkilendirme uygulaması öncelikle begin'de gerçekleştirilir. Bunun tek istisnası, anahtarın aşağıdaki özelliklere sahip olduğu durumdur:

Bu durumda anahtar, işlem başına bir yetkilendirme gerektirir ve güncelleme yöntemi, inParams bağımsız değişkeninde bir Tag::AUTH_TOKEN alır. HMAC, belirtecin geçerli olduğunu ve eşleşen bir güvenli kullanıcı kimliği içerdiğini, anahtarın Tag::USER_AUTH_TYPE ile eşleştiğini ve sorgulama alanındaki mevcut işlemin işlem tanıtıcısını içerdiğini doğrular. Bu koşullar karşılanmazsa ErrorCode::KEY_USER_NOT_AUTHENTICATED değerini döndürün.

Arayan kişi, güncelleme ve bitirme için her çağrıya kimlik doğrulama belirtecini sağlar. Uygulamanın, eğer tercih ederse, belirteci yalnızca bir kez doğrulaması gerekir.

RSA anahtarları

Digest::NONE ile imzalama ve doğrulama işlemleri için bu yöntem, bloğun tamamının tek bir güncellemede imzalanmasını veya doğrulanmasını kabul eder. Bloğun yalnızca bir kısmını tüketmeyebilir. Ancak arayan kişi verileri birden fazla güncellemede sağlamayı seçerse bu yöntem bunu kabul eder. Arayan, imzalamak için kullanılabilecekten daha fazla veri sağlarsa (veri uzunluğu RSA anahtar boyutunu aşıyorsa), ErrorCode::INVALID_INPUT_LENGTH değerini döndürün.

ECDSA anahtarları

Digest::NONE ile imzalama ve doğrulama işlemleri için bu yöntem, bloğun tamamının tek bir güncellemede imzalanmasını veya doğrulanmasını kabul eder. Bu yöntem bloğun yalnızca bir kısmını tüketmeyebilir.

Ancak arayan kişi verileri birden fazla güncellemede sağlamayı seçerse bu yöntem bunu kabul eder. Arayan kişi imzalamak için kullanılabilecekten daha fazla veri sağlarsa veriler sessizce kesilir. (Bu, benzer RSA işlemlerinde sağlanan fazla verinin işlenmesinden farklıdır. Bunun nedeni, eski istemcilerle uyumluluktur.)

AES anahtarları

AES GCM modu, inParams bağımsız değişkenindeki Tag::ASSOCIATED_DATA etiketi aracılığıyla sağlanan "ilişkili kimlik doğrulama verilerini" destekler. İlişkili veriler tekrarlanan çağrılarda sağlanabilir (veri tek bir blokta gönderilemeyecek kadar büyükse önemlidir), ancak her zaman şifrelenecek veya şifresi çözülecek verilerden önce gelir. Bir güncelleme çağrısı hem ilişkili verileri hem de şifrelemek/şifresini çözmek için verileri alabilir, ancak sonraki güncellemeler ilişkili verileri içermeyebilir. Arayan, şifreleme/şifre çözme verilerini içeren bir çağrının ardından bir güncelleme çağrısına ilişkili verileri sağlarsa, ErrorCode::INVALID_TAG değerini döndürün.

GCM şifrelemesi için etiket şifreli metne Finish ile eklenir. Şifre çözme sırasında, son güncelleme çağrısına sağlanan verilerin son Tag::MAC_LENGTH baytı etikettir. Belirli bir update çağrısı, bunun son çağrı olup olmadığını bilemeyeceğinden, etiket uzunluğu dışındaki her şeyi işler ve bitiş sırasında olası etiket verilerini arabelleğe alır.

sona ermek

Versiyon : 1, 2, 3

Güncelleme (ler) tarafından sağlanan henüz işlenmemiş tüm verileri işleyerek, begin ile başlatılan devam eden bir işlemi bitirir.

Bu yöntem bir işlemde çağrılan son yöntemdir, bu nedenle işlenmiş tüm veriler döndürülür.

Başarılı bir şekilde tamamlasın veya bir hata döndürür, bu yöntem işlemi sonlandırır ve bu nedenle sağlanan işlem kolunu geçersiz kılar. Bu yöntemle veya güncelleme veya iptal edilen tutamaçta gelecekteki herhangi bir kullanımı, ErrorCode::INVALID_OPERATION_HANDLE döndürür.

İmza işlemleri, imzayı çıktı olarak döndürür. Doğrulama işlemleri imzayı signature parametresindeki kabul eder ve çıktı döndürür.

Yetkilendirme

Kilit yetkilendirme uygulaması öncelikle Begin'de gerçekleştirilir. Tek istisna, anahtarın sahip olduğu durumdur:

Bu durumda, anahtar işlem başına bir yetkilendirme gerektirir ve güncelleme yöntemi inParams argümanında bir etiket :: auth_token alır. HMAC, jetonun geçerli olduğunu ve eşleşen bir güvenli kullanıcı kimliği içerdiğini doğrular, anahtarın etiketiyle eşleşir :: user_auth_type ve meydan okuma alanındaki geçerli işlemin işlem kolunu içerir. Bu koşullar yerine getirilmezse, döndürme ErrorCode::KEY_USER_NOT_AUTHENTICATED .

Arayan, güncelleme ve bitirmek için her çağrıya kimlik doğrulama jetonu sağlar. Uygulamanın jetonu yalnızca tercih ederse bir kez doğrulaması gerekir.

RSA anahtarları

Dolma moduna bağlı olarak bazı ek gereksinimler:

  • PaddingMode::NONE . BAŞLANGIÇ İMZA VE ŞEKERLEŞME İŞLEMLERİ için, sağlanan veriler anahtardan daha kısaysa, veriler imzalamadan/şifrelemeden önce solda sıfır paded olacaktır. Veriler anahtarla aynı uzunluktaysa, ancak sayısal olarak daha büyükse, döndürme ErrorCode::INVALID_ARGUMENT . Doğrulama ve şifre çözme işlemleri için veriler tam olarak anahtar kadar uzun olmalıdır. Aksi takdirde, dönme ErrorCode::INVALID_INPUT_LENGTH.
  • PaddingMode::RSA_PSS . PSS-padded imza işlemleri için, PSS tuzu mesaj özetinin boyutudur ve rastgele oluşturulur. Başlangıçta inputParams Digest ile belirtilen özet, PSS Digest algoritması ve MGF1 Digest algoritması olarak kullanılır.
  • PaddingMode::RSA_OAEP . Başlangıçta inputParams Digest ile belirtilen özet, OAEP Digest algoritması olarak kullanılır ve SHA1, MGF1 özet algoritması olarak kullanılır.

ECDSA anahtarları

Hayırsız imza veya doğrulama için sağlanan veriler çok uzunsa, kesin.

AES Keys

Blok moduna bağlı olarak bazı ek koşullar:

  • BlockMode::ECB veya BlockMode::CBC . Dolgu PaddingMode::NONE ve veri uzunluğu AES blok boyutunun bir katı değilse, döndürme ErrorCode::INVALID_INPUT_LENGTH . Dolgu PaddingMode::PKCS7 ise, PKCS#7 spesifikasyonuna göre verileri toplayın. PKCS#7, veriler blok uzunluğunun bir katı ise ek bir dolgu bloğu eklemenizi önerir.
  • BlockMode::GCM . Şifreleme sırasında, tüm düz metinleri işledikten sonra etiketi ( etiket :: mac_length baytlar) hesaplayın ve döndürülen şifreleme metnine ekleyin. Şifre çözme sırasında, etiket olarak son etiket :: mac_length baytları işleyin. Etiket doğrulaması başarısız olursa, döndürme ErrorCode::VERIFICATION_FAILED döndür.

iptal etmek

Sürüm : 1, 2, 3

Devam eden işlemi iptal eder. İptal çağrısından sonra, sağlanan işlem tutamağını güncelleme , bitiş veya iptalle daha sonraki herhangi bir kullanımı için ErrorCode::INVALID_OPERATION_HANDLE döndür.

get_supported_algorithmes

Versiyon 1

Kemaster Donanım Uygulaması tarafından desteklenen algoritmalar listesini döndürür. Bir yazılım uygulaması boş bir liste döndürür; Hibrit bir uygulama, yalnızca donanım tarafından desteklenen algoritmaları içeren bir liste döndürür.

Kemaster 1 uygulamaları RSA, EC, AES ve HMAC'ı destekler.

get_supported_block_modes

Versiyon 1

Belirli bir algoritma ve amaç için Keymaster Donanım Uygulaması tarafından desteklenen AES blok modlarının listesini döndürür.

Blok şifreleri olmayan RSA, EC ve HMAC için yöntem, tüm geçerli amaçlar için boş bir liste döndürür. Geçersiz amaçlar, yöntemin ErrorCode::INVALID_PURPOSE döndürmesine neden olmalıdır.

Kemaster 1 uygulamaları AES şifreleme ve şifre çözme için ECB, CBC, TO ve GCM'yi destekler.

get_supported_padding_modes

Versiyon 1

Belirli bir algoritma ve amaç için Keymaster Donanım Uygulaması tarafından desteklenen dolgu modlarının listesini döndürür.

HMAC ve EC'nin dolgu kavramı yoktur, bu nedenle yöntem tüm geçerli amaçlar için boş bir liste döndürür. Geçersiz amaçlar, yöntemin ErrorCode::INVALID_PURPOSE döndürmesine neden olmalıdır.

RSA için Kemaster 1 uygulamaları destek:

  • Değişmemiş şifreleme, şifre çözme, imzalama ve doğrulama. Eklenmemiş şifreleme ve imzalama için, mesaj kamu modülünden daha kısaysa, uygulamalar sıfırlarla bırakmalıdır. Savunmamış şifre çözme ve doğrulama için, giriş uzunluğu genel modül boyutuyla eşleşmelidir.
  • PKCS#1 V1.5 Şifreleme ve İmzalama Modları
  • Minimum tuz uzunluğuna sahip PSS
  • Oaep

ECB ve CBC modlarındaki AE'ler için Kemaster 1 uygulamaları dolgu ve PKCS#7-padding'i desteklemektedir. TO ve GCM modları sadece dolgu yoktur.

get_supported_digests

Versiyon 1

Belirli bir algoritma ve amaç için Keymaster Donanım Uygulaması tarafından desteklenen özet modlarının listesini döndürür.

Hiçbir AES modu destek veya sindirim gerektirmez, bu nedenle yöntem geçerli amaçlar için boş bir liste döndürür.

Kemaster 1 uygulamaları, tanımlanmış sindirimlerin bir alt kümesini uygulayabilir. Uygulamalar SHA-256 sağlar ve MD5, SHA1, SHA-224, SHA-256, SHA384 ve SHA512 (tanımlanmış sindirim seti) sağlayabilir.

get_supported_import_formats

Versiyon 1

Belirli bir algoritmanın Keymaster Donanım Uygulaması tarafından desteklenen içe aktarma formatlarının listesini döndürür.

Kemaster 1 uygulamaları, RSA ve EC anahtar çiftlerini içe aktarmak için PKCS#8 formatını (şifre koruması olmadan) destekler ve AES ve HMAC anahtar malzemesinin ham ithalatını destekler.

get_supported_export_formats

Versiyon 1

Belirli bir algoritmanın Kemaster Donanım Uygulaması tarafından desteklenen dışa aktarma formatlarının listesini döndürür.

Kemaster1 uygulamaları, RSA ve EC genel anahtarlarını dışa aktarmak için X.509 formatını destekler. Özel anahtarların veya asimetrik anahtarların ihracatı desteklenmez.

Tarihsel işlevler

Kemaster 0

Aşağıdaki işlevler orijinal Keymaster 0 tanımına aittir. Kemaster 1 Struct Kemaster1_Device_T'de mevcuttu. Bununla birlikte, Keymaster 1.0'da uygulanmadı ve işlev işaretçileri NULL olarak ayarlandı.

  • generate_keypair
  • import_keypair
  • get_keypair_public
  • delete_keypair
  • delete_all
  • sign_data
  • Verify_data

Kemaster 1

Aşağıdaki işlevler Keymaster 1 tanımına aittir, ancak yukarıda listelenen Keymaster 0 fonksiyonları ile birlikte Kemaster 2'de kaldırılmıştır.

  • get_supported_algorithms
  • get_supported_block_modes
  • get_supported_padding_modes
  • get_supported_digests
  • get_supported_import_formats
  • get_supported_export_formats

Kemaster 2

Aşağıdaki işlevler Keymaster 2 tanımına aittir, ancak yukarıda listelenen Keymaster 1 fonksiyonları ile birlikte Keymaster 3'te kaldırılmıştır.

  • configure