Keymaster işlevleri

Bu sayfada, Keymaster Donanım Soyutlama Katmanlarını (HAL'ler) uygulayan kişilere yardımcı olacak ayrıntılar sağlanmaktadır. API'deki her işlevi ve bu işlevin hangi Keymaster sürümünde kullanılabildiğini kapsar ve varsayılan uygulamayı açıklar. Etiketler için Keymaster Etiketleri 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

Sürüm: 1, 2

Belirli bir çağrı için kullanılmayan giriş işaretçisi parametreleri NULL olabilir. Arayanın yer tutucu sağlaması gerekmez. Örneğin, bazı anahtar türleri ve modları, inParams bağımsız değişkeninden başlangıç için herhangi bir değer kullanmayabilir. Bu nedenle, inParams bağımsız değişkenini NULL olarak ayarlayabilir veya boş bir parametre grubu sağlayabilir. Arayanlar ayrıca kullanılmayan parametreler sağlayabilir. Keymaster yöntemleri de hata vermemelidir.

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

Keymaster 3'ten itibaren işaretçi parametresi yoktur. Tüm parametreler, değer veya const referansları tarafından iletilir.

Çıkış işaretçisi parametreleri

Sürüm: 1, 2

Giriş işaretçisi parametrelerine benzer şekilde, kullanılmayan çıkış işaretçisi parametreleri NULL olabilir. Bir yöntemin, NULL olarak bulunan bir çıkış parametresinde veri döndürmesi gerekiyorsa ErrorCode::OUTPUT_PARAMETER_NULL döndürmelidir.

Keymaster 3'ten itibaren herhangi bir işaretçi parametresi yoktur. Tüm parametreler değer veya const referansları ile iletilir.

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

Sürüm: 1, 2, 3

Arayanların anlamsız veya aptalca ama teknik olarak yanlış olmayan taleplerde bulunabileceği pek çok yol vardır. Anahtar yöneticisi uygulamalarının bu gibi durumlarda başarısız olması veya teşhis vermesi gerekmez. Çok küçük anahtarların kullanılması, alakasız giriş parametrelerinin belirtilmesi, IV'lerin veya tek seferlik anahtarların yeniden kullanılması, anahtarların amaçsız (ve dolayısıyla işe yaramaz) şekilde oluşturulması ve benzeri durumlar, uygulamalar tarafından teşhis edilmemelidir. Gerekli parametrelerin atlanması, gerekli geçersiz parametrelerin belirtilmesi ve benzer hatalar teşhis edilmelidir.

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

Fonksiyonlar

getHardwareFeatures

Sürüm: 3

Yeni getHardwareFeatures yöntemi, istemcilere temel güvenli donanımın bazı önemli özelliklerini gösterir. Yöntem bağımsız değişken almaz ve tümü boole olan dört değer döndürür:

  • Anahtarlar güvenli donanımda (TEE vb.) saklanıyorsa ve hiçbir zaman donanımdan dışarı çıkmıyorsa isSecure, true olur.
  • Donanım, NIST eğrileriyle (P-224, P-256, P-384 ve P-521) Eliptik Eğri kriptografisini destekliyorsa supportsEllipticCurve değeri true olur.
  • Donanım, AES ve HMAC dahil simetrik kriptografiyi destekliyorsa supportsSymmetricCryptography değeri true olur.
  • Donanım, güvenli bir ortama yerleştirilen bir anahtarla imzalanmış Keymaster ortak anahtar onayı sertifikalarının oluşturulmasını destekliyorsa supportsAttestation değeri true olur.

Bu yöntemin döndürebileceği hata kodları yalnızca ErrorCode:OK, ErrorCode::KEYMASTER_NOT_CONFIGURED veya güvenli donanımla iletişim kurulamadığı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

Sürüm: 2

Bu işlev Keymaster 2'de kullanıma sunulmuştur ve Keymaster 3'te desteği sonlandırılmıştır. Bunun nedeni, bu bilgilerin sistem özellikleri dosyalarında bulunması ve üretici uygulamalarının, başlangıç sırasında bu dosyaları okumasıdır.

Keymaster'ı yapılandırır. Bu yöntem, cihaz açıldıktan sonra ve kullanılmadan önce bir kez çağrılır. Ana anahtar yöneticisine KM_TAG_OS_VERSION ve KM_TAG_OS_PATCHLEVEL değerlerini sağlamak için kullanılır. Bu yöntem çağrılana kadar diğer tüm yöntemler KM_ERROR_KEYMASTER_NOT_CONFIGURED döndürür. Bu yöntem tarafından sağlanan değerler keymaster tarafından başlatma başına yalnızca bir kez kabul edilir. Sonraki çağrılar KM_ERROR_OK döndürür ancak hiçbir işlem yapmaz.

Anahtar yöneticisi uygulaması güvenli donanımdaysa ve sağlanan OS sürümü ile yama düzeyi değerleri, bootloader tarafından güvenli donanıma sağlanan değerlerle eşleşmiyorsa (veya bootloader değer sağlamadıysa) bu yöntem KM_ERROR_INVALID_ARGUMENT değerini döndürür ve diğer tüm 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);

