KeyStore Класс

Определение

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

[Android.Runtime.Register("java/security/KeyStore", DoNotGenerateAcw=true)]
public class KeyStore : Java.Lang.Object
[<Android.Runtime.Register("java/security/KeyStore", DoNotGenerateAcw=true)>]
type KeyStore = class
    inherit Object
Наследование
KeyStore
Атрибуты

Комментарии

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

Управляет KeyStore различными типами записей. Каждый тип записи реализует KeyStore.Entry интерфейс . Предоставляются три основные KeyStore.Entry реализации:

<ul><li><b>KeyStore.PrivateKeyEntry</b>

Этот тип записи содержит криптографический PrivateKeyобъект , который при необходимости хранится в защищенном формате, чтобы предотвратить несанкционированный доступ. Он также сопровождается цепочкой сертификатов для соответствующего открытого ключа.

Закрытые ключи и цепочки сертификатов используются данной сущностью для самостоятельной проверки подлинности. Приложения для этой проверки подлинности включают организации распространения программного обеспечения, которые подписывают JAR-файлы в рамках выпуска и (или) лицензирования программного обеспечения.

<li><b>KeyStore.SecretKeyEntry</b>

Этот тип записи содержит криптографический SecretKeyобъект , который при необходимости хранится в защищенном формате, чтобы предотвратить несанкционированный доступ.

<li><b>KeyStore.TrustedCertificateEntry</b>

Этот тип записи содержит один открытый ключ Certificate , принадлежащий другой стороне. Он называется доверенным сертификатом , так как владелец хранилища ключей доверяет, что открытый ключ в сертификате действительно принадлежит удостоверению, определенному субъектом (владельцем) сертификата.

Этот тип записи можно использовать для проверки подлинности других сторон. </ul>

Каждая запись в хранилище ключей идентифицируется строкой псевдонима. В случае закрытых ключей и связанных с ними цепочек сертификатов эти строки различают различные способы проверки подлинности сущности. Например, сущность может пройти проверку подлинности с помощью разных центров сертификации или с помощью разных алгоритмов открытого ключа.

Учитывается ли регистр псевдонимов, зависит от реализации. Чтобы избежать проблем, рекомендуется не использовать псевдонимы в хранилище ключей, которые отличаются только в конкретном случае.

Сведения о том, являются ли хранилища ключей постоянными, и механизмы, используемые хранилищем ключей, если они являются постоянными, здесь не указаны. Это позволяет использовать различные методы защиты конфиденциальных (например, закрытых или секретных) ключей. Смарт-карты или другие интегрированные криптографические подсистемы (SafeKeyper) — это один из вариантов, а также могут использоваться более простые механизмы, такие как файлы (в различных форматах).

Типичные способы запроса объекта KeyStore включают указание существующего файла хранилища ключей, использование типа по умолчанию и предоставление определенного типа хранилища ключей.

<ul><li>. Чтобы указать существующий файл хранилища ключей:

// get keystore password
               char[] password = getPassword();

               // probe the keystore file and load the keystore entries
               KeyStore ks = KeyStore.getInstance(new File("keyStoreName"), password);

Система прощупирует указанный файл, чтобы определить его тип хранилища ключей и возвратит реализацию хранилища ключей с уже загруженными записями. При использовании этого подхода нет необходимости вызывать метод хранилища ключей #load(java.io.InputStream, char[]) load .

<Li>. Чтобы использовать тип по умолчанию:

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

Система вернет реализацию хранилища ключей для типа по умолчанию.

<Чтобы указать определенный тип хранилища ключей, выполните>следующие действия:

KeyStore ks = KeyStore.getInstance("JKS");

Система вернет наиболее предпочтительную реализацию указанного типа хранилища ключей, доступного в среде. </ul>

Перед доступом к хранилищу ключей он должен иметь значение #load(java.io.InputStream, char[]) loaded.

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

               // get user password and file input stream
               char[] password = getPassword();

               try (FileInputStream fis = new FileInputStream("keyStoreName")) {
                   ks.load(fis, password);
               }

Чтобы создать пустое хранилище ключей с помощью приведенного выше load метода, передайте null в качестве аргумента InputStream .

После загрузки хранилища ключей можно считывать существующие записи из хранилища ключей или записывать новые записи в хранилище ключей:

KeyStore.ProtectionParameter protParam =
                   new KeyStore.PasswordProtection(password);

               // get my private key
               KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry)
                   ks.getEntry("privateKeyAlias", protParam);
               PrivateKey myPrivateKey = pkEntry.getPrivateKey();

               // save my secret key
               javax.crypto.SecretKey mySecretKey;
               KeyStore.SecretKeyEntry skEntry =
                   new KeyStore.SecretKeyEntry(mySecretKey);
               ks.setEntry("secretKeyAlias", skEntry, protParam);

               // store away the keystore
               try (FileOutputStream fos = new FileOutputStream("newKeyStoreName")) {
                   ks.store(fos, password);
               }

Обратите внимание, что хотя один и тот же пароль может использоваться для загрузки хранилища ключей, для защиты записи закрытого ключа, для защиты записи секретного ключа и для хранения хранилища ключей (как показано в примере кода выше), также могут использоваться другие пароли или другие параметры защиты.

Android предоставляет следующие KeyStore типы: <table<>thead><tr><th>Algorithm</th th>><Supported API Levels</th></tr<>/thead<>tbody<>tr<>td>AndroidCAStore</td><td>14+</td<>/tr tr<>><td>AndroidKeyStore</td td><>18+</td<>/tr><tr class="deprecated" ><td>BCPKCS12</td<>td>1-8</td<>/tr<>tr><td>BKS</td<>td>1+</td></tr<>td>><BouncyCastle</td><td>1+</td></tr tr><><td>PKCS12</td<>td>1+</td></tr<>tr class="deprecated"><td>PKCS12-DEF</td><td>1-8</td></tr></tbody></table>

