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 kapsar, işlevin hangi Keymaster sürümünde kullanılabildiğini listeler ve varsayılan uygulamayı açıklar. Etiketler için Keymaster yetkilendirme 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 begin
bağımsız değişkenine kadar hiçbir değeri kullanmayabilir. Bu nedenle, çağıran inParams
bağımsız değişkenini NULL
olarak ayarlayabilir veya boş bir parametre grubu sağlayabilir. Arayanlar kullanılmayan parametreler de sağlayabilir ve Keymaster yöntemleri hata vermemelidir.
Gerekli bir giriş parametresi NULL
ise Keymaster yöntemleri ErrorCode::UNEXPECTED_NULL_POINTER
döndürmelidir.
Keymaster 3'ten itibaren işaretçi parametresi yoktur. Tüm parametreler değer veya const referansları ile 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 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
Aracıların mantıklı olmayan veya aptalca ancak teknik olarak yanlış olmayan istekler yapmasının birçok yolu 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 olarak oluşturulması ve benzeri durumlar, uygulamalar tarafından teşhis edilmemelidir. Gerekli parametrelerin atlanması, geçersiz gerekli 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, temeldeki güvenli donanımın bazı önemli özelliklerini istemcilere 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 (ör. TEE) saklanıyorsa ve hiçbir zaman bu donanımdan dışarı çıkmıyorsa
isSecure
,true
olur. - Donanım, NIST eğrileriyle (P-224, P-256, P-384 ve P-521) elips biçimli eğri şifrelemeyi destekliyorsa
supportsEllipticCurve
,true
değerini alır. - Donanım AES ve HMAC dahil olmak üzere simetrik kriptografiyi destekliyorsa
supportsSymmetricCryptography
,true
değerini alır. - Donanım, güvenli bir ortama enjekte edilen bir anahtarla imzalanan Keymaster ortak anahtar tasdik sertifikası oluşturmayı destekliyorsa
supportsAttestation
,true
olur.
Bu yöntemin döndürebileceği tek hata kodları 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ş 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.
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. Ana anahtar yöneticisine KM_TAG_OS_VERSION
ve KM_TAG_OS_PATCHLEVEL
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, anahtar yöneticisi tarafından yalnızca önyükleme başına 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);
addRngEntropy
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ı.
Keymaster 1 uygulaması tarafından rastgele sayılar, anahtarlar, IV'ler ve diğer öğeler 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 bitlerin veya donanım tarafından oluşturulan bitlerin (ancak her ikisinin de değil) tam kontrolünü elinde bulunduran bir saldırganın, entropi havuzundan oluşturulan bitleri tahmin etme konusunda göz ardı edilemeyecek bir avantajı olmaması için yapılmalıdır.
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 sunuldu ve Keymaster 3'te yeniden adlandırıldı.
Anahtara kalıcı olarak bağlı olan ilişkili yetkilendirmeleri belirten yeni bir kriptografik anahtar oluşturur. Anahtar yöneticisi uygulamaları, bir anahtarın oluşturulma sırasında belirtilen yetkilerle tutarsız bir şekilde kullanılmasını imkansız hale getirir. Güvenli donanımın uygulayamadığı yetkilendirmeler söz konusu olduğunda, 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
işlevine yapılan her çağrı orijinal değeri döndürür. Ayrıca, generateKey
tarafından döndürülen özellikler, yetkilendirmeleri donanımla zorunlu kılınan ve yazılımla zorunlu kılınan listeler arasında doğru şekilde dağıtır. Daha fazla bilgi için getKeyCharacteristics
sayfasına 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
herkese açık modülün boyutunu bit cinsinden belirtir. Atlanırsa yöntemErrorCode::UNSUPPORTED_KEY_SIZE
değerini döndürür. Desteklenen değerler 1024, 2048, 3072 ve 4096'dır. Önerilen değerler, 8'in katı olan tüm anahtar boyutlarıdır.Tag::RSA_PUBLIC_EXPONENT
RSA herkese açık üs değerini belirtir. Atlanırsa yöntemErrorCode::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ım tarafından zorunlu kılınan listeye 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. Tüm özet algoritmalarını desteklemeyen uygulamaların, desteklenmeyen özet algoritmaları belirtilmişsePaddingMode::RSA_PSS
vePaddingMode::RSA_OAEP
'yi temel özelliklerin yazılımla zorunlu kılınan listesine yerleştirmesi gerekir.
ECDSA anahtarları
ECDSA anahtarı oluşturmak için yalnızca Tag::KEY_SIZE
gerekir. EC grubunu seçmek için bu etiketi kullanın.
Desteklenen değerler 224, 256, 384 ve 521'dir. Bunlar sırasıyla NIST p-224, p-256, p-384 ve p521 eğrilerini belirtir.
Tag::DIGEST
, yararlı 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
gerekir. Atlanırsa yöntem ErrorCode::UNSUPPORTED_KEY_SIZE
değerini döndürür. 192 bit AES anahtarları için isteğe bağlı destek ile 128 ve 256 değerleri desteklenir.
Aşağıdaki parametreler özellikle AES anahtarları için önemlidir 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 ila 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ın özet algoritmasını belirtir. Tam olarak bir özet belirtilir. Aksi takdirdeErrorCode::UNSUPPORTED_DIGEST
döndürülür. Özet, güven kiti tarafından desteklenmiyorsaErrorCode::UNSUPPORTED_DIGEST
döndürün.
Temel özellikler
characteristics bağımsız değişkeni NULL
değilse generateKey
, yeni oluşturulan anahtarın özelliklerini donanımla zorunlu kılınan ve yazılımla zorunlu kılınan listelere uygun şekilde bölünmüş olarak döndürür. Hangi özelliklerin hangi listeye gireceğine 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 nedenle, 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üvenli bileşen, sağlanan etiketlere ek olarak KeyOrigin::GENERATED
değeriyle Tag::ORIGIN
ve anahtar geri alma işlemine karşı dayanıklıysa Tag::ROLLBACK_RESISTANT
değerini de ekler.
Geri alma direnci
Geri alma işlemine karşı direnç, bir anahtar deleteKey
veya deleteAllKeys
ile silindiğinde güvenli donanım tarafından anahtarın bir daha kullanılamayacak şekilde garanti edildiği 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 ederse anahtar geri alma işlemine karşı dayanıklıdır. Bu işlem genellikle ek anahtar meta verilerini, saldırgan tarafından değiştirilemeyecek güvenilir bir konumda depolayarak yapılır. Mobil cihazlarda bunun için kullanılan mekanizma genellikle Tekrar Oynatma Korumalı Bellek Blokları'dır (RPMB). Oluşturulabilecek anahtar sayısı sınırsız olduğundan ve geri alma işlemine karşı direnç için kullanılan güvenilir depolama alanı sınırlı boyuta sahip olabileceğinden, yeni anahtar için geri alma işlemine karşı direnç sağlanamadığında bile bu yöntemin başarılı olması gerekir. Bu durumda, temel özelliklere Tag::ROLLBACK_RESISTANT
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 olarak iki gruba ayrılmış şekilde döndürür. Buradaki açıklama, generateKey
ve importKey
tarafından döndürülen temel özellik listeleri için de 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ö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ınmış veya yazılımla zorunlu kılınmış listesine ait olup olmadığına karar vermeyle ilgili genel kural, etiketin anlamının güvenli donanım tarafından tamamen güvence altına alınması durumunda etiketin donanımla zorunlu kılınmış olduğudur. 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:
Tag::ALGORITHM
,Tag::KEY_SIZE
veTag::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 tarafından desteklenen 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. Tag::USER_SECURE_ID
veTag::USER_AUTH_TYPE
yalnızca kullanıcı kimlik doğrulaması donanımla zorunlu kılınmışsa donanımla zorunlu kılını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
veTag::USAGE_EXPIRE_DATETIME
etiketleri, doğruluğu doğrulanabilir bir duvar saatine erişimi 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.
importKey
Sürüm: 1, 2, 3
Bu işlev, Keymaster 1'de import_key
olarak kullanıma sunuldu ve Keymaster 3'te yeniden adlandırıldı.
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:
- Giriş parametrelerinde
Tag::KEY_SIZE
veTag::RSA_PUBLIC_EXPONENT
(yalnızca RSA anahtarları için) 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öntemErrorCode::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 sunuldu ve Keymaster 3'te yeniden adlandırıldı.
Keymaster RSA veya EC anahtar çiftinden ortak anahtar dışa aktarır.
Anahtar oluşturma veya içe aktarma sırasında Tag::APPLICATION_ID
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 sunuldu 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 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 sunuldu 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 işlemine karşı direnç 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 doğrulaması destekleniyorsa bu yöntemin uygulanması ve gelecekteki tüm kimlik doğrulama girişimlerinin kalıcı olarak devre dışı bırakılması gerekir. Yöntem, istediğiniz 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
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şla
Sürüm: 1, 2, 3
Belirtilen anahtarı kullanarak, belirtilen amaç için, belirtilen parametrelerle (uygun olduğu şekilde) bir kriptografik işlem başlatır ve işlemi tamamlamak üzere update
ve finish
ile kullanılan bir işlem tutamacını döndürür. İşlem herkese açık kimliği, kimliği doğrulanmış işlemlerde istem 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'da devam eden 15 işlem olduğunda (begin
çağrılmış ancak finish
veya abort
çağrılmamışsa) ve 16. işlemi başlatma isteği aldığında, yeni istenen işlemi başlatmak için begin
'ü çağırmadan önce etkin işlem sayısını 14'e düşürmek için en son kullanılan işlemde abort
'yi çağırır.
Anahtar oluşturma veya içe aktarma sırasında Tag::APPLICATION_ID
veya Tag::APPLICATION_DATA
belirtilmişse begin
çağrıları, bu yöntemin inParams
bağımsız değişkeninde başlangıçta belirtilen değerlerle 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 öğesi 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ğilsebegin
,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 uygulanabilir. Geçerli tarih ve saat, etiket değerinden önceyse yöntemErrorCode::KEY_NOT_YET_VALID
değerini döndürür.Tag::ORIGINATION_EXPIRE_DATETIME
yalnızca güvenilir bir UTC saat kaynağı varsa uygulanabilir. Geçerli tarih ve saat, etiket değerinden daha yeniyse ve amaçKeyPurpose::ENCRYPT
veyaKeyPurpose::SIGN
ise yöntemErrorCode::KEY_EXPIRED
değerini döndürür.Tag::USAGE_EXPIRE_DATETIME
yalnızca güvenilir bir UTC saat kaynağı varsa uygulanabilir. Geçerli tarih ve saat, etiket değerinden daha yeniyse ve amaçKeyPurpose::DECRYPT
veyaKeyPurpose::VERIFY
ise yöntemErrorCode::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öntemErrorCode::KEY_RATE_LIMIT_EXCEEDED
değerini döndürür. Uygulamayla ilgili önemli ayrıntılar için etiket açıklamasına bakın.Tag::MAX_USES_PER_BOOT
, anahtarın başlatma 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öntemErrorCode::KEY_MAX_OPS_EXCEEDED
değerini döndürür.Tag::USER_SECURE_ID
yalnızca anahtardaTag::AUTH_TIMEOUT
varsa bu yöntemle zorunlu kılınır. Anahtar her ikisine de sahipse bu yöntem,inParams
içinde geçerli birTag::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ır.
- Anahtardaki
Tag::USER_SECURE_ID
değerlerden en az biri, jetondaki güvenli kimlik değerlerinden en az biriyle eşleşiyor. - Anahtar, jetondaki kimlik doğrulama türüyle eşleşen bir
Tag::USER_AUTH_TYPE
içerir.
Bu koşullardan herhangi biri karşılanmazsa yöntem
ErrorCode::KEY_USER_NOT_AUTHENTICATED
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öntemeTag::NONCE
sağladıysaErrorCode::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ırsaErrorCode::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. Belirtilmemişse veya birden fazla kez belirtilmişse 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
döndürür.
Dolgu modları ile özetler arasında bazı önemli etkileşimler vardır:
PaddingMode::NONE
, ham RSA işleminin yapıldığını gösterir. İmzalama veya doğrulama işlemindeyse özet içinDigest::NONE
belirtilir. Doldurulmamış şifreleme veya şifre çözme için özet gerekmez.PaddingMode::RSA_PKCS1_1_5_SIGN
dolgu için özet gerekir. ÖzetDigest::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ğu0x00 || 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öntemErrorCode::INVALID_INPUT_LENGTH
değerini döndürür.PaddingMode::RSA_PKCS1_1_1_5_ENCRYPT
dolgu için özet gerekli değildir.PaddingMode::RSA_PSS
dolgu için bir özet gerekir. Bu özetDigest::NONE
olamaz.Digest::NONE
belirtilirse yöntemErrorCode::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öntemErrorCode::INCOMPATIBLE_DIGEST
değerini döndürür. Tuz boyutu D'dir.PaddingMode::RSA_OAEP
dolgu için bir özet gerekir. Bu özetDigest::NONE
olamaz.Digest::NONE
belirtilirse yöntemErrorCode::INCOMPATIBLE_DIGEST
değerini döndürür.
EC anahtarları
EC anahtar işlemleri, inParams
içinde tam olarak bir dolgu modu belirtir.
Belirtilmemişse veya bir defadan fazla belirtilmişse 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ısa değerler için ErrorCode::INVALID_MAC_LENGTH
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
veya 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 sayı oluşturur ve outParams
içinde Tag::NONCE
ile birlikte 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 arayan, inParams
içinde Tag::NONCE
ile bir IV veya tek seferlik sayı 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
yetkilendirilirken 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, karma oluşturma uzunluğundan uzun veya anahtar yetkilendirmelerindeki Tag::MIN_MAC_LENGTH
değerinden küçük olmayan 8'in katı olmalıdır. Özet uzunluğundan 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ısa değerler için ErrorCode::INVALID_MAC_LENGTH
döndürülür.
güncelleme
Sürüm: 1, 2, 3
begin
ile başlayan devam eden bir işlemde işlenecek verileri sağlar.
İşlem, operationHandle
parametresi tarafından 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. Kullanılan giriş 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ı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, güncelleme sonucunda ne kadar veri döndürüleceğini de seçebilir. İmzalama ve doğrulama finish
'e 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. Herhangi bir kullanıcı adı, bu yöntemle, finish
veya abort
ile daha sonra kullanıldığında ErrorCode::INVALID_OPERATION_HANDLE
döndürülür.
Yetkilendirme yaptırımı
Anahtar yetkilendirme yaptırımı öncelikle begin
'te gerçekleştirilir.
Bunun tek istisnası, anahtarın:
- Bir veya daha fazla
Tag::USER_SECURE_IDs
var Tag::AUTH_TIMEOUT
kullanmıyorum
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 challenge
alanında geçerli işlemin işleme işleyicisini içerdiğini doğrular. Bu koşullar karşılanmazsa ErrorCode::KEY_USER_NOT_AUTHENTICATED
döndürün.
Arayan, update
ve finish
adreslerine yapılan her aramada kimlik doğrulama jetonunu sağlar. Uygulamanın jetonu 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. 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
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ı 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ı hem ilişkili verileri hem de şifrelenecek/şifreleri çözülecek 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 şifrelemede etiket, finish
ile şifre metnine eklenir. Şifre çözme sırasında, son güncelleme çağrısına sağlanan verilerin son Tag::MAC_LENGTH
baytı etikettir. update
çağrısının son çağrı olup olmadığını bilmediği için etiket uzunluğu dışındaki tüm verileri işler ve finish
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
örnekleri 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 işleyicisini geçersiz kılar. Herhangi bir kullanıcı adı, bu yöntemle veya update
ya da abort
ile daha sonra kullanıldığında ErrorCode::INVALID_OPERATION_HANDLE
döndürülür.
İmzalama işlemleri, çıkış olarak imzayı döndürür. Doğrulama işlemleri, signature
parametresindeki imzayı kabul eder ve hiçbir çıkış döndürmez.
Yetkilendirme yaptırımı
Anahtar yetkilendirme yaptırımı öncelikle begin
içinde gerçekleştirilir. Bunun tek istisnası, anahtarın her iki özelliğe de sahip olduğu durumdur:
- Bir veya daha fazla
Tag::USER_SECURE_IDs
Tag::AUTH_TIMEOUT
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 challenge
alanında geçerli işlemin işleme işleyicisini içerdiğini doğrular. Bu koşullar karşılanmazsa ErrorCode::KEY_USER_NOT_AUTHENTICATED
döndürün.
Arayan, update
ve finish
'e yapılan her aramada kimlik doğrulama jetonunu sağlar.
Uygulamanın 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ükseErrorCode::INVALID_ARGUMENT
döndürün. Doğrulama ve şifre çözme işlemleri için verilerin tam olarak anahtar kadar uzun olması gerekir. Aksi takdirdeErrorCode::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
üzerindeinputParams
içindeTag::DIGEST
ile belirtilen özet, PSS özet algoritması ve MGF1 özet algoritması olarak kullanılır.PaddingMode::RSA_OAEP
.begin
üzerindeinputParams
içindeTag::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 verileri kısaltın.
AES anahtarları
Engelleme moduna bağlı olarak bazı ek koşullar:
BlockMode::ECB
veyaBlockMode::CBC
. DolguPaddingMode::NONE
ise ve veri uzunluğu AES blok boyutunun katı değilseErrorCode::INVALID_INPUT_LENGTH
döndürülür. DolguPaddingMode::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 açık metin işlendikten sonra etiketi (Tag::MAC_LENGTH
bayt) hesaplayın ve döndürülen şifrelenmiş metne ekleyin. Şifre çözme sırasında, sonTag::MAC_LENGTH
baytını etiket olarak işleyin. Etiket doğrulaması başarısız olursaErrorCode::VERIFICATION_FAILED
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 her kullanımı için ErrorCode::INVALID_OPERATION_HANDLE
döndürülür.
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 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.
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 olur.
Keymaster 1 uygulamaları, AES şifreleme ve şifre çözme için ECB, CBC, CTR 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:
- Dolgulu olmayan şifreleme, şifre çözme, imzalama ve doğrulama. Doldurulmamış şifreleme ve imzalama için, mesaj herkese açık modülden kısaysa uygulamalar mesajı soldan sıfırlarla doldurmalıdır. 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. YG ve GCM modları yalnızca dolgusuzluğu destekler.
get_supported_digests
Sürüm: 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 ö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ış karma oluşturma işlemlerinin tam seti) sağlayabilir.
get_supported_import_formats
Sürüm: 1
Belirtilen 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 ile HMAC anahtar materyalinin RAW olarak içe aktarılmasını destekler.
get_supported_export_formats
Sürüm: 1
Belirtilen 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'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
Keymaster 2
Aşağıdaki işlevler Keymaster 2 tanımına aittir ancak yukarıda listelenen Keymaster 1 işlevleriyle birlikte Keymaster 3'te kaldırılmıştır:
configure