AdRngEntropi

Sürüm: 1, 2, 3

Bu işlev, Keymaster 1'de add_rng_entropy olarak kullanıma sunuldu ve Keymaster 3'te yeniden adlandırıldı.

Anahtar yöneticisi 1 uygulaması tarafından rastgele sayılar, anahtarlar, IV'ler vb. oluşturmak için kullanılan havuza arayan tarafından sağlanan entropi ekler.

Anahtar yöneticisi uygulamalarının, sağlanan entropiyi havuzlarına güvenli bir şekilde karıştırması gerekir. Bu havuz, donanım rastgele sayı üreticiden dahili olarak oluşturulan entropi de içermelidir. Karıştırma işlemi, addRngEntropy tarafından sağlanan bitler veya donanım tarafından oluşturulan bitler üzerinde tam kontrole sahip (ikisi birden değil) olan bir saldırganın, entropi havuzundan oluşturulan bitleri tahmin etmede göz ardı edilemez bir avantaja sahip olmaması için gerçekleştirilmelidir.

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

generateKey

Sürüm: 1, 2, 3

Bu işlev, Keymaster 1'de generate_key olarak kullanıma sunulmuş ve Keymaster 3'te yeniden adlandırılmıştır.

Kalıcı olarak anahtara bağlı olan ilişkili yetkilendirmeleri belirten yeni bir şifreleme anahtarı oluşturur. Keymaster uygulamaları, bir anahtarın oluşturma sırasında belirtilen yetkilendirmelerle tutarsız bir şekilde kullanılmasını imkansız kılar. Güvenli donanımın uygulayamadığı yetkilendirmelerle ilgili olarak güvenli donanımın yükümlülüğü, anahtarla ilişkili uygulanamaz hale gelen yetkilendirmelerin değiştirilemeyeceğini, böylece her getKeyCharacteristics çağrısının orijinal değeri döndürmesini sağlamakla sınırlıdır. Ayrıca, generateKey tarafından döndürülen özellikler, yetkilendirmeleri donanımla ve yazılımla desteklenen listeler arasında doğru şekilde paylaştırır. Daha fazla ayrıntı için getKeyCharacteristics bölümüne bakın.

generateKey işlevine sağlanan parametreler, oluşturulan anahtar türüne bağlıdır. Bu bölümde, her anahtar türü için gerekli ve isteğe bağlı etiketler özetlenmiştir. Türü belirtmek için Tag::ALGORITHM her zaman gereklidir.

RSA anahtarları

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ğerler, 8'in katları olan tüm anahtar boyutlarıdır.
  • Tag::RSA_PUBLIC_EXPONENT, RSA ortak ü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ğerler, 2^64'e kadar tüm asal değerlerdir.

Aşağıdaki parametreler RSA anahtarı oluşturmak için gerekli değildir ancak bunlar olmadan RSA anahtarı oluşturmak kullanılamayan bir anahtar oluşturur. 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 özetler içeren anahtar oluşturma isteklerini kabul etmesi gerekir. Desteklenmeyen özetler, döndürülen anahtar özelliklerindeki "yazılımla zorunlu kılınan" listesine yerleştirilmelidir. Bunun nedeni, anahtarın bu diğer özetlerle kullanılabilmesi ancak özetleme işleminin yazılımda gerçekleştirilmesidir. Ardından, 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. Desteklenmeyen özet algoritmaları belirtilirse tüm özet algoritmalarını desteklemeyen uygulamaların, yazılımın uyguladığı temel özellikler listesine PaddingMode::RSA_PSS ve PaddingMode::RSA_OAEP yerleştirmesi gerekir.

ECDSA anahtarları

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, kullanışlı bir ECDSA anahtarı için de gereklidir ancak anahtar oluşturmak için gerekli değildir.

AES anahtarları

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

Aşağıdaki parametreler özellikle AES anahtarları için geçerlidir, ancak 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 engelleme modu belirtilmişse 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ı ve 96 ile 128 arasındadır.

HMAC anahtarları

HMAC anahtarı oluşturmak 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 ile 512 arasında 8'in tüm katları desteklenir. Daha büyük değerler desteklenebilir.
  • Tag::MIN_MAC_LENGTH, bu anahtarla oluşturulabilecek veya doğrulanabilecek MAC'lerin minimum uzunluğunu belirtir. Değer, 8'in katı ve en az 64 olmalıdır.
  • Tag::DIGEST, anahtar için özet algoritmasını belirtir. Tam olarak bir özet belirtilir. Aksi takdirde ErrorCode::UNSUPPORTED_DIGEST döndürülür. Özet, güven kiti tarafından desteklenmiyorsa ErrorCode::UNSUPPORTED_DIGEST döndürün.

Temel özellikler

