Spec-Zone.ru › OpenJDK 17

Класс KeyStore

java.lang.Object
java.security.KeyStore
public class KeyStore extends Object
Этот класс представляет хранилище криптографических ключей и сертификатов.

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

  • KeyStore.PrivateKeyEntry

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

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

  • KeyStore.SecretKeyEntry

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

  • KeyStore.TrustedCertificateEntry

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

    Этот тип записи может использоваться для аутентификации других сторон.

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

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

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

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

  • Для указания существующего файла хранилища:
        // get keystore password
        char[] password = getPassword();
    
        // probe the keystore file and load the keystore entries
        KeyStore ks = KeyStore.getInstance(new File("keyStoreName"), password);
    
    Система проверит указанный файл, чтобы определить его тип хранилища, и вернет реализацию хранилища с его уже загруженными записями. При использовании этого подхода нет необходимости вызывать метод load хранилища.
  • Для использования типа по умолчанию:
        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
     
    Система вернет реализацию хранилища для типа по умолчанию.
  • Для предоставления конкретного типа хранилища:
          KeyStore ks = KeyStore.getInstance("JKS");
     
    Система вернет наиболее предпочтительную реализацию указанного типа хранилища, доступную в среде.

Перед доступом к хранилищу оно должно быть 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);
    }
 
Обратите внимание, что хотя один и тот же пароль может использоваться для загрузки хранилища, для защиты записи закрытого ключа, для защиты записи секретного ключа и для сохранения хранилища (как показано в примере кода выше), могут использоваться также разные пароли или другие параметры защиты.

Каждая реализация платформы Java обязана поддерживать следующий стандартный KeyStore тип:

  • PKCS12
Этот тип описан в разделе Раздел хранилищ ключей спецификации стандартных имен алгоритмов безопасности Java. Обратитесь к документации выпуска вашей реализации, чтобы узнать, поддерживаются ли другие типы.
Since:
1.2
See Also:
  • PrivateKey
  • SecretKey
  • Certificate
END_OF_DOCUMENT_MARKER

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static class  KeyStore.Builder
Описание объекта KeyStore, подлежащего инициализации.
static class  KeyStore.CallbackHandlerProtection
Объект ProtectionParameter, инкапсулирующий CallbackHandler.
static interface  KeyStore.Entry
Маркерный интерфейс для типов записей KeyStore.
static interface  KeyStore.LoadStoreParameter
Маркерный интерфейс для параметров load и store типа KeyStore.
static class  KeyStore.PasswordProtection
Реализация ProtectionParameter на основе пароля.
static final class  KeyStore.PrivateKeyEntry
Запись KeyStore, содержащая PrivateKey и соответствующую цепочку сертификатов.
static interface  KeyStore.ProtectionParameter
Маркерный интерфейс для параметров защиты хранилища ключей.
static final class  KeyStore.SecretKeyEntry
Запись KeyStore, содержащая SecretKey.
static final class  KeyStore.TrustedCertificateEntry
Запись KeyStore, содержащая доверенный Certificate.

Краткое описание конструкторов

KeyStore(KeyStoreSpi keyStoreSpi, Provider provider, String type)
Модификатор Конструктор Описание
protected
Создаёт объект KeyStore заданного типа и инкапсулирует в нём заданную реализацию провайдера (объект SPI).

Краткое описание методов