Эти типы описаны в разделе KeyStore документации по стандартному имени алгоритма архитектуры шифрования Java.

Добавлено в версии 1.2.

Документация по Java для java.security.KeyStore.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.

Конструкторы

KeyStore(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

KeyStore(KeyStoreSpi, Provider, String)

Создает объект KeyStore заданного типа и инкапсулирует в нем реализацию заданного поставщика (объект SPI).

Свойства

Class

Возвращает класс среды выполнения данного объекта Object.

(Унаследовано от Object)
DefaultType

Возвращает тип хранилища ключей по умолчанию, указанный keystore.type в свойстве безопасности, или строку "jks" (аббревиатуру "Хранилище ключей Java"), если такого свойства не существует.

Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
JniIdentityHashCode

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
JniPeerMembers

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

PeerReference

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
Provider

Возвращает поставщика этого хранилища ключей.

ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Type

Возвращает тип этого хранилища ключей.

Методы

Aliases()

Выводит список всех псевдонимов этого хранилища ключей.

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
ContainsAlias(String)

Проверяет, существует ли заданный псевдоним в этом хранилище ключей.

DeleteEntry(String)

Удаляет запись, определяемую заданным псевдонимом, из этого хранилища ключей.

Dispose()

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
Dispose(Boolean)

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
EntryInstanceOf(String, Class)

Определяет, является ли хранилище Entry ключей для указанного alias экземпляром или подклассом указанного entryClassобъекта .

Equals(Object)

Указывает, равен ли какой-то другой объект этому объекту.

(Унаследовано от Object)
GetCertificate(String)

Возвращает сертификат, связанный с заданным псевдонимом.

GetCertificateAlias(Certificate)

Возвращает имя (псевдоним) первой записи хранилища ключей, сертификат которой соответствует заданному сертификату.

GetCertificateChain(String)

Возвращает цепочку сертификатов, связанную с заданным псевдонимом.

GetCreationDate(String)

Возвращает дату создания записи, определяемой заданным псевдонимом.

GetEntry(String, KeyStore+IProtectionParameter)

Возвращает хранилище Entry ключей для указанного псевдонима с указанным параметром защиты.

GetHashCode()

Возвращает значение хэш-кода для объекта.

(Унаследовано от Object)
GetInstance(File, Char[])

Возвращает загруженный объект хранилища ключей соответствующего типа.

GetInstance(File, KeyStore+ILoadStoreParameter)

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

GetInstance(String)

Возвращает объект хранилища ключей указанного типа.

GetInstance(String, Provider)

Возвращает объект хранилища ключей указанного типа.

GetInstance(String, String)

Возвращает объект хранилища ключей указанного типа.

GetKey(String, Char[])

Возвращает ключ, связанный с заданным псевдонимом, используя заданный пароль для его восстановления.

IsCertificateEntry(String)

Возвращает значение true, если запись, идентифицируемая заданным псевдонимом, была создана путем вызова setCertificateEntryметода или с помощью .setEntryTrustedCertificateEntry

IsKeyEntry(String)

Возвращает значение true, если запись, определяемая заданным псевдонимом, была создана путем вызова setKeyEntryметода или PrivateKeyEntrysetEntrySecretKeyEntry.

JavaFinalize()

Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект .

(Унаследовано от Object)
Load(KeyStore+ILoadStoreParameter)

Загружает это хранилище ключей из заданного входного потока.

Load(Stream, Char[])

Загружает это хранилище ключей из заданного входного потока.

Notify()

Пробуждает один поток, ожидающий монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Пробуждает все потоки, ожидающие на мониторе этого объекта.

(Унаследовано от Object)
SetCertificateEntry(String, Certificate)

Назначает заданный доверенный сертификат заданному псевдониму.

SetEntry(String, KeyStore+IEntry, KeyStore+IProtectionParameter)

Сохраняет хранилище Entry ключей под указанным псевдонимом.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetKeyEntry(String, Byte[], Certificate[])

Назначает заданный ключ (который уже был защищен) заданному псевдониму.

SetKeyEntry(String, IKey, Char[], Certificate[])

Назначает заданный ключ заданному псевдониму, защищая его с помощью заданного пароля.

Size()

Извлекает количество записей в этом хранилище ключей.

Store(KeyStore+ILoadStoreParameter)

Сохраняет это хранилище ключей в заданном выходном потоке и защищает его целостность с помощью заданного пароля.

Store(Stream, Char[])

Сохраняет это хранилище ключей в заданном выходном потоке и защищает его целостность с помощью заданного пароля.

ToArray<T>()

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
Wait()

Вызывает ожидание текущего потока, пока он не пробудится, как правило, из-за <уведомления><<> или>прерывания или прерывания.><

(Унаследовано от Object)
Wait(Int64)

Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени.

(Унаследовано от Object)
Wait(Int64, Int32)

Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени.

(Унаследовано от Object)

Явные реализации интерфейса

IJavaPeerable.Disposed()

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
IJavaPeerable.DisposeUnlessReferenced()

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
IJavaPeerable.Finalized()

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
IJavaPeerable.JniManagedPeerState

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

(Унаследовано от Object)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверенного средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

GetJniTypeName(IJavaPeerable)

Этот класс представляет собой хранилище для криптографических ключей и сертификатов.

Применяется к