Spec-Zone.ru › OpenJDK 21

Подпись класса

java.lang.Object
java.security.SignatureSpi
java.security.Signature
public abstract class Signature extends SignatureSpi
Класс Signature используется для предоставления приложениям функциональности алгоритма цифровой подписи. Цифровые подписи используются для проверки подлинности и обеспечения целостности цифровых данных.

Алгоритм подписи может быть, среди прочего, стандартом NIST DSA, используя DSA и SHA-256. Алгоритм DSA с использованием алгоритма дайджеста сообщений SHA-256 может быть указан как SHA256withDSA. В случае RSA алгоритм подписи может быть указан, например, как SHA256withRSA. Имя алгоритма должно быть указано, так как по умолчанию его нет.

Объект Signature может использоваться для генерации и проверки цифровых подписей.

Использование объекта Signature для подписи данных или проверки подписи состоит из трех фаз:

  1. Инициализация с помощью:
    • открытого ключа, который инициализирует подпись для проверки (см. initVerify), или
    • закрытого ключа (и необязательно генератора псевдослучайных чисел), который инициализирует подпись для подписи (см. initSign(PrivateKey) и initSign(PrivateKey, SecureRandom)).
  2. Обновление

    В зависимости от типа инициализации, это будет обновлять байты для подписи или проверки. См. методы update.

  3. Подпись или проверка подписи на всех обновленных байтах. См. методы sign и метод verify.

Обратите внимание, что этот класс является абстрактным и расширяется из SignatureSpi по историческим причинам. Разработчики приложений должны обращать внимание только на методы, определенные в этом классе Signature; все методы в суперклассе предназначены для поставщиков криптографических сервисов, которые хотят предоставить собственные реализации алгоритмов цифровых подписей.

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

  • SHA1withDSA
  • SHA256withDSA
  • SHA1withRSA
  • SHA256withRSA
Эти алгоритмы описаны в разделе Подписи спецификации стандартных имен алгоритмов Java Security. Обратитесь к документации выпуска вашей реализации, чтобы узнать, какие другие алгоритмы поддерживаются.
Since:
1.1

Краткое описание полей

Модификатор и тип Поле Описание
protected static final int SIGN
Возможная state значение, означающее, что этот объект Signature был инициализирован для подписи.
protected int state
Текущее состояние объекта Signature.
protected static final int UNINITIALIZED
Возможная state значение, означающее, что этот объект Signature еще не был инициализирован.
protected static final int VERIFY
Возможная state значение, означающее, что этот объект Signature был инициализирован для проверки.

Поля, объявленные в классе java.security.SignatureSpi

appRandom

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

Signature(String algorithm)
Модификатор Конструктор Описание
protected
Создает объект Signature для указанного алгоритма.

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

Модификатор и тип Метод Описание
Object clone()
Возвращает клон, если реализация клонируема.
final String getAlgorithm()
Возвращает имя алгоритма для данного объекта Signature.
static Signature getInstance(String algorithm)
Возвращает объект Signature, который реализует указанный алгоритм подписи.
static Signature getInstance(String algorithm, String provider)
Возвращает объект Signature, который реализует указанный алгоритм подписи.
static Signature getInstance(String algorithm, Provider provider)
Возвращает объект Signature, который реализует указанный алгоритм подписи.
final Object getParameter(String param)
Устарело.
final AlgorithmParameters getParameters()
Возвращает параметры, используемые с этим объектом Signature.
final Provider getProvider()
Возвращает поставщика этого объекта Signature.
final void initSign(PrivateKey privateKey)
Инициализирует этот объект для подписи.
final void initSign(PrivateKey privateKey, SecureRandom random)
Инициализирует этот объект для подписи.
final void initVerify(Certificate certificate)
Инициализирует этот объект для проверки, используя открытый ключ из данного сертификата.
final void initVerify(PublicKey publicKey)
Инициализирует этот объект для проверки.
final void setParameter(String param, Object value)
Устарело.
Используйте setParameter.
final void setParameter(AlgorithmParameterSpec params)
Инициализирует этот объект Signature с указанными значениями параметров.
final byte[] sign()
Возвращает байты подписи всех обновленных данных.
final int sign(byte[] outbuf, int offset, int len)
Завершает операцию подписи и сохраняет полученные байты подписи в предоставленном буфере outbuf, начиная с offset.
String toString()
Возвращает строковое представление этого объекта Signature, предоставляя информацию, которая включает состояние объекта и имя используемого алгоритма.
final void update(byte b)
Обновляет данные для подписи или проверки с помощью байта.
final void update(byte[] data)
Обновляет данные для подписи или проверки, используя указанный массив байтов.
final void update(byte[] data, int off, int len)
Обновляет данные для подписи или проверки, используя указанный массив байтов, начиная с указанного смещения.
final void update(ByteBuffer data)
Обновляет данные для подписи или проверки, используя указанный ByteBuffer.
final boolean verify(byte[] signature)
Проверяет переданную подпись.
final boolean verify(byte[] signature, int offset, int length)
Проверяет переданную подпись в указанном массиве байтов, начиная с указанного смещения.

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

