Подпись класса
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 алгоритмы:
SHA1withDSASHA256withDSASHA1withRSASHA256withRSA
- 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
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
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 |
Проверяет переданную подпись в указанном массиве байтов, начиная с указанного смещения. |
Методы, объявленные в классе java.security.SignatureSpi
engineGetParameter, engineGetParameters, engineInitSign, engineInitSign, engineInitVerify, engineSetParameter, engineSetParameter, engineSign, engineSign, engineUpdate, engineUpdate, engineUpdate, engineVerify, engineVerify
Подробное описание полей
НЕИНИЦИАЛИЗИРОВАННЫЙ
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.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Параметры:
-
algorithm- стандартное имя запрашиваемого алгоритма. См. раздел «Подписи» в Спецификации имен стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов. - Возвращает:
- новый объект
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- имя запрашиваемого алгоритма. См. раздел «Подписи» в Спецификации имен стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов. -
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- имя запрашиваемого алгоритма. См. раздел «Подписи» в Спецификации имен стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов. -
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, помеченное как критическое, и значение поля расширения 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
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:
setParameter
public final void setParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
Signature объект с указанными значениями параметров.- Parameters:
-
params- значения параметров - Throws:
-
InvalidAlgorithmParameterException- если заданные значения параметров не подходят для этогоSignatureобъекта - See Also:
getParameters
public final AlgorithmParameters getParameters()
Signature объектом. Возвращаемые параметры могут быть теми же, что использовались для инициализации этого Signature объекта, или могут содержать дополнительные значения параметров по умолчанию или случайные значения параметров, используемые базовым алгоритмом подписи. Если необходимые параметры не были предоставлены и могут быть сгенерированы объектом Signature, возвращаются сгенерированные параметры; в противном случае возвращается null.
Однако, если алгоритм подписи не поддерживает возврат параметров в виде AlgorithmParameters, всегда возвращается null.
- Returns:
- параметры, используемые с этим
Signatureобъектом, илиnull - Throws:
-
UnsupportedOperationException- если провайдер не поддерживает этот метод - Since:
- 1.4
- See Also:
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, 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
setParameter.