Сигнатура класса
public abstract class Signature extends SignatureSpi
Signature предоставляет приложениям функциональность алгоритма цифровой подписи. Цифровые подписи используются для аутентификации и обеспечения целостности цифровых данных. Алгоритмом подписи может быть, среди прочего, стандарт DSA NIST с использованием 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 SecureRandom |
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 | Модификатор и тип | Метод | Описание |
|---|---|---|
protected abstract Object |
engineGetParameter |
Устарело. |
protected AlgorithmParameters |
engineGetParameters() |
Возвращает параметры, используемые с этим объектом Signature. |
protected abstract void |
engineInitSign |
Инициализирует этот объект Signature указанным закрытым ключом для выполнения операций подписания. |
protected void |
engineInitSign |
Инициализирует этот объект Signature указанным закрытым ключом и источником случайных чисел для выполнения операций подписания. |
protected abstract void |
engineInitVerify |
Инициализирует этот объект Signature указанным открытым ключом для выполнения операций проверки. |
protected abstract void |
engineSetParameter |
Устарело. Заменен методом engineSetParameter. |
protected void |
engineSetParameter |
Инициализирует этот объект Signature указанными значениями параметров. |
protected abstract byte[] |
engineSign() |
Возвращает байты подписи для всех данных, обновленных к этому моменту. |
protected int |
engineSign |
Завершает операцию подписи и сохраняет полученные байты подписи в предоставленном буфере outbuf, начиная с позиции offset. |
protected abstract void |
engineUpdate |
Обновляет данные, которые необходимо подписать или проверить, используя указанный байт. |
protected abstract void |
engineUpdate |
Обновляет данные, которые необходимо подписать или проверить, используя указанный массив байтов, начиная с указанного смещения. |
protected void |
engineUpdate |
Обновляет данные, которые необходимо подписать или проверить, используя указанный ByteBuffer. |
protected abstract boolean |
engineVerify |
Проверяет переданную подпись. |
protected boolean |
engineVerify |
Проверяет переданную подпись в указанном массиве байтов, начиная с указанного смещения. |
Методы, объявленные в классе Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация устарела и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать, пока он не будет разбужен, обычно посредством вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать, пока он не будет разбужен, обычно посредством вызова notify или interrupt, либо пока не истечет определенный интервал реального времени. |
final void |
wait |
Заставляет текущий поток ожидать, пока он не будет разбужен, обычно посредством вызова notify или interrupt, либо пока не истечет определенный интервал реального времени. |
Подробное описание полей
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 Reference Implementation дополнительно использует следующие свойства безопасности:
- свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Этот порядок может отличаться от порядка поставщиков, возвращаемых методомSecurity.getProviders(). - свойство
jdk.crypto.disabledAlgorithmsSecurityдля определения того, разрешён ли указанный алгоритм. Если задано значениеjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности.
- свойство
- Параметры:
-
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().
- Примечание по реализации:
- Реализация JDK Reference Implementation дополнительно использует свойство
jdk.crypto.disabledAlgorithmsSecurityдля определения того, разрешён ли указанный алгоритм. Если задано значениеjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности. - Параметры:
-
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 указанного поставщика. Обратите внимание, что указанный поставщик не обязательно должен быть зарегистрирован в списке поставщиков.
- Примечание по реализации:
- Реализация JDK Reference Implementation дополнительно использует свойство
jdk.crypto.disabledAlgorithmsSecurityдля определения того, разрешён ли указанный алгоритм. Если задано значениеjdk.crypto.disabledAlgorithms, оно имеет приоритет над значением свойства безопасности. - Параметры:
-
algorithm— имя запрошенного алгоритма. Сведения о стандартных именах алгоритмов см. в разделе Signature документа «Спецификация стандартных имён алгоритмов безопасности Java». -
provider— поставщик. - Возвращает:
- новый объект
Signature - Исключения:
-
IllegalArgumentException— если поставщик равенnull -
NoSuchAlgorithmException— если указанный объектProviderне предоставляет реализациюSignatureSpiдля указанного алгоритма -
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, содержит поле расширения использование ключа, помеченное как критическое, и значение этого поля расширения использование ключа указывает, что открытый ключ в сертификате и соответствующий ему закрытый ключ не предназначены для использования в цифровых подписях, возникает исключение 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.
setParameter.