Класс KeyStore

public class KeyStore
extends Object

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

A 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
Этот тип описан в разделе KeyStore спецификации Java Security Standard Algorithm Names. Обратитесь к документации выпуска вашей реализации, чтобы узнать, поддерживаются ли какие-либо другие типы.
С момента:
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

Маркерный интерфейс для параметров KeyStore load и store.

static class  KeyStore.PasswordProtection

Реализация ProtectionParameter на основе пароля.

static class  KeyStore.PrivateKeyEntry

Запись KeyStore содержащая PrivateKey и соответствующую цепочку сертификатов.

static interface  KeyStore.ProtectionParameter

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

static class  KeyStore.SecretKeyEntry

Запись KeyStore содержащая SecretKey.

static class  KeyStore.TrustedCertificateEntry

Запись KeyStore содержащая доверенный Certificate.

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

Модификатор Конструктор Описание
protected KeyStore​(KeyStoreSpi keyStoreSpi, Provider provider, String type)

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

Методы

Модификатор и тип Метод Описание
Enumeration<String> aliases()

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

boolean containsAlias​(String alias)

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

void deleteEntry​(String alias)

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

boolean entryInstanceOf​(String alias, Class<? extends KeyStore.Entry> entryClass)

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

Certificate getCertificate​(String alias)

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

String getCertificateAlias​(Certificate cert)

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

Certificate[] getCertificateChain​(String alias)

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

Date getCreationDate​(String alias)

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

static String getDefaultType()

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

KeyStore.Entry getEntry​(String alias, KeyStore.ProtectionParameter protParam)

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

static KeyStore getInstance​(File file, char[] password)

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

static 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)

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

Key getKey​(String alias, char[] password)

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

Provider getProvider()

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

String getType()

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

boolean isCertificateEntry​(String alias)

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

boolean isKeyEntry​(String alias)

Возвращает true, если запись, идентифицированная заданным псевдонимом, была создана вызовом setKeyEntry, или создана вызовом setEntry со значением PrivateKeyEntry или SecretKeyEntry.

void load​(InputStream stream, char[] password)

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

void load​(KeyStore.LoadStoreParameter param)

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

void setCertificateEntry​(String alias, Certificate cert)

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

void setEntry​(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam)

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

void setKeyEntry​(String alias, byte[] key, Certificate[] chain)

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

void setKeyEntry​(String alias, Key key, char[] password, Certificate[] chain)

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

int size()

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

void store​(OutputStream stream, char[] password)

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

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

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 - пароль для генерации проверки целостности хранилища ключей
Исключения:
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 - если любой из сертификатов, включенных в данные хранилища ключей, не был сохранен
Since:
1.5

load

public final void load(InputStream stream,
                       char[] password)
                throws IOException,
                       NoSuchAlgorithmException,
                       CertificateException

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

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

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

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

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

load

public final void load(KeyStore.LoadStoreParameter param)
                throws IOException,
                       NoSuchAlgorithmException,
                       CertificateException

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

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

Параметры:
param - LoadStoreParameter, который определяет способ загрузки хранилища ключей, который может быть null
Исключения:
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

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

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

setEntry

public final void setEntry(String alias,
                           KeyStore.Entry entry,
                           KeyStore.ProtectionParameter protParam)
                    throws KeyStoreException

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

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

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

entryInstanceOf

public final boolean entryInstanceOf(String alias,
                                     Class<? extends KeyStore.Entry> entryClass)
                              throws KeyStoreException

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

Параметры:
alias - имя псевдонима
entryClass - класс записи
Возвращает:
true, если хранилище ключей Entry для указанного alias является экземпляром или подклассом указанного entryClass, иначе false
Выбрасывает:
NullPointerException - если alias или entryClass null
KeyStoreException - если хранилище ключей не было инициализировано (загружено)
С:
1.5

getInstance

public static final KeyStore getInstance(File file,
                                         char[] password)
                                  throws KeyStoreException,
                                         IOException,
                                         NoSuchAlgorithmException,
                                         CertificateException

Возвращает загруженный объект хранилища ключей соответствующего типа. Сначала определяется тип хранилища ключей путем проверки указанного файла. Затем создаётся объект хранилища ключей и загружаются данные из этого файла.

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

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

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

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

getInstance

public static final KeyStore getInstance(File file,
                                         KeyStore.LoadStoreParameter param)
                                  throws KeyStoreException,
                                         IOException,
                                         NoSuchAlgorithmException,
                                         CertificateException

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

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

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

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

© 1993, 2020, 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/11/docs/api/java.base/java/security/KeyStore.html

Spec-Zone .ru
спецификации, руководства, описания, API