Модификатор и тип Метод Описание
final Enumeration<String> aliases()
Выводит список всех псевдонимов этого хранилища ключей.
final boolean containsAlias(String alias)
Проверяет, существует ли заданный псевдоним в этом хранилище ключей.
final void deleteEntry(String alias)
Удаляет запись, идентифицированную заданным псевдонимом, из этого хранилища ключей.
final boolean entryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass)
Определяет, является ли хранилище ключей Entry для указанного alias экземпляром или подклассом указанного entryClass.
final Certificate getCertificate(String alias)
Возвращает сертификат, связанный с данным псевдонимом.
final String getCertificateAlias(Certificate cert)
Возвращает (псевдоним) имя первой записи хранилища ключей, сертификат которой соответствует заданному сертификату.
final Certificate[] getCertificateChain(String alias)
Возвращает цепочку сертификатов, связанную с данным псевдонимом.
final Date getCreationDate(String alias)
Возвращает дату создания записи, идентифицированной заданным псевдонимом.
static final String getDefaultType()
Возвращает тип хранилища ключей по умолчанию, как указано в свойстве безопасности keystore.type, или строку "jks" (аббревиатура от "Java keystore"), если такое свойство не существует.
final KeyStore.Entry getEntry(String alias, KeyStore.ProtectionParameter protParam)
Получает хранилище ключей Entry для указанного псевдонима с указанным параметром защиты.
static final KeyStore getInstance(File file, char[] password)
Возвращает загруженный объект хранилища ключей соответствующего типа.
static final KeyStore getInstance(File file, KeyStore.LoadStoreParameter param)
Возвращает загруженный объект хранилища ключей соответствующего типа.
static KeyStore getInstance(String type)
Возвращает объект хранилища ключей указанного типа.
static KeyStore getInstance(String type, String provider)
Возвращает объект хранилища ключей указанного типа.
static KeyStore getInstance(String type, Provider provider)
Возвращает объект хранилища ключей указанного типа.
final Key getKey(String alias, char[] password)
Возвращает ключ, связанный с данным псевдонимом, используя заданный пароль для его восстановления.
final Provider getProvider()
Возвращает провайдер этого хранилища ключей.
final String getType()
Возвращает тип этого хранилища ключей.
final boolean isCertificateEntry(String alias)
Возвращает true, если запись, идентифицированная заданным псевдонимом, была создана вызовом setCertificateEntry, или создана вызовом setEntry с TrustedCertificateEntry.
final boolean isKeyEntry(String alias)
Возвращает true, если запись, идентифицированная заданным псевдонимом, была создана вызовом setKeyEntry, или создана вызовом setEntry с PrivateKeyEntry или SecretKeyEntry.
final void load(InputStream stream, char[] password)
Загружает это хранилище ключей из заданного потока ввода.
final void load(KeyStore.LoadStoreParameter param)
Загружает это хранилище ключей, используя заданный LoadStoreParameter.
final void setCertificateEntry(String alias, Certificate cert)
Присваивает заданный доверенный сертификат заданному псевдониму.
final void setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam)
Сохраняет хранилище ключей Entry под указанным псевдонимом.
final void setKeyEntry(String alias, byte[] key, Certificate[] chain)
Присваивает заданный ключ (который уже был защищен) заданному псевдониму.
final void setKeyEntry(String alias, Key key, char[] password, Certificate[] chain)
Присваивает заданный ключ заданному псевдониму, защищая его заданным паролем.
final int size()
Возвращает количество записей в этом хранилище ключей.
final void store(OutputStream stream, char[] password)
Сохраняет это хранилище ключей в заданный поток вывода и защищает его целостность заданным паролем.
final void store(KeyStore.LoadStoreParameter param)
Сохраняет это хранилище ключей, используя заданный LoadStoreParameter.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

KeyStore

protected KeyStore(KeyStoreSpi keyStoreSpi, Provider provider, String type)
Создаёт объект KeyStore заданного типа и инкапсулирует в нём заданную реализацию провайдера (объект SPI).
Параметры:
keyStoreSpi - реализация провайдера.
provider - провайдер.
type - тип хранилища ключей.

Подробное описание методов

getInstance

public static KeyStore getInstance(String type) throws KeyStoreException
Возвращает объект хранилища ключей указанного типа.

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

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

Примечание реализации:
Реализация JDK дополнительно использует свойство jdk.security.provider.preferred Security для определения предпочтительного порядка провайдеров для указанного алгоритма. Это может отличаться от порядка провайдеров, возвращаемых методом Security.getProviders().
Параметры:
type - тип хранилища ключей. См. раздел KeyStore в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных типах хранилищ ключей.
Возвращает:
объект хранилища ключей указанного типа
Исключения:
KeyStoreException - если ни один Provider не поддерживает реализацию KeyStoreSpi для указанного типа
NullPointerException - если type является null
См. также:
  • Provider

getInstance

public static KeyStore getInstance(String type, String provider) throws KeyStoreException, NoSuchProviderException
Возвращает объект хранилища ключей указанного типа.

Возвращается новый объект KeyStore, инкапсулирующий реализацию KeyStoreSpi от указанного провайдера. Указанный провайдер должен быть зарегистрирован в списке провайдеров безопасности.

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