Özellikler bağımsız değişkeni NULL değilse generateKey yeni oluşturulan anahtarın özelliklerini, donanımla ve yazılımla desteklenen listelere uygun şekilde bölünmüş olarak döndürür. Hangi özelliklerin hangi listede yer aldığına dair açıklama için getKeyCharacteristics bölümüne bakın. Döndürülen özellikler, Tag::APPLICATION_ID ve Tag::APPLICATION_DATA hariç, anahtar oluşturma için belirtilen tüm parametreleri içerir. Bu etiketler anahtar parametrelerine dahil edildiyse döndürülen anahtar blob'u incelenerek değerlerinin bulunamaması için döndürülen özelliklerden kaldırılır. Ancak bu değerler, anahtar blob'una kriptografik olarak bağlıdır. Bu sayede, 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 belirtilemez ve hiçbir zaman döndürülmez.

Güvenilirlik, sağlanan etiketlere ek olarak KeyOrigin::GENERATED değerine sahip Tag::DATE değerini de ekler. Anahtar, geri almaya dirençliyse

Etiket::ROLLBACK_RESISTANT.

Geri alma direnci

Geri çekmeye karşı direnç, deleteKey veya deleteAllKeys ile silinen bir anahtarın güvenli donanım tarafından bir daha kullanılamayacak şekilde garanti edilmesi anlamına gelir. Geri alma işlemine karşı dirençli olmayan uygulamalar, genellikle oluşturulan veya içe aktarılan anahtar materyalini arayana anahtar blob'u (şifrelenmiş ve kimliği doğrulanmış bir form) olarak döndürür. Anahtar mağazası anahtar blob'unu sildiğinde anahtar kaybolur ancak daha önce anahtar materyalini almayı başarmış bir saldırgan, anahtarı cihaza geri yükleyebilir.

Güvenli donanım, silinen anahtarların daha sonra geri yüklenemeyeceğini garanti ediyorsa geri almaya dirençlidir. Bu genellikle ek anahtar meta verilerini saldırgan tarafından değiştirilemeyecek olan güvenilir bir konumda depolanarak yapılır. Mobil cihazlarda bunun için kullanılan mekanizma genellikle Tekrar Oynatma 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 depolama alanının boyutu sınırlı olabileceğinden, yeni anahtara geri alma direnci sağlanamasa bile bu yöntemin başarılı olması gerekir. Bu durumda, Tag::ROLLBACK_RESISTANT temel özelliklere eklenmemelidir.

getKeyCharacteristics

Sürüm: 1, 2, 3

Bu işlev, Keymaster 1'de get_key_characteristics olarak kullanıma sunulmuş ve Keymaster 3'te yeniden adlandırılmıştır.

Sağlanan anahtarla ilişkili parametreleri ve yetkilendirmeleri, donanımla zorunlu kılınan ve yazılımla zorunlu kılınan olmak üzere iki gruba ayrılmış şekilde döndürür. Buradaki açıklama, generateKey ve importKey tarafından döndürülen anahtar özellikleri listeleri için de geçerlidir.

Anahtar oluşturma veya içe aktarma sırasında Tag::APPLICATION_ID sağlanmışsa bu yönteme clientId bağımsız değişkeninde 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ğlanırsa appData bağımsız değişkeninde bu yönteme aynı değer sağlanır.

Bu yöntem tarafından döndürülen özellikler, belirtilen anahtarın türünü ve kullanımını tamamen açıklar.

Belirli bir etiketin donanımla zorunlu kılınanlar listesine mi yoksa yazılımla zorunlu kılınanlar listesine mi ait olduğuna karar vermek için genel kural şudur: Etiketin anlamı güvenli donanım tarafından tamamen güvence altına alınmışsa donanımla zorunlu kılınmıştır. Aksi takdirde, yazılım tarafından zorunlu kılınmış demektir. Aşağıda, doğru şekilde atanması net olmayan belirli etiketlerin listesi verilmiştir:

  • Etiket:ALGORITHM, Etiket::KEY_SIZE ve Etiket::RSA_PUBLIC_EXPONENT anahtarın doğal özellikleridir. Donanımla korunan anahtarlar için bu etiketler donanımla zorunlu listede yer alı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 desteklenenler listesine eklenir.
  • Belirli bir dolgu modunun yazılım tarafından uygulanması gerekme olasılığı olmadığı sürece Tag::PADDING değerleri genellikle donanım tarafından desteklenenler listesine eklenir. Bu durumda, yazılım tarafından zorunlu kılınan listeye eklenir. Bu tür bir olasılık, güvenli donanım tarafından desteklenmeyen özet algoritmalarıyla PSS veya OAEP dolgularına izin veren RSA anahtarları için ortaya çıkar.
  • Etiket::USER_SECURE_ID ve Etiket::USER_AUTH_TYPE, yalnızca kullanıcı kimlik doğrulaması donanım tarafından zorunlu kılındığında donanımla uygulanır. Bunun için hem Keymaster güvenilmeyen uygulamasının hem de ilgili kimlik doğrulama güvenilmeyen uygulamasının güvenli olması ve kimlik doğrulama jetonlarını imzalamak ve doğrulamak için kullanılan gizli bir HMAC anahtarı paylaşması gerekir. 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 yalnızca güvenli olmayan işletim sistemi tarafından sağlanan zaman bilgilerine erişebilir. Bu da etiketlerin yazılım tarafından zorunlu kılındığı anlamına gelir.
  • Tag::ORIGIN, donanıma bağlı anahtarlar için her zaman donanım listesinde bulunur. Bu listede yer alması, üst katmanların bir anahtarın donanım destekli olduğunu belirleme şeklidir.

