Spec-Zone .ru
спецификации, руководства, описания, API
|
public final class SignedObject extends Object implements Serializable
SignedObject является class с целью создания подлинных объектов периода выполнения, целостность которых не может поставиться под угрозу без того, чтобы быть обнаруженным.
Более определенно SignedObject содержит другой Сериализуемый объект, (чтобы быть) подписанный объект и его подпись.
Подписанный объект является "глубокой копией" (в сериализированной форме) исходного объекта. Как только копия делается, у дальнейшего манипулирования исходным объектом нет никакого побочного эффекта на копии.
Базовый алгоритм подписания определяется объектом Подписи, который передают конструктору и verify
метод. Типичное использование для того, чтобы подписаться является следующим:
Signature signingEngine = Signature.getInstance(algorithm,
provider);
SignedObject so = new SignedObject(myobject, signingKey,
signingEngine);
Типичное использование для проверки является следующим (получавшим SignedObject so
):
Signature verificationEngine =
Signature.getInstance(algorithm, provider);
if (so.verify(publickey, verificationEngine))
try {
Object myobj = so.getObject();
} catch (java.lang.ClassNotFoundException e) {};
Несколько точек стоят отмечать. Во-первых, нет никакой потребности инициализировать механизм подписания или проверки, поскольку он будет повторно инициализирован в конструкторе и verify
метод. Во-вторых, для проверки, чтобы успешно выполниться, указанный открытый ключ должен быть открытым ключом, соответствующим закрытому ключу, используемому, чтобы генерировать SignedObject.
Что еще более важно, по причинам гибкости, конструктору и verify
метод учитывает специализированные механизмы подписи, которые могут реализовать алгоритмы подписи, которые не устанавливаются формально как часть crypto провайдера. Однако, крайне важно, чтобы программист, пишущий верификатор, кодировал знать что Signature
механизм используется как его собственная реализация verify
метод вызывается, чтобы проверить подпись. Другими словами, злонамеренное Signature
может хотеть всегда возвращать true на проверке в попытке обойти проверку защиты.
Алгоритм подписи может быть, среди других, DSA стандарта NIST, используя DSA и SHA 1. Алгоритм определяется, используя то же самое соглашение в качестве этого для подписей. Алгоритм DSA, используя SHA, 1 алгоритм обзора сообщения может быть определен, например, как "SHA/DSA" или "SHA-1/DSA" (они эквивалентны). В случае RSA есть разнообразный выбор для алгоритма обзора сообщения, таким образом, алгоритм подписания мог быть определен как, например, "MD2/RSA", "MD5/RSA" или "SHA-1/RSA". Имя алгоритма должно быть определено, поскольку нет никакого значения по умолчанию.
Имя Провайдера Пакета Криптографии определяется также параметром Подписи конструктору и verify
метод. Если провайдер не определяется, провайдер значения по умолчанию используется. Каждая установка может быть сконфигурирована, чтобы использовать определенного провайдера в качестве значения по умолчанию.
Возможное применение SignedObject включает:
Signature
, Сериализированная ФормаКонструктор и Описание |
---|
SignedObject(Serializable object, PrivateKey signingKey, Signature signingEngine)
Создает SignedObject из любого Сериализуемого объекта.
|
Модификатор и Тип | Метод и Описание |
---|---|
Строка |
getAlgorithm()
Получает имя алгоритма подписи.
|
Объект |
getObject()
Получает инкапсулировавший объект.
|
byte[] |
getSignature()
Получает подпись на подписанном объекте, в форме байтового массива.
|
boolean |
verify(PublicKey verificationKey, Signature verificationEngine)
Проверяет, что подпись в этом SignedObject является действительной подписью для объекта, хранившего внутри, с данным ключом проверки, используя определяемый механизм проверки.
|
public SignedObject(Serializable object, PrivateKey signingKey, Signature signingEngine) throws IOException, InvalidKeyException, SignatureException
object
- объект, который будет подписан.signingKey
- закрытый ключ для того, чтобы подписаться.signingEngine
- механизм подписания подписи.IOException
- если ошибка происходит во время сериализацииInvalidKeyException
- если ключ недопустим.SignatureException
- подписывая сбои.public Object getObject() throws IOException, ClassNotFoundException
IOException
- если ошибка происходит во время десериализацииClassNotFoundException
- если ошибка происходит во время десериализацииpublic byte[] getSignature()
public String getAlgorithm()
public boolean verify(PublicKey verificationKey, Signature verificationEngine) throws InvalidKeyException, SignatureException
verificationKey
- открытый ключ для проверки.verificationEngine
- механизм проверки подписи.SignatureException
- если проверка подписи перестала работать.InvalidKeyException
- если ключ проверки недопустим.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92