Параметры:
type - тип хранилища ключей. См. раздел KeyStore в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных типах хранилищ ключей.
provider - имя провайдера.
Возвращает:
объект хранилища ключей указанного типа
Исключения:
IllegalArgumentException - если имя провайдера является null или пустым
KeyStoreException - если реализация KeyStoreSpi для указанного типа недоступна от указанного провайдера
NoSuchProviderException - если указанный провайдер не зарегистрирован в списке провайдеров безопасности
NullPointerException - если type является null
См. также:
  • Provider

getInstance

public static KeyStore getInstance(String type, Provider provider) throws KeyStoreException
Возвращает объект хранилища ключей указанного типа.

Возвращается новый объект KeyStore, инкапсулирующий реализацию KeyStoreSpi от указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке провайдеров.

Параметры:
type - тип хранилища ключей. См. раздел KeyStore в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных типах хранилищ ключей.
provider - провайдер.
Возвращает:
объект хранилища ключей указанного типа
Исключения:
IllegalArgumentException - если указанный провайдер null
KeyStoreException - если реализация KeyStoreSpi для указанного типа недоступна от указанного объекта Provider
NullPointerException - если type является null
С тех пор как:
1.4
См. также:
  • Provider

getDefaultType

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

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

Тип хранилища ключей по умолчанию можно изменить, задав значение свойства безопасности keystore.type на желаемый тип хранилища ключей.

Возвращает:
тип хранилища ключей по умолчанию, указанный свойством keystore.type безопасности, или строка "jks", если такого свойства нет.
См. также:
  • security properties

getProvider

public final Provider getProvider()
Возвращает провайдера этого хранилища ключей.
Возвращает:
провайдера этого хранилища ключей.

getType

public final String getType()
Возвращает тип этого хранилища ключей.
Возвращает:
тип этого хранилища ключей.

getKey

public final Key getKey(String alias, char[] password) throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException
Возвращает ключ, связанный с заданным псевдонимом, используя заданный пароль для его восстановления. Ключ должен был быть связан с псевдонимом вызовом setKeyEntry, или вызовом setEntry со PrivateKeyEntry или SecretKeyEntry.
Параметры:
alias - имя псевдонима
password - пароль для восстановления ключа
Возвращает:
запрашиваемый ключ, или null, если заданный псевдоним не существует или не идентифицирует запись, связанную с ключом.
Исключения:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).
NoSuchAlgorithmException - если алгоритм для восстановления ключа не найден
UnrecoverableKeyException - если ключ не может быть восстановлен (например, заданный пароль неверен).

getCertificateChain

public final Certificate[] getCertificateChain(String alias) throws KeyStoreException
Возвращает цепочку сертификатов, связанную с данным псевдонимом. Цепочка сертификатов должна была быть связана с псевдонимом вызовом setKeyEntry, или вызовом setEntry со PrivateKeyEntry.
Параметры:
alias - имя псевдонима
Возвращает:
цепочку сертификатов (отсортированную с сертификатом пользователя в начале, за которым следуют ноль или более сертификатов уполномоченных организаций), или null, если заданный псевдоним не существует или не содержит цепочки сертификатов.
Исключения:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).

getCertificate

public final Certificate getCertificate(String alias) throws KeyStoreException
Возвращает сертификат, связанный с данным псевдонимом.

Если заданное имя псевдонима идентифицирует запись, созданную вызовом setCertificateEntry, или созданную вызовом setEntry со TrustedCertificateEntry, то возвращается доверенный сертификат, содержащийся в этой записи.

Если заданное имя псевдонима идентифицирует запись, созданную вызовом setKeyEntry, или созданную вызовом setEntry со PrivateKeyEntry, то возвращается первый элемент цепочки сертификатов в этой записи.

Параметры:
alias - имя псевдонима
Возвращает:
сертификат, или null, если заданный псевдоним не существует или не содержит сертификата.
Исключения:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).

getCreationDate

public final Date getCreationDate(String alias) throws KeyStoreException
Возвращает дату создания записи, идентифицированной заданным псевдонимом.
Параметры:
alias - имя псевдонима
Возвращает:
дата создания этой записи, или null, если заданный псевдоним не существует
Исключения:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).

setKeyEntry

public final void setKeyEntry(String alias, Key key, char[] password, Certificate[] chain) throws KeyStoreException
Присваивает заданный ключ заданному псевдониму, защищая его заданным паролем.