içe aktarmaAnahtarı

Sürüm: 1, 2, 3

Bu işlev, Keymaster 1'de import_key olarak kullanıma sunulmuş ve Keymaster 3'te yeniden adlandırılmıştır.

Anahtar materyalini Keymaster donanımına aktarır. Anahtar tanımlama parametreleri ve çıkış özellikleri, aşağıdaki istisnalar dışında generateKey ile aynı şekilde ele alınır:

  • Etiket::KEY_SIZE ve Etiket::RSA_PUBLIC_EXPONENT (yalnızca RSA anahtarları için) giriş parametrelerinde gerekli değildir. Bu değer sağlanmazsa güven öğesi, sağlanan temel materyaldeki değerleri çıkarır ve temel özelliklere uygun etiketler ve değerler ekler. Parametreler sağlanırsa güven öğesi bunları anahtar materyaline göre doğrular. Eşleşme olmaması durumunda yöntem ErrorCode::IMPORT_PARAMETER_MISMATCH döndürür.
  • Döndürülen Tag::ORIGIN, KeyOrigin::IMPORTED ile aynı değere sahiptir.

exportKey

Sürüm: 1, 2, 3

Bu işlev, Keymaster 1'de export_key olarak kullanıma sunulmuş ve Keymaster 3'te yeniden adlandırılmıştır.

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

Tag::APPLICATION_ID, anahtar oluşturma veya içe aktarma sırasında sağlandıysa bu yönteme clientId bağımsız değişkeninde 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.

deleteKey

Sürüm: 1, 2, 3

Bu işlev, Keymaster 1'de delete_key olarak kullanıma sunulmuş ve Keymaster 3'te yeniden adlandırılmıştır.

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

deleteAllKeys

Sürüm: 1, 2, 3

Bu işlev, Keymaster 1'de delete_all_keys olarak kullanıma sunulmuş ve Keymaster 3'te yeniden adlandırılmıştır.

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.

destroyAttestationIds

Sürüm: 3

destroyAttestationIds() yöntemi, yeni (isteğe bağlı ancak önemle tavsiye edilen) kimlik doğrulama özelliğini kalıcı olarak devre dışı bırakmak için kullanılır. TEE'nin bu yöntem çağrıldıktan sonra kimlik doğrulamasının kalıcı olarak devre dışı bırakılmasını sağlamanın bir yolu yoksa kimlik doğrulaması hiç uygulanmamalıdır. Bu durumda bu yöntem hiçbir şey yapmaz ve ErrorCode::UNIMPLEMENTED döndürür. Kimlik onayı destekleniyorsa bu yöntemin uygulanması ve gelecekteki tüm kimlik onayı denemelerini kalıcı olarak devre dışı bırakması gerekir. Yöntem, istediğiniz sayıda çağrılabilir. Kimlik onayı 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 kurulamadığını belirten hata kodlarından biridir.

başlangıç

Sürüm: 1, 2, 3

Belirtilen anahtarı kullanarak, belirtilen amaç için, belirtilen parametrelerle (uygun olduğunda) bir şifreleme işlemi başlatır ve işlemi tamamlamak üzere update ve finish ile kullanılan bir işlem işleyici döndürür. İşlem herkese açık kimliği, kimliği doğrulanmış işlemlerde "challenge" jetonu olarak da kullanılır ve bu tür işlemlerde kimlik doğrulama jetonunun challenge alanına eklenir.

Anahtar yöneticisi uygulaması en az 16 eşzamanlı işlemi destekler. Anahtar deposu en fazla 15 anahtar kullanır ve şifre şifreleme için vold'un kullanacağı bir anahtar bırakır. KeyStore devam eden 15 işlem olduğunda (begin çağrılmış ancak finish veya abort çağrılmamışsa) ve 16. bir başlatma isteği aldığında, yeni istenen işlemi başlatmak için begin çağrısından önce etkin işlem sayısını 14'e düşürmek amacıyla en son kullanılan işlemde abort yöntemini çağırır.

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ğerlerle birlikte bu etiketleri içerir.

Yetkilendirme yaptırımı

