Подпись класса
public abstract class Signature extends SignatureSpi
Алгоритм подписи может быть, среди прочего, стандартным алгоритмом DSA NIST, использующим DSA и SHA-256. Алгоритм DSA с использованием алгоритма хеширования SHA-256 можно указать как SHA256withDSA. В случае RSA алгоритм подписи можно указать, например, как SHA256withRSA. Имя алгоритма необходимо указать, так как нет значения по умолчанию.
Объект Signature может использоваться для генерации и проверки цифровых подписей.
Существует три этапа использования объекта Signature для подписи данных или проверки подписи:
- Инициализация, с использованием либо
- открытого ключа, который инициализирует подпись для проверки (см.
initVerify), или - закрытого ключа (и необязательно генератора случайных чисел Secure Random Number Generator), который инициализирует подпись для подписи (см.
initSign(PrivateKey)иinitSign(PrivateKey, SecureRandom)).
- открытого ключа, который инициализирует подпись для проверки (см.
- Обновление
В зависимости от типа инициализации, это обновит байты для подписи или проверки. См. методы
update. - Подпись или проверка подписи на всех обновленных байтах. См. методы
signи методverify.
Обратите внимание, что этот класс является абстрактным и расширяется от SignatureSpi по историческим причинам. Разработчики приложений должны обращать внимание только на методы, определенные в этом Signature классе; все методы в суперклассе предназначены для поставщиков криптографических сервисов, которые хотят предоставить собственные реализации алгоритмов цифровых подписей.
Каждая реализация Java платформы обязана поддерживать следующие стандартные Signature алгоритмы:
SHA1withDSASHA256withDSASHA1withRSASHA256withRSA
- С момента:
- 1.1
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected static final int |
SIGN |
Возможная state значение, обозначающее, что этот объект подписи был инициализирован для подписи. |
protected int |
state |
Текущее состояние объекта подписи. |
protected static final int |
UNINITIALIZED |
Возможная state значение, обозначающее, что этот объект подписи еще не был инициализирован. |
protected static final int |
VERIFY |
Возможная state значение, обозначающее, что этот объект подписи был инициализирован для проверки. |
Поля, объявленные в классе java.security.SignatureSpi
appRandom
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт объект Signature для указанного алгоритма. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
clone() |
Возвращает копию, если реализация поддерживает клонирование. |
final String |
getAlgorithm() |
Возвращает имя алгоритма для этого объекта подписи. |
static Signature |
getInstance |
Возвращает объект Signature, реализующий указанный алгоритм подписи. |
static Signature |
getInstance |
Возвращает объект Signature, реализующий указанный алгоритм подписи. |
static Signature |
getInstance |
Возвращает объект Signature, реализующий указанный алгоритм подписи. |
final Object |
getParameter |
Устарело. |
final AlgorithmParameters |
getParameters() |
Возвращает параметры, используемые с этим объектом подписи. |
final Provider |
getProvider() |
Возвращает поставщика этого объекта подписи. |
final void |
initSign |
Инициализирует этот объект для подписи. |
final void |
initSign |
Инициализирует этот объект для подписи. |
final void |
initVerify |
Инициализирует этот объект для проверки, используя открытый ключ из предоставленного сертификата. |
final void |
initVerify |
Инициализирует этот объект для проверки. |
final void |
setParameter |
Устарело. |
final void |
setParameter |
Инициализирует этот объект подписи с заданным набором параметров. |
final byte[] |
sign() |
Возвращает байты подписи всех обновлённых данных. |
final int |
sign |
Завершает операцию подписи и сохраняет результирующие байты подписи в предоставленном буфере outbuf, начиная с offset. |
String |
toString() |
Возвращает строковое представление этого объекта подписи, предоставляя информацию, включающую состояние объекта и имя используемого алгоритма. |
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
Подробное описание полей
UNINITIALIZED
protected static final int UNINITIALIZED
state величина, означающая, что этот объект подписи ещё не был инициализирован.- См. также:
SIGN
protected static final int SIGN
state величина, означающая, что этот объект подписи был инициализирован для подписи.- См. также:
VERIFY
protected static final int VERIFY
state величина, означающая, что этот объект подписи был инициализирован для проверки.- См. также:
state
protected int state
Подробное описание конструкторов
Signature
protected Signature(String algorithm)
- Параметры:
-
algorithm- стандартное строковое имя алгоритма. См. раздел "Signature" в спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов.
Подробное описание методов
getInstance
public static Signature getInstance(String algorithm) throws NoSuchAlgorithmException
Этот метод проходит по списку зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект Signature, инкапсулирующий реализацию SignatureSpi из первого поставщика, который поддерживает указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание об реализации:
- Реализация JDK Reference также использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Параметры:
-
algorithm- стандартное имя запрашиваемого алгоритма. См. раздел "Signature" в спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов. - Возвращает:
- новый
Signatureобъект - Исключения:
-
NoSuchAlgorithmException- если ни одинProviderне поддерживает реализациюSignatureдля указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static Signature getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Возвращается новый объект Signature, инкапсулирующий реализацию SignatureSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
algorithm- имя запрашиваемого алгоритма. См. раздел "Signature" в спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов. -
provider- имя поставщика. - Возвращает:
- новый
Signatureобъект - Исключения:
-
IllegalArgumentException- если имя поставщика являетсяnullили пустым -
NoSuchAlgorithmException- если реализацияSignatureSpiдля указанного алгоритма недоступна от указанного поставщика -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static Signature getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
Возвращается новый объект Signature, инкапсулирующий реализацию SignatureSpi от указанного объекта Provider. Указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
algorithm- имя запрашиваемого алгоритма. См. раздел "Signature" в спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов. -
provider- поставщик. - Возвращает:
- новый
Signatureобъект - Исключения:
-
IllegalArgumentException- если поставщик являетсяnull -
NoSuchAlgorithmException- если реализацияSignatureSpiдля указанного алгоритма недоступна от указанногоProviderобъекта -
NullPointerException- еслиalgorithmявляетсяnull - С тех пор:
- 1.4
- См. также:
getProvider
public final Provider getProvider()
- Возвращает:
- поставщик данного объекта подписи
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- источник случайных чисел для этой подписи. - Исключения:
-
InvalidKeyException- если ключ некорректен.
sign
public final byte[] sign() throws SignatureException
Вызов этого метода сбрасывает этот объект подписи до состояния, в котором он находился при предыдущей инициализации для подписи с помощью вызова initSign(PrivateKey). То есть, объект сбрасывается и доступен для генерации другой подписи от того же подписывающего лица, при необходимости, с помощью новых вызовов update и sign
- Возвращает:
- байты подписи результата операции подписи.
- Исключения:
-
SignatureException- если этот объект подписи не инициализирован должным образом или если этот алгоритм подписи не может обработать предоставленные входные данные.
sign
public final int sign(byte[] outbuf, int offset, int len) throws SignatureException
outbuf, начиная с offset. Формат подписи зависит от используемого алгоритма подписи. Этот объект подписи сбрасывается в исходное состояние (состояние, в котором он находился после вызова одного из initSign методов) и может быть повторно использован для генерации дополнительных подписей с использованием того же закрытого ключа.
- Parameters:
-
outbuf- буфер для результата подписи. -
offset- смещение вoutbufдля хранения подписи. -
len- количество байтов вoutbuf, отведенных для подписи. - Returns:
- количество байтов, помещенных в
outbuf. - Throws:
-
SignatureException- если этот объект подписи не инициализирован должным образом, если этот алгоритм подписи не может обработать предоставленные входные данные или еслиlenменьше фактической длины подписи. -
IllegalArgumentException- еслиoutbufравенnull, илиoffsetилиlenменьше 0, или суммаoffsetиlenбольше длиныoutbuf. - Since:
- 1.2
verify
public final boolean verify(byte[] signature) throws SignatureException
Вызов этого метода сбрасывает этот объект подписи в состояние, в котором он находился при предыдущей инициализации для проверки с помощью вызова initVerify(PublicKey). То есть, объект сбрасывается и доступен для проверки другой подписи от идентификатора, открытый ключ которого был указан в вызове initVerify.
- Parameters:
-
signature- байты подписи для проверки. - Returns:
- true, если подпись была проверена, false - если нет.
- Throws:
-
SignatureException- если этот объект подписи не инициализирован должным образом, переданная подпись закодирована неправильно или имеет неверный тип, если этот алгоритм подписи не может обработать предоставленные входные данные и т. д.
verify
public final boolean verify(byte[] signature, int offset, int length) throws SignatureException
Вызов этого метода сбрасывает этот объект подписи в состояние, в котором он находился при предыдущей инициализации для проверки с помощью вызова initVerify(PublicKey). То есть, объект сбрасывается и доступен для проверки другой подписи от идентификатора, открытый ключ которого был указан в вызове initVerify.
- Parameters:
-
signature- байты подписи для проверки. -
offset- смещение для начала в массиве байтов. -
length- количество байтов для использования, начиная со смещения. - Returns:
- true, если подпись была проверена, false - если нет.
- Throws:
-
SignatureException- если этот объект подписи не инициализирован должным образом, переданная подпись закодирована неправильно или имеет неверный тип, если этот алгоритм подписи не может обработать предоставленные входные данные и т. д. -
IllegalArgumentException- если массив байтовsignatureпуст, илиoffsetилиlengthменьше 0, или суммаoffsetиlengthбольше длины массива байтовsignature. - Since:
- 1.4
update
public final void update(byte b) throws SignatureException
- Parameters:
-
b- байт для обновления. - Throws:
-
SignatureException- если этот объект подписи не инициализирован должным образом.
update
public final void update(byte[] data) throws SignatureException
- Parameters:
-
data- массив байтов для обновления. - Throws:
-
SignatureException- если этот объект подписи не инициализирован должным образом.
update
public final void update(byte[] data, int off, int len) throws SignatureException
- Parameters:
-
data- массив байтов. -
off- смещение для начала в массиве байтов. -
len- количество байтов для использования, начиная со смещения. - Throws:
-
SignatureException- если этот объект подписи не инициализирован должным образом. -
IllegalArgumentException- еслиdataравноnull, илиoffилиlenменьше 0, или суммаoffиlenбольше длиныdata.
update
public final void update(ByteBuffer data) throws SignatureException
data.remaining() байтов, начиная со data.position(). После возврата позиция буфера будет равна его пределу; его предел не изменится.- Parameters:
-
data- ByteBuffer - Throws:
-
SignatureException- если этот объект подписи не инициализирован должным образом. - Since:
- 1.5
getAlgorithm
public final String getAlgorithm()
- Returns:
- имя алгоритма для этого объекта подписи.
toString
public String toString()
- Overrides:
-
toStringв классеObject - Returns:
- строковое представление этого объекта подписи.
setParameter
@Deprecated public final void setParameter(String param, Object value) throws InvalidParameterException
setParameter.- Parameters:
-
param- строковый идентификатор параметра. -
value- значение параметра. - Throws:
-
InvalidParameterException- еслиparamявляется недопустимым параметром для этого алгоритма подписи, параметр уже установлен и не может быть установлен повторно, возникает исключение безопасности и т. д. - See Also:
setParameter
public final void setParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
- Parameters:
-
params- параметры - Throws:
-
InvalidAlgorithmParameterException- если заданные параметры неподходящие для этого движка подписи - See Also:
getParameters
public final AlgorithmParameters getParameters()
Если этот объект подписи был инициализирован параметрами (вызовом setParameter(AlgorithmParameterSpec) или setParameter(String, Object)) и реализация подписи поддерживает возврат параметров в виде AlgorithmParameters, этот метод возвращает те же параметры. Если параметры не были установлены, этот метод может вернуть комбинацию значения параметров по умолчанию и случайных значений, если реализация подписи поддерживает их генерацию. В противном случае возвращается null.
- Returns:
- используемые параметры, или
null - Since:
- 1.4
- See Also:
getParameter
@Deprecated public final Object getParameter(String param) throws InvalidParameterException
- Parameters:
-
param- строковое имя параметра. - Returns:
- объект, представляющий значение параметра, или
null, если его нет. - Throws:
-
InvalidParameterException- еслиparamявляется недопустимым параметром для этого движка, или при возникновении других исключений во время попытки получения этого параметра. - See Also:
клон
public Object clone() throws CloneNotSupportedException
- Переопределяет:
-
cloneв классеSignatureSpi - Возвращает:
- клон, если реализация клонируемая.
- Исключения:
-
CloneNotSupportedException- если это вызывается на реализации, которая не поддерживаетCloneable. - См. также:
© 1993, 2021, 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/17/docs/api/java.base/java/security/Signature.html
setParameter.