Если заданный ключ является типа java.security.PrivateKey, он должен сопровождаться цепочкой сертификатов, подтверждающих соответствующий открытый ключ.

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

Параметры:
alias - имя псевдонима
key - ключ, который будет связан с псевдонимом
password - пароль для защиты ключа
chain - цепочка сертификатов для соответствующего открытого ключа (требуется только если заданный ключ является типа java.security.PrivateKey).
Исключения:
KeyStoreException - если хранилище ключей не было инициализировано (загружено), заданный ключ не может быть защищён, или данная операция не удалась по какой-либо другой причине
END_OF_DOCUMENT_MARKER

setKeyEntry

public final void setKeyEntry(String alias, byte[] key, Certificate[] chain) throws KeyStoreException
Присваивает заданный ключ (который уже защищен) заданному псевдониму.

Если защищённый ключ типа java.security.PrivateKey, он должен сопровождаться цепочкой сертификатов, подтверждающих соответствующий открытый ключ. Если реализация хранилища ключей является типа jks, key должен быть закодирован как EncryptedPrivateKeyInfo в соответствии со стандартом PKCS #8.

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

Parameters:
alias - имя псевдонима
key - ключ (в защищённом формате), который необходимо связать с псевдонимом
chain - цепочка сертификатов для соответствующего открытого ключа (полезно только если защищённый ключ типа java.security.PrivateKey).
Throws:
KeyStoreException - если хранилище ключей не было инициализировано (загружено) или эта операция завершилась неудачно по какой-либо другой причине.

setCertificateEntry

public final void setCertificateEntry(String alias, Certificate cert) throws KeyStoreException
Присваивает заданный доверенный сертификат заданному псевдониму.

Если заданный псевдоним идентифицирует существующую запись, созданную вызовом setCertificateEntry, или созданную вызовом setEntry с TrustedCertificateEntry, то доверенный сертификат в существующей записи перезаписывается заданным сертификатом.

Parameters:
alias - имя псевдонима
cert - сертификат
Throws:
KeyStoreException - если хранилище ключей не было инициализировано, или заданный псевдоним уже существует и не идентифицирует запись, содержащую доверенный сертификат, или эта операция завершилась неудачно по какой-либо другой причине.

deleteEntry

public final void deleteEntry(String alias) throws KeyStoreException
Удаляет запись, идентифицируемую заданным псевдонимом, из этого хранилища ключей.
Parameters:
alias - имя псевдонима
Throws:
KeyStoreException - если хранилище ключей не было инициализировано или запись не может быть удалена.

aliases

public final Enumeration<String> aliases() throws KeyStoreException
Перечисляет все имена псевдонимов этого хранилища ключей.
Returns:
перечисление имён псевдонимов
Throws:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).

containsAlias

public final boolean containsAlias(String alias) throws KeyStoreException
Проверяет, существует ли заданный псевдоним в этом хранилище ключей.
Parameters:
alias - имя псевдонима
Returns:
true, если псевдоним существует, false в противном случае
Throws:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).

size

public final int size() throws KeyStoreException
Возвращает количество записей в этом хранилище ключей.
Returns:
количество записей в этом хранилище ключей
Throws:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).

isKeyEntry

public final boolean isKeyEntry(String alias) throws KeyStoreException
Возвращает true, если запись, идентифицируемая заданным псевдонимом, была создана вызовом setKeyEntry, или создана вызовом setEntry с PrivateKeyEntry или SecretKeyEntry.
Parameters:
alias - псевдоним записи хранилища ключей для проверки
Returns:
true, если запись, идентифицируемая заданным псевдонимом, является записью, связанной с ключом, в противном случае false.
Throws:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).

isCertificateEntry

public final boolean isCertificateEntry(String alias) throws KeyStoreException
Возвращает true, если запись, идентифицируемая заданным псевдонимом, была создана вызовом setCertificateEntry, или создана вызовом setEntry с TrustedCertificateEntry.
Parameters:
alias - псевдоним записи хранилища ключей для проверки
Returns:
true, если запись, идентифицируемая заданным псевдонимом, содержит доверенный сертификат, в противном случае false.
Throws:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).

getCertificateAlias

public final String getCertificateAlias(Certificate cert) throws KeyStoreException
Возвращает имя (псевдоним) первой записи хранилища ключей, сертификат которой совпадает с заданным сертификатом.