Bu yöntem sırasında, uygulama bunları "donanımla zorunlu kılınan" özelliklere yerleştirdiyse ve işlem ortak anahtar işlemi değilse aşağıdaki anahtar yetkilendirmeleri güven aygıtı tarafından zorunlu kılınır. RSA veya EC anahtarlarıyla yapılan ortak anahtar işlemlerinin (yani KeyPurpose::ENCRYPT ve KeyPurpose::VERIFY) yetkilendirme şartları karşılanmamış olsa bile başarılı olmasına izin verilir.

  • Tag::PURPOSE: İstenen işlem ortak anahtar işlemi olmadığı sürece, begin() çağrısında belirtilen amacın, anahtar yetkilendirmelerindeki amaçlardan biriyle eşleşmesi gerekir. Belirtilen amaç eşleşmiyorsa ve işlem ortak anahtar işlemi değilse begin, ErrorCode::UNSUPPORTED_PURPOSE değerini döndürür. Ortak anahtar işlemleri, asimetrik şifreleme veya doğrulama işlemleridir.
  • Tag::ACTIVE_DATETIME yalnızca güvenilir bir UTC saat kaynağı varsa zorunlu kılınabilir. 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 saat kaynağı varsa zorunlu kılınabilir. Geçerli tarih ve saat etiket değerinden sonraysa ve amaç KeyPurpose::ENCRYPT veya KeyPurpose::SIGN ise yöntem ErrorCode::KEY_EXPIRED değerini döndürür.
  • Etiket::USAGE_EXPIRE_DATETIME, yalnızca güvenilir bir UTC saat kaynağı varsa zorunlu kılınabilir. Geçerli tarih ve saat, etiket değerinden daha yeniyse ve amaç KeyPurpose::DECRYPT veya KeyPurpose::VERIFY ise yöntem ErrorCode::KEY_EXPIRED değerini döndürür.
  • Tag::MIN_SECONDS_BETWEEN_OPS, anahtarın son kullanımını belirten güvenilir bir göreli zamanlayıcıyla karşılaştırılır. Son kullanım süresi artı etiket değeri geçerli zamandan azsa yöntem ErrorCode::KEY_RATE_LIMIT_EXCEEDED değerini döndürür. Önemli uygulama ayrıntıları için etiket açıklamasına bakın.
  • Tag::MAX_USES_PER_BOOT, anahtarın önyükleme zamanından bu yana kullanımları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 değerini döndürür.
  • Tag::USER_SECURE_ID, bu yöntemle yalnızca anahtarda Tag::AUTH_TIMEOUT da varsa zorunlu kılınır. Anahtar her ikisine de sahipse bu yöntem, inParams içinde geçerli bir Tag::AUTH_TOKEN almalıdır. Kimlik doğrulama jetonunun geçerli olması için aşağıdakilerin hepsinin doğru olması gerekir:
    • HMAC alanı doğru şekilde doğrulanıyor.
    • Anahtardaki Tag::USER_SECURE_ID değerlerinden en az biri, jetondaki güvenli kimlik değerlerinden en az biriyle eşleşmelidir.
    • Anahtarda, jetondaki kimlik doğrulama türüyle eşleşen bir Tag::USER_AUTH_TYPE etiketi vardır.

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

  • Tag::CALLER_NONCE, arayanın tek seferlik bir sayı veya başlatma vektörü (IV) belirtmesine olanak tanır. Anahtar bu etikete sahip değilse ancak arayan 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, bootloader çalıştırmayı tamamladıktan sonra yalnızca bootloader anahtarıyla çağrılırsa ErrorCode::INVALID_KEY_BLOB döndürür.

RSA anahtarları

Tüm RSA anahtar işlemleri inParams içinde tam olarak bir dolgu modu belirtir. Belirtilmemişse veya birden fazla kez belirtilmişse yöntem ErrorCode::UNSUPPORTED_PADDING_MODE döndürür.

OAEP dolgu modu ile RSA şifreleme ve şifre çözme işlemlerinin yanı sıra RSA imzalama ve doğrulama işlemlerinin de özet vermesi gerekir. Bu durumlarda, arayan inParams içinde tam olarak bir özet belirtir. Belirtilmezse veya birden fazla kez belirtilirse yöntem ErrorCode::UNSUPPORTED_DIGEST değerini döndürür.

Gizli anahtar işlemleri (KeyPurpose::DECYPT ve KeyPurpose::SIGN) için özet ve dolgu yetkilendirmesi gerekir. Bu, anahtar yetkilendirmelerinin belirtilen değerleri içermesi gerektiği anlamına gelir. Aksi takdirde yöntem, uygun şekilde ErrorCode::INCOMPATIBLE_DIGEST veya ErrorCode::INCOMPATIBLE_PADDING döndürür. Yetkisiz özet veya dolgu ile ortak anahtar işlemlerine (KeyPurpose::ENCRYPT ve KeyPurpose::VERIFY) izin verilir.

PaddingMode::NONE hariç tüm RSA dolgu modları yalnızca belirli amaçlar için geçerlidir. Daha açık belirtmek gerekirse PaddingMode::RSA_PKCS1_1_5_SIGN ve PaddingMode::RSA_PSS yalnızca imzalama ve doğrulamayı desteklerken PaddingMode::RSA_PKCS1_1_1_5_ENCRYPT ve PaddingMode::RSA_OAEP yalnızca şifreleme ve şifre çözmeyi destekler. Belirtilen mod belirtilen amacı desteklemiyorsa yöntem ErrorCode::UNSUPPORTED_PADDING_MODE değerini döndürür.

