Spec-Zone.ru › OpenJDK 25

Сигнатура класса

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. Для алгоритма "RSASSA-PSS" реализации должны поддерживать параметры, указанные в скобках. Для алгоритмов "SHA256withECDSA" и "SHA384withECDSA" реализации должны поддерживать кривые, указанные в скобках.

  • RSASSA-PSS (функция генерации маски MGF1 и алгоритмы хеширования SHA-256 или SHA-384)
  • SHA1withDSA
  • SHA256withDSA
  • SHA256withECDSA (secp256r1)
  • SHA384withECDSA (secp384r1)
  • SHA1withRSA
  • SHA256withRSA
  • SHA384withRSA
Описание этих алгоритмов приведено в разделе «Алгоритмы подписи» спецификации стандартных имен алгоритмов безопасности Java. Ознакомьтесь с документацией к выпуску вашей реализации, чтобы узнать, поддерживаются ли какие-либо другие алгоритмы.
Начиная с:
1.1
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java

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

Модификатор и тип Поле Описание
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 инициализирован для проверки.

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

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

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

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

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

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

UNINITIALIZED

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

SIGN

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

VERIFY

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

state

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

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

Signature

protected Signature(String algorithm)
Создаёт объект Signature для указанного алгоритма.
Параметры:
algorithm — стандартное строковое имя алгоритма. Сведения о стандартных именах алгоритмов см. в разделе Signature документа Спецификация стандартных имён алгоритмов безопасности Java.
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java

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

getInstance

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

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

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

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

getInstance

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

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

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

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

getInstance

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

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

Параметры:
algorithm — имя запрашиваемого алгоритма. Сведения о стандартных именах алгоритмов см. в разделе Signature документа Спецификация стандартных имён алгоритмов безопасности Java.
provider — поставщик.
Возвращает:
новый объект Signature
Выбрасывает:
IllegalArgumentException — если поставщик равен null
NoSuchAlgorithmException — если реализация SignatureSpi для указанного алгоритма недоступна у указанного объекта Provider
NullPointerException — если algorithm равно null
Начиная с:
1.4
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • 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, отмеченное как критическое, а значение этого расширения указывает, что открытый ключ сертификата и соответствующий ему закрытый ключ не должны использоваться для цифровой подписи, выбрасывается 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) и может быть повторно использован для создания других подписей с тем же закрытым ключом.

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

verify

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

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

Параметры:
signature — байты подписи, которую нужно проверить.
Возвращает:
true, если подпись прошла проверку, и false в противном случае.
Выбрасывает:
SignatureException — если этот объект Signature инициализирован неправильно, переданная подпись закодирована неправильно или имеет неверный тип, данный алгоритм подписи не может обработать предоставленные входные данные и т. д.

verify

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

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

Параметры:
signature — байты подписи, которую нужно проверить.
offset — начальное смещение в массиве байтов.
length — количество используемых байтов, начиная со смещения.
Возвращает:
true, если подпись прошла проверку, и false в противном случае.
Выбрасывает:
SignatureException — если этот объект Signature инициализирован неправильно, переданная подпись закодирована неправильно или имеет неверный тип, данный алгоритм подписи не может обработать предоставленные входные данные и т. д.
IllegalArgumentException — если массив байтов signature равен null, либо offset или length меньше 0, либо сумма offset и length превышает длину массива байтов signature.
Начиная с:
1.4

update

public final void update(byte b) throws SignatureException
Обновляет данные, которые нужно подписать или проверить, одним байтом.
Параметры:
b — байт, используемый для обновления.
Выбрасывает:
SignatureException — если этот объект Signature инициализирован неправильно.

update

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

update

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

update

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

getAlgorithm

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

toString

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

setParameter

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

setParameter

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

getParameters

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

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

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

Возвращает:
параметры, используемые этим объектом Signature, или null
Выбрасывает:
UnsupportedOperationException — если поставщик не поддерживает этот метод
Начиная с:
1.4
См. также:
  • 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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/security/Signature.html

Spec-Zone.ru

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