Этот метод пытается сопоставить заданный сертификат с каждой записью хранилища ключей. Если запись, рассматриваемая в настоящее время, была создана вызовом setCertificateEntry, или создана вызовом setEntry с TrustedCertificateEntry, то заданный сертификат сравнивается с сертификатом этой записи.

Если запись, рассматриваемая в настоящее время, была создана вызовом setKeyEntry, или создана вызовом setEntry с PrivateKeyEntry, то заданный сертификат сравнивается с первым элементом цепочки сертификатов этой записи.

Parameters:
cert - сертификат для сопоставления.
Returns:
имя псевдонима первой записи с соответствующим сертификатом, или null, если такая запись не существует в этом хранилище ключей.
Throws:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).

store

public final void store(OutputStream stream, char[] password) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
Сохраняет это хранилище ключей в заданный выходной поток и защищает его целостность заданным паролем.
Parameters:
stream - выходной поток, в который записывается это хранилище ключей.
password - пароль для проверки целостности хранилища ключей
Throws:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).
IOException - если возникла проблема с вводом/выводом данных
NoSuchAlgorithmException - если не удалось найти соответствующий алгоритм целостности данных
CertificateException - если любой из сертификатов, включённых в данные хранилища ключей, не удалось сохранить

store

public final void store(KeyStore.LoadStoreParameter param) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
Сохраняет это хранилище ключей с использованием заданного LoadStoreParameter.
Parameters:
param - LoadStoreParameter, который определяет, как сохранить хранилище ключей, которое может быть null
Throws:
IllegalArgumentException - если заданный входной LoadStoreParameter не распознан
KeyStoreException - если хранилище ключей не было инициализировано (загружено)
IOException - если возникла проблема с вводом/выводом данных
NoSuchAlgorithmException - если не удалось найти соответствующий алгоритм целостности данных
CertificateException - если любой из сертификатов, включённых в данные хранилища ключей, не удалось сохранить
UnsupportedOperationException - если эта операция не поддерживается
Since:
1.5

load

public final void load(InputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException
Загружает это хранилище ключей из заданного входного потока.

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

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

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

Parameters:
stream - входной поток, из которого загружается хранилище ключей, или null
password - пароль, используемый для проверки целостности хранилища ключей, пароль, используемый для разблокировки хранилища ключей, или null
Throws:
IOException - если возникла проблема с вводом/выводом или форматом данных хранилища ключей, если пароль требуется, но не задан, или заданный пароль был неверным. Если ошибка вызвана неправильным паролем, cause IOException должен быть UnrecoverableKeyException
NoSuchAlgorithmException - если алгоритм проверки целостности хранилища ключей не найден
CertificateException - если любой из сертификатов в хранилище ключей не удалось загрузить

load

public final void load(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
Загружает это хранилище ключей с использованием заданного LoadStoreParameter.

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

Parameters:
param - LoadStoreParameter, который определяет, как загрузить хранилище ключей, которое может быть null
Throws:
IllegalArgumentException - если заданный входной LoadStoreParameter не распознан
IOException - если возникла проблема с вводом/выводом или форматом данных хранилища ключей. Если ошибка вызвана неправильным ProtectionParameter (например, неправильный пароль), то cause IOException должен быть UnrecoverableKeyException
NoSuchAlgorithmException - если алгоритм проверки целостности хранилища ключей не найден
CertificateException - если любой из сертификатов в хранилище ключей не удалось загрузить
Since:
1.5

getEntry

public final KeyStore.Entry getEntry(String alias, KeyStore.ProtectionParameter protParam) throws NoSuchAlgorithmException, UnrecoverableEntryException, KeyStoreException
Получает хранилище ключей Entry для указанного алиаса с указанными параметрами защиты.
Parameters:
alias - получить хранилище ключей Entry для этого алиаса
protParam - используемые для защиты Entry, которые могут быть null
Returns:
хранилище ключей Entry для указанного алиаса или null , если такой записи нет
Throws:
NullPointerException - если alias является null
NoSuchAlgorithmException - если алгоритм извлечения записи не найден
UnrecoverableEntryException - если указанные protParam были недостаточными или невалидными
UnrecoverableKeyException - если запись является PrivateKeyEntry или SecretKeyEntry , а указанные protParam не содержат необходимой информации для восстановления ключа (например, неправильный пароль)
KeyStoreException - если хранилище ключей не было инициализировано (загружено).
Since:
1.5
See Also:
  • setEntry(String, KeyStore.Entry, KeyStore.ProtectionParameter)

setEntry

public final void setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam) throws KeyStoreException
Сохраняет хранилище ключей Entry под указанным алиасом. Параметр защиты используется для защиты Entry.

Если запись для указанного алиаса уже существует, она перезаписывается.

Parameters:
alias - сохранить хранилище ключей Entry под этим алиасом
entry - сохраняемая Entry
protParam - используемые для защиты Entry, которые могут быть null
Throws:
NullPointerException - если alias или entry является null
KeyStoreException - если хранилище ключей не было инициализировано (загружено), или если эта операция завершилась неудачно по какой-либо другой причине
Since:
1.5
See Also:
  • getEntry(String, KeyStore.ProtectionParameter)

entryInstanceOf

public final boolean entryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass) throws KeyStoreException
Определяет, является ли хранилище ключей Entry для указанного alias экземпляром или подклассом указанного entryClass.
Parameters:
alias - имя алиаса
entryClass - класс записи
Returns:
true, если хранилище ключей Entry для указанного alias является экземпляром или подклассом указанного entryClass, иначе false
Throws:
NullPointerException - если alias или entryClass является null
KeyStoreException - если хранилище ключей не было инициализировано (загружено)
Since:
1.5