Dolgu modları ile özetler arasında bazı önemli etkileşimler vardır:

  • PaddingMode::NONE, "ham" RSA işleminin gerçekleştirildiğini belirtir. İmzalıyor veya doğrulanıyorsa özet için Digest::NONE belirtilir. Doldurulmamış şifreleme veya şifre çözme için özet gerekmez.
  • PaddingMode::RSA_PKCS1_1_5_SIGN dolgu için özet gerekir. Özet Digest::NONE olabilir. Bu durumda Keymaster uygulaması, DigestInfo yapısını ekleyemediğinden uygun bir PKCS#1 v1.5 imza yapısı oluşturamaz. Bunun yerine uygulama, M'nin sağlanan mesaj ve PS'nin dolgu dizesi olduğu 0x00 || 0x01 || PS || 0x00 || M değerini oluşturur. 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 değerini döndürür.
  • PaddingMode::RSA_PKCS1_1_1_5_ENCRYPT dolgusu özet gerektirmez.
  • PaddingMode::RSA_PSS dolgu için bir özet gerekir. Bu özet Digest::NONE olamaz. Digest::NONE belirtilirse yöntem ErrorCode::INCOMPATIBLE_DIGEST değerini döndürür. Ayrıca, RSA anahtarının boyutu, özet çıktısının boyutundan en az 2 + D bayt daha büyük olmalıdır. Burada D, özetin bayt cinsinden boyutudur. Aksi takdirde yöntem ErrorCode::INCOMPATIBLE_DIGEST değerini döndürür. Tuz boyutu D'dir.
  • PaddingMode::RSA_OAEP dolgu için bir özet gerekir. Bu özet Digest::NONE olamaz. Digest::NONE belirtilirse yöntem ErrorCode::INCOMPATIBLE_DIGEST değerini döndürür.

EC anahtarları

EC anahtar işlemleri, inParams içinde tam olarak bir dolgu modu 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) için özet ve dolgu yetkilendirmesi gerekir. Bu, anahtar yetkilendirmelerinin belirtilen değerleri içermesi gerektiği anlamına gelir. Aksi takdirde ErrorCode::INCOMPATIBLE_DIGEST döndürülür. Ortak anahtar işlemlerine (KeyPurpose::VERIFY) yetkisiz özet veya dolgu ile izin verilir.

AES anahtarları

AES anahtar işlemleri, inParams içinde tam olarak bir blok modu ve bir dolgu modu belirtir. Her iki değer de belirtilmezse veya birden fazla kez belirtilirse ErrorCode::UNSUPPORTED_BLOCK_MODE veya ErrorCode::UNSUPPORTED_PADDING_MODE döndürülür. Belirtilen modların anahtar tarafından yetkilendirilmesi gerekir. Aksi takdirde yöntem ErrorCode::INCOMPATIBLE_BLOCK_MODE veya ErrorCode::INCOMPATIBLE_PADDING_MODE döndürür.

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

Blok modu BlockMode::GCM veya BlockMode::CTR ise belirtilen dolgu modu PaddingMode::NONE olmalıdır. BlockMode::ECB veya BlockMode::CBC için mod PaddingMode::NONE ya da PaddingMode::PKCS7 olabilir. Doldurma modu bu koşulları karşılamıyorsa ErrorCode::INCOMPATIBLE_PADDING_MODE döndürülür.

Engelleme modu BlockMode::CBC, BlockMode::CTR veya BlockMode::GCM ise bir başlatma vektörü veya tek seferlik sayı gerekir. Çoğu durumda, arayanlar IV veya tek seferlik sayı sağlamamalıdır. Bu durumda, Keymaster uygulaması rastgele bir IV veya tek seferlik rastgele sayı oluşturur ve outParams içinde Tag::NONCE ile döndürür. CBC ve CTR IV'leri 16 bayttır. GCM tek seferlik anahtarları 12 bayttır. Anahtar yetkilendirmeleri Tag::CALLER_NONCE içeriyorsa inParams içinde Tag::NONCE ile bir IV veya nonce sağlayabilir. Tag::CALLER_NONCE yetkilendirilmemişken tek seferlik bir sayı sağlanırsa ErrorCode::CALLER_NONCE_PROHIBITED döndürülür. Tag::CALLER_NONCE yetkilendirildiğinde tek seferlik bir değer sağlanmazsa rastgele bir IV/tek seferlik değer oluşturun.

HMAC anahtarları

HMAC anahtar işlemleri, inParams içinde Tag::MAC_LENGTH değerini belirtir. Belirtilen değer, anahtar yetkilendirmelerinde özet uzunluğundan fazla veya 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 kısa değerler için ErrorCode::INVALID_MAC_LENGTH değerini döndürün.

güncelleme

Sürüm: 1, 2, 3

begin ile başlatılan devam eden bir işlemde işlenecek verileri sağlar. İşlem, operationHandle parametresiyle belirtilir.

Bu yöntemin uygulamaları, arabellek işleme için daha fazla esneklik sağlamak amacıyla 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 giriş miktarı, inputConsumed parametresinde döndürülür. İşlem daha fazlasını kabul edemiyorsa uygulamalar her zaman en az bir bayt tüketir. Sıfırdan fazla bayt sağlanırsa ve sıfır bayt tüketilirse arayanlar bunu bir hata olarak değerlendirir ve işlemi iptal eder.

Uygulamalar ayrıca güncelleme sonucunda ne kadar veri döndürüleceğini de seçebilir. İmzalama ve doğrulama, bitir işlemine kadar veri döndürmediğinden bu yalnızca şifreleme ve şifre çözme işlemleri için geçerlidir. Verileri arabelleğe almak yerine en kısa sürede döndürün.