engineGetParameter, engineGetParameters, engineInitSign, engineInitSign, engineInitVerify, engineSetParameter, engineSetParameter, engineSign, engineSign, engineUpdate, engineUpdate, engineUpdate, engineVerify, engineVerify

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

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

Подробное описание полей

НЕИНИЦИАЛИЗИРОВАННЫЙ

protected static final int UNINITIALIZED
Возможная state значение, указывающее, что этот Signature объект еще не был инициализирован.
См. также:
  • Значения константных полей

SIGN

protected static final int SIGN
Возможная state значение, указывающее, что этот Signature объект был инициализирован для подписи.
См. также:
  • Значения константных полей

VERIFY

protected static final int VERIFY
Возможная state значение, указывающее, что этот Signature объект был инициализирован для проверки.
См. также:
  • Значения константных полей

состояние

protected int state
Текущее состояние этого Signature объекта.

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

Подпись

protected Signature(String algorithm)
Создает объект Signature для указанного алгоритма.
Параметры:
algorithm - стандартное строковое имя алгоритма. См. раздел «Подписи» в Спецификации имен стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов.

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

getInstance

public static Signature getInstance(String algorithm) throws NoSuchAlgorithmException
Возвращает объект Signature , реализующий указанный алгоритм подписи.

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

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

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

getInstance

public static Signature getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Возвращает объект Signature , реализующий указанный алгоритм подписи.

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

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

Параметры:
algorithm - имя запрашиваемого алгоритма. См. раздел «Подписи» в Спецификации имен стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов.
provider - имя поставщика.
Возвращает:
новый объект Signature
Исключения:
IllegalArgumentException - если имя поставщика является null или пустым
NoSuchAlgorithmException - если реализация SignatureSpi для указанного алгоритма недоступна от указанного поставщика
NoSuchProviderException - если указанный поставщик не зарегистрирован в списке поставщиков безопасности
NullPointerException - если algorithm является null
См. также:
  • Provider

getInstance

public static Signature getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
Возвращает объект Signature , реализующий указанный алгоритм подписи.

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

Параметры:
algorithm - имя запрашиваемого алгоритма. См. раздел «Подписи» в Спецификации имен стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов.
provider - поставщик.
Возвращает:
новый объект Signature
Исключения:
IllegalArgumentException - если поставщик является null
NoSuchAlgorithmException - если реализация SignatureSpi для указанного алгоритма недоступна от указанного объекта Provider
NullPointerException - если algorithm является null
С тех пор:
1.4
См. также:
  • Provider

getProvider

public final Provider getProvider()
Возвращает поставщика этого объекта Signature.
Возвращает:
поставщик этого объекта Signature

initVerify

public final void initVerify(PublicKey publicKey) throws InvalidKeyException
Инициализирует этот объект для проверки. Если этот метод вызывается снова с другим аргументом, он аннулирует эффект этого вызова.
Параметры:
publicKey - открытый ключ идентичности, чья подпись будет проверяться.
Исключения:
InvalidKeyException - если ключ недействителен.

initVerify

public final void initVerify(Certificate certificate) throws InvalidKeyException
Инициализирует этот объект для проверки, используя открытый ключ из данного сертификата.

Если сертификат типа X.509 и имеет поле расширения key usage, помеченное как критическое, и значение поля расширения key usage подразумевает, что открытый ключ в сертификате и соответствующий ему закрытый ключ не должны использоваться для цифровых подписей, выбрасывается InvalidKeyException.

Параметры:
certificate - сертификат идентичности, чья подпись будет проверяться.
Исключения:
InvalidKeyException - если открытый ключ в сертификате закодирован неправильно или не содержит необходимую информацию о параметрах или не может быть использован для целей цифровой подписи.
С тех пор:
1.3