getInstance

public static final KeyStore getInstance(File file, char[] password) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
Возвращает загруженный объект хранилища ключей соответствующего типа. Сначала тип хранилища определяется путем запроса указанного файла. Затем объект хранилища ключей создается и загружается с использованием данных из этого файла.

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

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

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

Parameters:
file - файл хранилища ключей
password - пароль хранилища ключей, который может быть null
Returns:
объект хранилища ключей, загруженный с данными хранилища ключей
Throws:
KeyStoreException - если ни один поставщик не поддерживает реализацию KeyStoreSpi для указанного файла хранилища ключей.
IOException - если есть проблема с вводом/выводом или форматом данных хранилища ключей, если пароль требуется, но не предоставлен, или если предоставленный пароль был неверным. Если ошибка вызвана неправильным паролем, cause IOException должен быть UnrecoverableKeyException.
NoSuchAlgorithmException - если алгоритм проверки целостности хранилища ключей не найден.
CertificateException - если какой-либо из сертификатов в хранилище не удалось загрузить.
IllegalArgumentException - если файл не существует или не относится к обычному файлу.
NullPointerException - если файл null.
SecurityException - если существует менеджер безопасности, и его метод SecurityManager.checkRead(java.io.FileDescriptor) запрещает чтение указанного файла.
Since:
9
See Also:
  • Provider

getInstance

public static final KeyStore getInstance(File file, KeyStore.LoadStoreParameter param) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
Возвращает загруженный объект хранилища ключей соответствующего типа. Сначала тип хранилища определяется путем запроса указанного файла. Затем объект хранилища ключей создается и загружается с использованием данных из этого файла. Можно указать LoadStoreParameter, который определяет, как разблокировать данные хранилища или выполнить проверку целостности.

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

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

Parameters:
file - файл хранилища ключей
param - LoadStoreParameter , который определяет, как загрузить хранилище ключей, которое может быть null
Returns:
объект хранилища ключей, загруженный с данными хранилища ключей
Throws:
KeyStoreException - если ни один поставщик не поддерживает реализацию KeyStoreSpi для указанного файла хранилища ключей.
IOException - если есть проблема с вводом/выводом или форматом данных хранилища ключей. Если ошибка вызвана неправильным ProtectionParameter, (например, неправильный пароль), cause IOException должен быть UnrecoverableKeyException.
NoSuchAlgorithmException - если алгоритм проверки целостности хранилища ключей не найден.
CertificateException - если какой-либо из сертификатов в хранилище не удалось загрузить.
IllegalArgumentException - если файл не существует или не относится к обычному файлу, или если параметр не распознан.
NullPointerException - если файл null.
SecurityException - если существует менеджер безопасности, и его метод SecurityManager.checkRead(java.io.FileDescriptor) запрещает чтение указанного файла.
Since:
9
See Also:
  • Provider

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/security/KeyStore.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API