Hata işleme

Bu yöntem ErrorCode::OK dışında bir hata kodu döndürürse işlem iptal edilir ve işlem işleyici geçersiz kılınır. Herkese açık kullanıcı adının bu yöntemle finish veya iptal edilmesi durumunda ErrorCode::INVALID_OPERATION_HANDLE sonucunu döndürür.

Yetkilendirme yaptırımı

Anahtar yetkilendirmesinin zorunlu kılınması temel olarak başlangıçta gerçekleştirilir. Bunun tek istisnası, anahtarın aşağıdakileri içermesidir:

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, jetonun geçerli olduğunu ve eşleşen güvenli bir kullanıcı kimliği içerdiğini, anahtarın Tag::USER_AUTH_TYPE ile eşleştiğini ve istek alanında geçerli işlemin işlem kimliğini içerdiğini doğrular. Bu koşullar karşılanmazsa ErrorCode::KEY_USER_NOT_AUTHENTICATED döndürün.

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

RSA anahtarları

Bu yöntem, Digest::NONE ile yapılan imzalama ve doğrulama işlemleri için tüm blokun tek bir güncellemede imzalanmasını veya doğrulanmasını kabul eder. Blokun yalnızca bir kısmını kullanamaz. Ancak arayan, verileri birden fazla güncellemede sağlamayı seçerse bu yöntem bunu kabul eder. Arayan, imzalanmak üzere kullanılabilecekten daha fazla veri sağlarsa (veri uzunluğu RSA anahtar boyutunu aşarsa) ErrorCode::INVALID_INPUT_LENGTH 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ı kullanamaz.