initSign

public final void initSign(PrivateKey privateKey) throws InvalidKeyException
Инициализирует этот объект для подписи. Если этот метод вызывается снова с другим аргументом, он аннулирует эффект этого вызова.
Параметры:
privateKey - закрытый ключ идентичности, чья подпись будет генерироваться.
Исключения:
InvalidKeyException - если ключ недействителен.

initSign

public final void initSign(PrivateKey privateKey, SecureRandom random) throws InvalidKeyException
Инициализирует этот объект для подписи. Если этот метод вызывается снова с другим аргументом, он аннулирует эффект этого вызова.
Параметры:
privateKey - закрытый ключ идентичности, чья подпись будет генерироваться
random - источник случайности для этого объекта Signature
Исключения:
InvalidKeyException - если ключ недействителен.

sign

public final byte[] sign() throws SignatureException
Возвращает байты подписи всех обновленных данных. Формат подписи зависит от базовой схемы подписи.

Вызов этого метода сбрасывает этот объект Signature в состояние, в котором он находился при предыдущей инициализации для подписи через вызов initSign(PrivateKey). То есть, объект сбрасывается и доступен для генерации другой подписи от того же подписывающего лица, если необходимо, с помощью новых вызовов update и sign.

Возвращает:
байты подписи результата операции подписи.
Исключения:
SignatureException - если этот объект Signature не инициализирован должным образом или если этот алгоритм подписи не может обработать предоставленные входные данные.

sign

public final int sign(byte[] outbuf, int offset, int len) throws SignatureException
Завершает операцию подписи и сохраняет полученные байты подписи в предоставленном буфере outbuf, начиная с offset. Формат подписи зависит от используемого алгоритма подписи.

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

Parameters:
outbuf - буфер для результата подписи.
offset - смещение в outbuf для хранения подписи.
len - количество байтов в outbuf, выделенных для подписи.
Returns:
количество байтов, помещенных в outbuf.
Throws:
SignatureException - если этот Signature объект не инициализирован должным образом, если этот алгоритм подписи не может обработать предоставленные входные данные или если len меньше фактической длины подписи.
IllegalArgumentException - если outbuf имеет значение null, или offset или len меньше 0, или сумма offset и len больше длины outbuf.
Since:
1.2

verify

public final boolean verify(byte[] signature) throws SignatureException
Проверяет переданную подпись.

Вызов этого метода сбрасывает этот Signature объект до состояния, в котором он находился при предыдущей инициализации для проверки с помощью вызова initVerify(PublicKey). То есть, объект сбрасывается и готов к проверке другой подписи от идентификатора, открытый ключ которого был указан в вызове initVerify.

Parameters:
signature - байты подписи для проверки.
Returns:
true если подпись проверена, false если нет.
Throws:
SignatureException - если этот Signature объект не инициализирован должным образом, переданная подпись закодирована некорректно или имеет неправильный тип, если этот алгоритм подписи не может обработать предоставленные входные данные и т.д.

verify

public final boolean verify(byte[] signature, int offset, int length) throws SignatureException
Проверяет переданную подпись в указанном массиве байтов, начиная с указанного смещения.

Вызов этого метода сбрасывает этот Signature объект до состояния, в котором он находился при предыдущей инициализации для проверки с помощью вызова initVerify(PublicKey). То есть, объект сбрасывается и готов к проверке другой подписи от идентификатора, открытый ключ которого был указан в вызове initVerify.

Parameters:
signature - байты подписи для проверки.
offset - смещение для начала в массиве байтов.
length - количество байтов для использования, начиная со смещения.
Returns:
true если подпись проверена, false если нет.
Throws:
SignatureException - если этот Signature объект не инициализирован должным образом, переданная подпись закодирована некорректно или имеет неправильный тип, если этот алгоритм подписи не может обработать предоставленные входные данные и т.д.
IllegalArgumentException - если массив байтов signature пуст, или offset или length меньше 0, или сумма offset и length больше длины массива байтов signature.
Since:
1.4

update

public final void update(byte b) throws SignatureException
Обновляет данные для подписи или проверки с помощью одного байта.
Parameters:
b - байт для обновления.
Throws:
SignatureException - если этот Signature объект не инициализирован должным образом.

update

