Подпись класса
- 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 для подписи данных или проверки подписи состоит из трех фаз:
- Инициализация, с использованием либо:
- открытого ключа, который инициализирует подпись для проверки (см.
initVerify), или - закрытого ключа (и необязательно генератора случайных чисел Secure Random Number Generator), который инициализирует подпись для подписи (см.
initSign(PrivateKey)иinitSign(PrivateKey, SecureRandom)).
- открытого ключа, который инициализирует подпись для проверки (см.
- Обновление
В зависимости от типа инициализации, это обновит байты для подписи или проверки. Смотрите методы
update. - Подпись или проверка подписи на всех обновленных байтах. Смотрите методы
signи методverify.
Обратите внимание, что этот класс является абстрактным и наследуется от SignatureSpi по историческим причинам. Разработчики приложений должны обращать внимание только на методы, определенные в этом Signature классе; все методы в суперклассе предназначены для поставщиков криптографических услуг, которые хотят реализовать свои собственные алгоритмы цифровых подписей.
Каждая реализация Java-платформы обязана поддерживать следующие стандартные Signature алгоритмы:
SHA1withDSASHA256withDSASHA1withRSASHA256withRSA
- С:
- 1.1
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected static int | SIGN | Возможная |
protected int | state | Текущее состояние объекта подписи. |
protected static int | UNINITIALIZED | Возможная |
protected static int | VERIFY | Возможная |
Поля, объявленные в классе java.security.SignatureSpi
appRandom Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | Signature(String algorithm) | Создаёт объект Signature для указанного алгоритма. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object | clone() | Возвращает клон, если реализация клонируема. |
String | getAlgorithm() | Возвращает имя алгоритма для этого объекта подписи. |
static Signature | getInstance(String algorithm) | Возвращает объект Signature, реализующий указанный алгоритм подписи. |
static Signature | getInstance(String algorithm,
String provider) | Возвращает объект Signature, реализующий указанный алгоритм подписи. |
static Signature | getInstance(String algorithm,
Provider provider) | Возвращает объект Signature, реализующий указанный алгоритм подписи. |
Object | getParameter(String param) | Устарело. |
AlgorithmParameters | getParameters() | Возвращает параметры, используемые с этим объектом подписи. |
Provider | getProvider() | Возвращает поставщика этого объекта подписи. |
void | initSign(PrivateKey privateKey) | Инициализирует этот объект для подписи. |
void | initSign(PrivateKey privateKey,
SecureRandom random) | Инициализирует этот объект для подписи. |
void | initVerify(Certificate certificate) | Инициализирует этот объект для проверки, используя открытый ключ из заданного сертификата. |
void | initVerify(PublicKey publicKey) | Инициализирует этот объект для проверки. |
void | setParameter(String param,
Object value) | Устарело. Используйте setParameter. |
void | setParameter(AlgorithmParameterSpec params) | Инициализирует этот движок подписи с заданным набором параметров. |
byte[] | sign() | Возвращает байты подписи всех обновлённых данных. |
int | sign(byte[] outbuf,
int offset,
int len) | Завершает операцию подписи и сохраняет полученные байты подписи в предоставленном буфере |
String | toString() | Возвращает строковое представление этого объекта подписи, предоставляя информацию, которая включает состояние объекта и имя используемого алгоритма. |
void | update(byte b) | Обновляет данные, подлежащие подписи или проверке, с использованием байта. |
void | update(byte[] data) | Обновляет данные, подлежащие подписи или проверке, с использованием указанного массива байтов. |
void | update(byte[] data,
int off,
int len) | Обновляет данные, подлежащие подписи или проверке, с использованием указанного массива байтов, начиная с указанного смещения. |
void | update(ByteBuffer data) | Обновляет данные, подлежащие подписи или проверке, используя указанный ByteBuffer. |
boolean | verify(byte[] signature) | Проверяет переданную подпись. |
boolean | verify(byte[] signature,
int offset,
int length) | Проверяет переданную подпись в указанном массиве байтов, начиная с указанного смещения. |
Методы, объявленные в классе java.security.SignatureSpi
engineGetParameter, engineGetParameters, engineInitSign, engineInitSign, engineInitVerify, engineSetParameter, engineSetParameter, engineSign, engineSign, engineUpdate, engineUpdate, engineUpdate, engineVerify, engineVerify Методы, объявленные в классе java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Подробное описание полей
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)
Создаёт объект 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 - См. также:
Provider
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 - См. также:
Provider
getInstance
public static Signature getInstance(String algorithm,
Provider provider)
throws NoSuchAlgorithmException Возвращает объект Signature, реализующий указанный алгоритм подписи.
Возвращается новый объект Signature, содержащий реализацию SignatureSpi от указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
algorithm- имя запрашиваемого алгоритма. См. раздел Подписи в Спецификации имен стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов. -
provider- поставщик. - Возвращает:
- новый объект
Signature - Исключения:
-
IllegalArgumentException- если поставщикnull -
NoSuchAlgorithmException- если реализацияSignatureSpiдля указанного алгоритма недоступна от указанного объектаProvider -
NullPointerException- еслиalgorithmявляетсяnull - С тех пор:
- 1.4
- См. также:
Provider
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) и может быть повторно использован для генерации дополнительных подписей с тем же закрытым ключом.
- Параметры:
-
outbuf- буфер для результата подписи. -
offset- смещение вoutbuf, где хранится подпись. -
len- количество байтов вoutbuf, выделенных для подписи. - Возвращает:
- количество байтов, помещенных в
outbuf. - Исключения:
-
SignatureException- если объект подписи не проинициализирован должным образом, если этот алгоритм подписи не может обработать предоставленные входные данные или еслиlenменьше фактической длины подписи. -
IllegalArgumentException- еслиoutbufравноnull, илиoffsetилиlenменьше 0, или суммаoffsetиlenбольше длиныoutbuf. - С тех пор:
- 1.2
verify
public final boolean verify(byte[] signature)
throws SignatureException Проверяет предоставленную подпись.
Вызов этого метода сбрасывает этот объект подписи в состояние, в котором он находился при предыдущей инициализации для проверки с помощью вызова initVerify(PublicKey). То есть объект сбрасывается и доступен для проверки другой подписи от личности, открытый ключ которой был указан в вызове initVerify.
- Параметры:
-
signature- байты подписи для проверки. - Возвращает:
- true, если подпись была проверена, false — в противном случае.
- Исключения:
-
SignatureException- если объект подписи не проинициализирован должным образом, предоставленная подпись закодирована неправильно или имеет неправильный тип, если этот алгоритм подписи не может обработать предоставленные входные данные и т. д.
verify
public final boolean verify(byte[] signature,
int offset,
int length)
throws SignatureException Проверяет предоставленную подпись в указанном массиве байтов, начиная с указанного смещения.
Вызов этого метода сбрасывает этот объект подписи в состояние, в котором он находился при предыдущей инициализации для проверки с помощью вызова initVerify(PublicKey). То есть объект сбрасывается и доступен для проверки другой подписи от личности, открытый ключ которой был указан в вызове initVerify.
- Параметры:
-
signature- байты подписи для проверки. -
offset- смещение для начала в массиве байтов. -
length- количество байтов для использования, начиная со смещения. - Возвращает:
- true, если подпись проверена, false — если нет.
- Выбрасывает:
-
SignatureException- если объект подписи не инициализирован должным образом, переданная подпись закодирована неправильно или имеет неправильный тип, если алгоритм подписи не может обработать предоставленные входные данные и т. д. -
IllegalArgumentException- если массив байтовsignaturenull, илиoffsetилиlengthменьше 0, или суммаoffsetиlengthбольше длины массива байтовsignature. - С:
- 1.4
update
public final void update(byte b)
throws SignatureException Обновляет данные для подписи или проверки с помощью одного байта.
- Параметры:
-
b- байт для обновления. - Выбрасывает:
-
SignatureException- если объект подписи не инициализирован должным образом.
update
public final void update(byte[] data)
throws SignatureException Обновляет данные для подписи или проверки, используя указанный массив байтов.
- Параметры:
-
data- массив байтов для обновления. - Выбрасывает:
-
SignatureException- если объект подписи не инициализирован должным образом.
update
public final void update(byte[] data,
int off,
int len)
throws SignatureException Обновляет данные для подписи или проверки, используя указанный массив байтов, начиная с указанного смещения.
- Параметры:
-
data- массив байтов. -
off- смещение для начала в массиве байтов. -
len- количество байтов для использования, начиная со смещения. - Выбрасывает:
-
SignatureException- если объект подписи не инициализирован должным образом. -
IllegalArgumentException- еслиdatanull, илиoffилиlenменьше 0, или суммаoffиlenбольше длиныdata.
update
public final void update(ByteBuffer data)
throws SignatureException Обновляет данные для подписи или проверки, используя указанный ByteBuffer. Обрабатывает data.remaining() байты, начиная с data.position(). По возвращении позиция буфера будет равна его пределу; его предел не изменится.
- Параметры:
-
data- ByteBuffer - Выбрасывает:
-
SignatureException- если объект подписи не инициализирован должным образом. - С:
- 1.5
getAlgorithm
public final String getAlgorithm()
Возвращает имя алгоритма для этого объекта подписи.
- Возвращает:
- имя алгоритма для этого объекта подписи.
toString
public String toString()
Возвращает строковое представление этого объекта подписи, предоставляя информацию, которая включает состояние объекта и имя используемого алгоритма.
setParameter
@Deprecated
public final void setParameter(String param,
Object value)
throws InvalidParameterException setParameter.Устанавливает указанный параметр алгоритма в указанное значение. Этот метод предоставляет механизм общего назначения, позволяющий установить различные параметры этого объекта. Параметр может быть любым устанавливаемым параметром алгоритма, таким как размер параметра или источник случайных бит для генерации подписи (при необходимости), или указание на выполнение определенного, но необязательного вычисления. Желательно, но не определено в настоящий момент, использовать единообразную схему наименования алгоритмов для каждого параметра.
- Параметры:
-
param- строковый идентификатор параметра. -
value- значение параметра. - Выбрасывает:
-
InvalidParameterException- еслиparamявляется недопустимым параметром для этого алгоритма шифрования, параметр уже установлен и не может быть установлен повторно, возникает исключение безопасности и т. д. - См. также:
getParameter(java.lang.String)
setParameter
public final void setParameter(AlgorithmParameterSpec params)
throws InvalidAlgorithmParameterException Инициализирует этот движок шифрования заданным набором параметров.
- Параметры:
-
params- параметры - Выбрасывает:
-
InvalidAlgorithmParameterException- если заданные параметры неподходящие для этого движка шифрования - См. также:
getParameters()
getParameters
public final AlgorithmParameters getParameters()
Возвращает параметры, используемые с этим объектом подписи.
Если эта подпись была ранее инициализирована параметрами (путем вызова метода setParameter), этот метод возвращает те же параметры. Если эта подпись не была инициализирована параметрами, этот метод может вернуть комбинацию значений параметров по умолчанию и случайных значений, если реализация подписи поддерживает это и может успешно их сгенерировать. В противном случае возвращается null.
- Возвращает:
- используемые параметры подписи, или
null - С:
- 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
© 1993, 2020, 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/11/docs/api/java.base/java/security/Signature.html