Ancak arayan, verileri birden fazla güncellemede sağlamayı seçerse bu yöntem bunu kabul eder. Arayan, imzalanmak üzere kullanılabilecekten daha fazla veri sağlarsa veriler sessizce kısaltılır. (Bu, benzer RSA işlemlerinde sağlanan fazla verilerin 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 (veriler tek bir blokta gönderilemeyecek kadar büyükse önemlidir) ancak her zaman şifrelenecek veya şifresi çözülecek verilerden önce gelir. Güncelleme çağrısı, şifrelemek/şifresini çözmek için hem ilişkili verileri hem de verileri alabilir. Ancak sonraki güncellemeler ilişkili verileri içeremez. Arayan, şifreleme/şifre çözme işlemi yapılacak veriler içeren bir aramadan sonra güncelleme araması için ilişkili veriler sağlarsa ErrorCode::INVALID_TAG döndürün.

GCM şifrelemesi için etiket, şifrelenmiş 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ı, son çağrı olup olmadığını bilemediği için etiket uzunluğu hariç her şeyi işler ve bitiş sırasında olası etiket verilerini arabelleğe alır.

tamamla

Sürüm: 1, 2, 3

begin ile başlatılan devam eden bir işlemi sonlandırır ve update'ler tarafından sağlanan henüz işlenmemiş tüm verileri işler.

Bu yöntem, bir işlemde çağrılan son yöntem olduğundan işlenen tüm veriler döndürülür.

Bu yöntem, başarıyla tamamlansın veya hata döndürsün, işlemi tamamlar ve bu nedenle sağlanan işlem tutamacını geçersiz kılar. Herkese açık kullanıcı adının bu yöntem veya update ya da abort ile herhangi bir şekilde kullanılması ErrorCode::INVALID_OPERATION_HANDLE sonucunu döndürür.

İmzalama işlemleri, çıkış olarak imzayı döndürür. Doğrulama işlemleri, signature parametresindeki imzayı kabul eder ve herhangi bir çıkış döndürmez.

Yetkilendirme yaptırımı

Anahtar yetkilendirme yaptırımı esas olarak begin içinde gerçekleştirilir. Bunun tek istisnası, anahtarın aşağıdakileri içermesidir:

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, jetonun geçerli olduğunu ve eşleşen güvenli bir kullanıcı kimliği içerdiğini, anahtarın Tag::USER_AUTH_TYPE ile eşleştiğini ve istek alanında geçerli işlemin işleme kimliğini içerdiğini doğrular. Bu koşullar karşılanmazsa ErrorCode::KEY_USER_NOT_AUTHENTICATED sonucunu döndürün.

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

RSA anahtarları

Doldurma moduna bağlı olarak bazı ek şartlar:

  • PaddingMode::NONE. Doldurulmamış imzalama ve şifreleme işlemleri için, sağlanan veriler anahtardan kısaysa imzalama/şifreleme işleminden önce veriler soldan sıfırla doldurulur. Veriler anahtarla aynı uzunlukta ancak sayısal olarak daha büyükse ErrorCode::INVALID_ARGUMENT sonucunu döndürün. Doğrulama ve şifre çözme işlemleri için verilerin tam olarak anahtar kadar uzun olması gerekir. Aksi takdirde ErrorCode::INVALID_INPUT_LENGTH. döndürülür.
  • PaddingMode::RSA_PSS. PSS ile doldurulmuş imza işlemleri için PSS tuzu, mesaj özetinin boyutundadır ve rastgele oluşturulur. begin üzerinde inputParams içinde Tag::DIGEST ile belirtilen özet, PSS özet algoritması ve MGF1 özet algoritması olarak kullanılır.
  • PaddingMode::RSA_OAEP. begin üzerinde inputParams içinde Tag::DIGEST ile belirtilen karma oluşturma işlemi, OAEP karma oluşturma algoritması olarak kullanılır ve MGF1 karma oluşturma algoritması olarak SHA1 kullanılır.

ECDSA anahtarları

Dolgusuz imzalama veya doğrulama için sağlanan veriler çok uzunsa kısaltın.

AES anahtarları

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

  • BlockMode::ECB veya BlockMode::CBC. Dolgu PaddingMode::NONE ise ve veri uzunluğu AES blok boyutunun katı değilse ErrorCode::INVALID_INPUT_LENGTH döndürülür. Dolgu PaddingMode::PKCS7 ise verileri PKCS#7 spesifikasyonuna göre doldurun. PKCS#7'nin, veriler blok uzunluğunun katıysa ek bir dolgu bloğu eklemenizi önerdiğini unutmayın.
  • BlockMode::GCM. Şifreleme sırasında, tüm düz metinler işlendikten sonra etiketi (Tag::MAC_LENGTH bayt) hesaplayın ve döndürülen şifrelenmiş metne ekleyin. Şifre çözme sırasında etiket olarak son Tag::MAC_LENGTH baytı işleyin. Etiket doğrulaması başarısız olursa ErrorCode::VERIFICATION_FAILED değerini döndürün.

bırak yapma

Sürüm: 1, 2, 3

Devam eden işlemi iptal eder. İptal çağrısından sonra, sağlanan işlem mülkünün update, finish veya abort ile sonraki kullanımları için ErrorCode::INVALID_OPERATION_HANDLE döndürün.

get_supported_algorithms

Sürüm: 1

Keymaster donanım uygulaması tarafından desteklenen algoritmaların listesini döndürür. Yazılım uygulaması boş bir liste döndürür; karma bir uygulama ise yalnızca donanım tarafından desteklenen algoritmaları içeren bir liste döndürür.

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

get_supported_block_modes

Sürüm: 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.

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

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

get_supported_padding_modes

Sürüm: 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'de doldurma kavramı olmadığından 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 olur.

RSA için Keymaster 1 uygulamaları şunları destekler:

  • Dolgusuz şifreleme, şifre çözme, imzalama ve doğrulama. Doldurulmamış şifreleme ve imzalama için mesaj, herkese açık modülden daha kısaysa uygulamaların sol alana sıfırlarla eklenmesi gerekir. Doldurulmamış şifre çözme ve doğrulama için giriş uzunluğu, herkese açık modül boyutuyla eşleşmelidir.
  • PKCS#1 v1.5 şifreleme ve imzalama dolgu modları
  • En az 20 karakter uzunluğunda tuz içeren PSS
  • OAEP

ECB ve CBC modlarındaki AES için Keymaster 1 uygulamaları, dolgusuz ve PKCS#7 dolgulu şifrelemeyi destekler. TO ve GCM modları yalnızca dolguyu desteklemez.

get_supported_digests

Sürüm: 1

Belirtilen 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 özet oluşturmayı desteklemez veya gerektirmez. Bu nedenle yöntem, geçerli amaçlar için boş bir liste döndürür.

Keymaster 1 uygulamaları, tanımlanan özetlerin bir alt kümesini uygulayabilir. Uygulamalar SHA-256 sağlar ve MD5, SHA1, SHA-224, SHA-256, SHA384 ve SHA512 (tanımlanmış özetlerin eksiksiz kümesi) sağlayabilir.

get_supported_import_formats

Sürüm: 1

Belirtilen bir algoritmanın Keymaster donanım uygulaması tarafından desteklenen içe aktarma biçimlerinin listesini döndürür.

Keymaster 1 uygulamaları, RSA ve EC anahtar çiftlerini içe aktarmak için PKCS#8 biçimini (şifre koruması olmadan) ve AES ve HMAC anahtar materyalinin RAW içe aktarımını destekler.

get_supported_export_formats

Sürüm: 1

Belirtilen bir algoritmanın Keymaster donanım uygulaması tarafından desteklenen dışa aktarma biçimlerinin listesini döndürür.

Keymaster1 uygulamaları, RSA ve EC ortak anahtarlarını dışa aktarmak için X.509 biçimini destekler. Özel anahtarların veya asimetrik anahtarların dışa aktarılması desteklenmez.

Geçmiş işlevler

Keymaster 0

Aşağıdaki işlevler orijinal Keymaster 0 tanımına aittir. Bunlar Keymaster 1 struct keymaster1_device_t içindeydi. Ancak Keymaster 1.0'da bu işlevler 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

Keymaster 1

Aşağıdaki işlevler Keymaster 1 tanımına aittir, ancak yukarıda listelenen Keymaster 0 işlevleriyle birlikte Keymaster 2'den 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

Keymaster 2

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

  • configure