Сигнатура класса
public abstract class Signature extends SignatureSpi
Signature предоставляет приложениям функциональность алгоритма цифровой подписи. Цифровые подписи используются для аутентификации и подтверждения целостности цифровых данных. Алгоритмом подписи может быть, среди прочих, стандарт NIST DSA с использованием DSA и SHA-256. Алгоритм DSA с использованием алгоритма хеширования сообщений SHA-256 можно задать как SHA256withDSA. В случае RSA алгоритм подписи можно задать, например, как SHA256withRSA. Имя алгоритма необходимо указывать, поскольку значение по умолчанию отсутствует.
Объект Signature можно использовать для создания и проверки цифровых подписей.
Использование объекта Signature для подписания данных или проверки подписи состоит из трех этапов:
- Инициализация с помощью одного из следующих вариантов:
- открытого ключа, который инициализирует подпись для проверки (см.
initVerify) или - закрытого ключа (и, необязательно, генератора случайных чисел), который инициализирует подпись для подписания (см.
initSign(PrivateKey)иinitSign(PrivateKey, SecureRandom)).
- открытого ключа, который инициализирует подпись для проверки (см.
- Обновление
В зависимости от типа инициализации обновляются байты, которые необходимо подписать или проверить. См. методы
update. - Подписание или проверка подписи для всех обновленных байтов. См. методы
signи методverify.
Обратите внимание, что этот класс является абстрактным и по историческим причинам наследуется от SignatureSpi. Разработчикам приложений следует обращать внимание только на методы, определенные в этом классе Signature; все методы суперкласса предназначены для поставщиков криптографических служб, желающих предоставлять собственные реализации алгоритмов цифровой подписи.
Каждая реализация платформы Java должна поддерживать следующие стандартные алгоритмы Signature. Для алгоритма "RSASSA-PSS" реализации должны поддерживать параметры, указанные в скобках. Для алгоритмов "SHA256withECDSA" и "SHA384withECDSA" реализации должны поддерживать кривые, указанные в скобках.
-
RSASSA-PSS(функция генерации маски MGF1 и алгоритмы хеширования SHA-256 или SHA-384) SHA1withDSASHA256withDSA-
SHA256withECDSA(secp256r1) -
SHA384withECDSA(secp384r1) SHA1withRSASHA256withRSASHA384withRSA
- Начиная с:
- 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 инициализирован для проверки. |
Поля, объявленные в классе SignatureSpi
appRandom
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создает объект Signature для указанного алгоритма. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
clone() |
Возвращает клона, если реализация допускает клонирование. |
final String |
getAlgorithm() |
Возвращает имя алгоритма для этого объекта Signature. |
static Signature |
getInstance |
Возвращает объект Signature, реализующий указанный алгоритм подписи. |
static Signature |
getInstance |
Возвращает объект Signature, реализующий указанный алгоритм подписи. |
static Signature |
getInstance |
Возвращает объект Signature, реализующий указанный алгоритм подписи. |
final Object |
getParameter |
Устарело. |
final AlgorithmParameters |
getParameters() |
Возвращает параметры, используемые с этим объектом Signature. |
final Provider |
getProvider() |
Возвращает поставщика этого объекта Signature. |
final void |
initSign |
Инициализирует этот объект для подписания. |
final void |
initSign |
Инициализирует этот объект для подписания. |
final void |
initVerify |
Инициализирует этот объект для проверки, используя открытый ключ из указанного сертификата. |
final void |
initVerify |
Инициализирует этот объект для проверки. |
final void |
setParameter |
Устарело. |
final void |
setParameter |
Инициализирует этот объект Signature указанными значениями параметров. |
final byte[] |
sign() |
Возвращает байты подписи для всех обновленных данных. |
final int |
sign |
Завершает операцию подписания и сохраняет полученные байты подписи в предоставленный буфер outbuf, начиная с позиции offset. |
String |
toString() |
Возвращает строковое представление этого объекта Signature, содержащее сведения, в том числе о состоянии объекта и имени используемого алгоритма. |
final void |
update |
Обновляет данные для подписания или проверки одним байтом. |
final void |
update |
Обновляет данные для подписания или проверки указанным массивом байтов. |
final void |
update |
Обновляет данные для подписания или проверки указанным массивом байтов, начиная с заданного смещения. |
final void |
update |
Обновляет данные для подписания или проверки с помощью указанного ByteBuffer. |
final boolean |
verify |
Проверяет переданную подпись. |
final boolean |
verify |
Проверяет переданную подпись в указанном массиве байтов, начиная с заданного смещения. |
Методы, объявленные в классе SignatureSpi
engineGetParameter, engineGetParameters, engineInitSign, engineInitSign, engineInitVerify, engineSetParameter, engineSetParameter, engineSign, engineSign, engineUpdate, engineUpdate, engineUpdate, engineVerify, engineVerify
Подробное описание полей
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. - Внешние спецификации
Подробное описание методов
getInstance
public static Signature getInstance(String algorithm) throws NoSuchAlgorithmException
Signature, реализующий указанный алгоритм цифровой подписи. Этот метод перебирает список зарегистрированных поставщиков услуг безопасности, начиная с наиболее предпочтительного. Возвращается новый объект Signature, инкапсулирующий реализацию SignatureSpi от первого поставщика, поддерживающего указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание по реализации:
- Эталонная реализация JDK также использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Этот порядок может отличаться от порядка поставщиков, возвращаемых методомSecurity.getProviders(). - Параметры:
-
algorithm— стандартное имя запрашиваемого алгоритма. Сведения о стандартных именах алгоритмов см. в разделе Signature документа Спецификация стандартных имён алгоритмов безопасности Java. - Возвращает:
- новый объект
Signature - Выбрасывает:
-
NoSuchAlgorithmException— если ни одинProviderне поддерживает реализациюSignatureдля указанного алгоритма -
NullPointerException— еслиalgorithmравноnull - Внешние спецификации
- См. также:
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 - Внешние спецификации
- См. также:
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
- Внешние спецификации
- См. также:
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
data.remaining() байтов, начиная с data.position(). После возврата позиция буфера будет равна его пределу; предел не изменится.- Параметры:
-
data— ByteBuffer - Выбрасывает:
-
SignatureException— если этот объектSignatureинициализирован неправильно. - Начиная с:
- 1.5
getAlgorithm
public final String getAlgorithm()
Signature.- Возвращает:
- имя алгоритма для этого объекта
Signature.
toString
setParameter
@Deprecated public final void setParameter(String param, Object value) throws InvalidParameterException
setParameter.- Параметры:
-
param— строковый идентификатор параметра -
value— значение параметра - Выбрасывает:
-
InvalidParameterException— еслиparamявляется недопустимым параметром для этого объектаSignature, параметр уже установлен и не может быть установлен повторно, возникает исключение безопасности и т. п. - См. также:
setParameter
public final void setParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
Signature указанными значениями параметров.- Параметры:
-
params— значения параметров - Выбрасывает:
-
InvalidAlgorithmParameterException— если указанные значения параметров не подходят для этого объектаSignature - См. также:
getParameters
public final AlgorithmParameters getParameters()
Signature. Возвращённые параметры могут совпадать с параметрами, использованными для инициализации этого объекта Signature, или содержать дополнительные значения параметров по умолчанию либо случайные значения, используемые базовой схемой цифровой подписи. Если необходимые параметры не были предоставлены и могут быть сгенерированы объектом Signature, возвращаются сгенерированные параметры; в противном случае возвращается null.
Однако, если схема цифровой подписи не поддерживает возврат параметров в виде AlgorithmParameters, всегда возвращается null.
- Возвращает:
- параметры, используемые этим объектом
Signature, илиnull - Выбрасывает:
-
UnsupportedOperationException— если поставщик не поддерживает этот метод - Начиная с:
- 1.4
- См. также:
getParameter
@Deprecated public final Object getParameter(String param) throws InvalidParameterException
- Параметры:
-
param— строковое имя параметра. - Возвращает:
- объект, представляющий значение параметра, или
null, если значение отсутствует. - Выбрасывает:
-
InvalidParameterException— еслиparamявляется недопустимым параметром для этого механизма или при попытке получить этот параметр возникает другое исключение. - См. также:
clone
public Object clone() throws CloneNotSupportedException
- Переопределяет:
-
cloneв классеSignatureSpi - Возвращает:
- клон, если реализация поддерживает клонирование.
- Выбрасывает:
-
CloneNotSupportedException— если этот метод вызван для реализации, не поддерживающейCloneable. - См. также:
© 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
setParameter.