public final void update(byte[] data) throws SignatureException
Обновляет данные для подписи или проверки, используя указанный массив байтов.
Parameters:
data - массив байтов для обновления.
Throws:
SignatureException - если этот Signature объект не инициализирован должным образом.

update

public final void update(byte[] data, int off, int len) throws SignatureException
Обновляет данные для подписи или проверки, используя указанный массив байтов, начиная с указанного смещения.
Parameters:
data - массив байтов.
off - смещение для начала в массиве байтов.
len - количество байтов для использования, начиная со смещения.
Throws:
SignatureException - если этот Signature объект не инициализирован должным образом.
IllegalArgumentException - если data пуст, или off или len меньше 0, или сумма off и len больше длины data.

update

public final void update(ByteBuffer data) throws SignatureException
Обновляет данные для подписи или проверки, используя указанный ByteBuffer. Обрабатывает data.remaining() байты, начиная с data.position(). После возврата позиция буфера будет равна его пределу; его предел не изменится.
Parameters:
data - ByteBuffer
Throws:
SignatureException - если этот Signature объект не инициализирован должным образом.
Since:
1.5

getAlgorithm

public final String getAlgorithm()
Возвращает имя алгоритма для этого Signature объекта.
Returns:
имя алгоритма для этого Signature объекта.

toString

public String toString()
Возвращает строковое представление этого Signature объекта, предоставляя информацию, которая включает состояние объекта и имя используемого алгоритма.
Overrides:
toString в классе Object
Returns:
строковое представление этого Signature объекта.

setParameter

@Deprecated public final void setParameter(String param, Object value) throws InvalidParameterException
Устарело.
Используйте setParameter.
Устанавливает указанный параметр алгоритма в указанное значение. Этот метод предоставляет общий механизм, с помощью которого можно установить различные параметры этого объекта. Параметр может быть любым настраиваемым параметром для алгоритма, таким как размер параметра или источник случайных бит для генерации подписи (если это уместно), или указание на выполнение конкретного, но необязательного вычисления. Желательно, но не обязательно, использовать единую схему именования алгоритмов для каждого параметра.
Parameters:
param - строковый идентификатор параметра
value - значение параметра
Throws:
InvalidParameterException - если param является недопустимым параметром для этого Signature объекта, параметр уже установлен и его нельзя установить повторно, возникает исключение безопасности и так далее.
See Also:
  • getParameter(java.lang.String)

setParameter

public final void setParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
Инициализирует этот Signature объект с указанными значениями параметров.
Parameters:
params - значения параметров
Throws:
InvalidAlgorithmParameterException - если заданные значения параметров не подходят для этого Signature объекта
See Also:
  • getParameters()

getParameters

public final AlgorithmParameters getParameters()
Возвращает параметры, используемые с этим Signature объектом.

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

Однако, если алгоритм подписи не поддерживает возврат параметров в виде AlgorithmParameters, всегда возвращается null.

Returns:
параметры, используемые с этим Signature объектом, или null
Throws:
UnsupportedOperationException - если провайдер не поддерживает этот метод
Since:
1.4
See Also:
  • setParameter(AlgorithmParameterSpec)

getParameter

@Deprecated public final Object getParameter(String param) throws InvalidParameterException
Устарело.
Возвращает значение указанного параметра алгоритма. Этот метод предоставляет универсальный механизм получения различных параметров этого объекта. Параметром может быть любое устанавливаемое свойство алгоритма, например, размер параметра или источник случайных битов для генерации подписи (если применимо), или указание на выполнение определённого, но необязательного вычисления. Желательно использовать единую схему именования параметров для каждого алгоритма, но на данный момент она не определена.
Параметры:
param - строковое имя параметра.
Возвращает:
объект, представляющий значение параметра, или null если его нет.
Исключения:
InvalidParameterException - если param является недопустимым параметром для данного движка или произошла другая ошибка при попытке получения этого параметра.
См. также:
  • setParameter(String, Object)

clone

public Object clone() throws CloneNotSupportedException
Возвращает клон, если реализация поддерживает клонирование.
Переопределяет:
clone в классе SignatureSpi
Возвращает:
клон, если реализация поддерживает клонирование.
Исключения:
CloneNotSupportedException - если этот метод вызван для реализации, которая не поддерживает Cloneable.
См. также:
  • Cloneable

© 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/Signature.html

Spec-Zone.ru

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