Spec-Zone.ru › OpenJDK 21

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

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

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

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

Являются ли хранилища KeyStore постоянными и какие механизмы используются хранилищем, если оно постоянно, здесь не указаны. Это позволяет использовать различные методы защиты конфиденциальных (например, закрытых или секретных) ключей. Одним из вариантов являются смарт-карты или другие интегрированные криптографические процессоры (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.PasswordProtection protParam =
        new KeyStore.PasswordProtection(password);
    try (FileOutputStream fos = new FileOutputStream("newKeyStoreName")) {
        // 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
        ks.store(fos, password);
    } finally {
        protParam.destroy();
    }
 
Обратите внимание, что хотя для загрузки хранилища можно использовать один и тот же пароль, для защиты записи закрытого ключа, для защиты записи секретного ключа и для хранения хранилища (как показано в примере кода выше), также можно использовать разные пароли или другие параметры защиты.

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

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

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

Модификатор и тип Класс Описание
static class  KeyStore.Builder
Описание объекта KeyStore, подлежащего созданию экземпляра.
static class  KeyStore.CallbackHandlerProtection
Объект ProtectionParameter, инкапсулирующий обработчик обратных вызовов (CallbackHandler).
static interface  KeyStore.Entry
Маркерный интерфейс для типов записей ввода KeyStore.
static interface  KeyStore.LoadStoreParameter
Маркерный интерфейс для параметров загрузки/сохранения load, загрузки и сохранения.
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()
Выводит все псевдонимы (alias names) этого хранилища ключей.
final boolean containsAlias(String alias)
Проверяет, существует ли заданный псевдоним (alias) в этом хранилище ключей.
final void deleteEntry(String alias)
Удаляет запись, идентифицированную заданным псевдонимом (alias), из этого хранилища ключей.
final boolean entryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass)
Определяет, является ли хранилище ключей Entry для указанного alias экземпляром или подклассом указанного entryClass.
final Set<KeyStore.Entry.Attribute> getAttributes(String alias)
Возвращает атрибуты, связанные с заданным псевдонимом.
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)
Возвращает объект KeyStore заданного типа.
static KeyStore getInstance(String type, String provider)
Возвращает объект KeyStore заданного типа.
static KeyStore getInstance(String type, Provider provider)
Возвращает объект KeyStore заданного типа.
final Key getKey(String alias, char[] password)
Возвращает ключ, связанный с заданным псевдонимом, используя указанный пароль для его извлечения.
final Provider getProvider()
Возвращает поставщика (provider) этого хранилища ключей.
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 указанного типа.

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

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

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

getInstance

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

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

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

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

getInstance

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

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

Параметры:
type - тип хранилища ключей. См. раздел KeyStore в Спецификации стандартных имён алгоритмов Java Security для получения информации о стандартных типах хранилищ ключей.
provider - поставщик.
Возвращаемое значение:
объект хранилища ключей указанного типа
Исключения:
IllegalArgumentException - если указанный поставщик null
KeyStoreException - если реализация KeyStoreSpi для указанного типа недоступна от указанного объекта Provider
NullPointerException - если type является null
См. также:
  • 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()
Возвращает тип данного хранилища ключей.
Возвращаемое значение:
тип данного хранилища ключей.

getAttributes

public final Set<KeyStore.Entry.Attribute> getAttributes(String alias) throws KeyStoreException
Извлекает атрибуты, связанные с данным псевдонимом.
Параметры:
alias - имя псевдонима
Возвращаемое значение:
неизменяемый набор Set атрибутов. Этот набор пуст, если реализация KeyStoreSpi не переопределила KeyStoreSpi.engineGetAttributes(String), или данный псевдоним не существует, или атрибуты не связаны с псевдонимом. Этот набор также может быть пустым для записей PrivateKeyEntry или SecretKeyEntry, содержащих защищённые атрибуты, которые доступны только через метод KeyStore.Entry.getAttributes() после извлечения записи.
Исключения:
KeyStoreException - если хранилище ключей не было инициализировано (загружено).
NullPointerException - если alias является null

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

setKeyEntry

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

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

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

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

setCertificateEntry

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

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

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

deleteEntry

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

aliases

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

containsAlias

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

size

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

isKeyEntry

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

isCertificateEntry

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

getCertificateAlias

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

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

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

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

store

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

store

public final void store(KeyStore.LoadStoreParameter param) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
Сохраняет это хранилище ключей с использованием заданного LoadStoreParameter.
Параметры:
param - LoadStoreParameter который определяет, как сохранить хранилище ключей, может быть null
Исключение:
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.

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

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
Получает запись хранилища ключей для указанного псевдонима с указанным параметром защиты.
Parameters:
alias - получить запись хранилища ключей для этого псевдонима
protParam - ProtectionParameter для защиты Entry, который может быть null
Returns:
запись хранилища ключей для указанного псевдонима, или 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.

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

Parameters:
alias - сохранить запись хранилища ключей под этим псевдонимом
entry - сохраняемая Entry
protParam - ProtectionParameter для защиты 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
Определяет, является ли запись хранилища ключей для указанного псевдонима экземпляром или подклассом указанного класса.
Parameters:
alias - имя псевдонима
entryClass - класс записи
Returns:
true если запись хранилища ключей для указанного псевдонима является экземпляром или подклассом указанного 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
Возвращает объект хранилища ключей соответствующего типа. Сначала тип хранилища определяется путем зондирования указанного файла. Затем объект хранилища ключей создается и загружается с использованием данных из этого файла.

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

Этот метод обходит список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного поставщика. Для каждой реализации хранилища ключей, поддерживаемой поставщиком, вызывается метод 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, 2023, 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/21/docs/api/java.base/java/security/KeyStore.html

Spec-Zone.ru

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