Пакет | flash.security |
Класс | public class XMLSignatureValidator |
Наследование | XMLSignatureValidator EventDispatcher Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Поддержка в профилях AIR: эта функция поддерживается во всех компьютерных операционных системах и среде AIR для телевизионных устройств, но не поддерживается на мобильных устройствах. Используйте свойство XMLSignatureValidator.isSupported
, чтобы проверить наличие поддержки в среде выполнения. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».
Класс XMLSignatureValidator реализует набор рекомендаций W3C в отношении синтаксиса и обработки XML-сигнатур, но его не следует считать полной реализацией всех рекомендаций. Поддерживаемый набор включает следующие рекомендации.
- Синтаксис всех базовых сигнатур, за исключением элементов KeyInfo.
- Элементы KeyInfo поддерживают только элементы X509Data.
- Элементы X509Data поддерживают только элементы X509Certificate.
- Алгоритм метода создания дайджеста SHA256.
- Алгоритм подписания PKCS1.
- Алгоритм преобразования и метод канонизации «Канонический XML без комментариев».
- Элемент Manifest в дополнительном синтаксисе сигнатуры.
Для проверки сигнатуры необходимо предоставить реализацию IURIDereferencer Этот класс реализации отвечает за разрешение идентификаторов URI, указанных в элементах SignedInfo файла сигнатуры, и возвращает ссылочные данные в объект, например ByteArray, реализующий интерфейс IDataInput.
Чтобы проверить, что подписывающий сертификат находится в одной цепи с доверенным сертификатом, в сигнатуре XML должны содержаться сертификаты, необходимые для создания цепи в элементах X509Certificate, или необходимо предоставить сертификаты, требуемые для создания цепи с помощью метода addCertificate()
.
Проверка XMLSignature:
- Создайте экземпляр класса XMLSignatureValidator.
- Установите свойство
uriDereferencer
для этого экземпляра как для экземпляра класса реализации IURIDereferencer. - При необходимости предоставьте зашифрованные в формате DER сертификаты для построения доверительной цепи сертификата с помощью метода
addCertificate()
. - Вызовите метод
verify
XMLSignatureValidator, передав в него сигнатуру для проверки. - Проверьте свойство
validityStatus
после того, как объект XMLSignatureValidator отправит событие complete.
О состоянии сигнатуры:
Достоверность сигнатуры XML может иметь три значения: действительно, недействительно, неизвестно. Общее состояние зависит от состояния проверки отдельных компонентов файла сигнатуры.
-
digestStatus
— криптографическая достоверность подписи вычисляется по элементу SignedInfo. Может принимать значенияvalid
,invalid
илиunknown
. -
identityStatus
— достоверность подписывающего сертификата. Если срок действия сертификата истек или он был аннулирован или изменен, он приобретает состояниеinvalid
. Если сертификат невозможно заменить доверенным корневым сертификатом, устанавливается состояниеunknown
. Если дайджест недействителен, сертификат не проверяется. Если проверка не выполнена, возвращается состояниеunknown
. -
referencesStatus
— достоверность данных, к которым обращаются ссылки в элементе SignedInfo файла подписи. Может принимать значенияvalid
,invalid
илиunknown
. Если дайджест или сертификат недействителен, ссылки не проверяются. Проверка ссылок может не выполняться также в зависимости от значения свойстваreferencesValidationSetting
. Если проверка не выполнена, возвращается состояниеunknown
.
Достоверность сигнатуры, указанная в свойстве validityStatus
, может принимать следующие значения.
-
valid
— если свойстваreferencesStatus
,digestStatus
иidentityStatus
все имеют значениеvalid
. -
invalid
— если для какого-либо отдельного состояния задано значениеinvalid
. -
unknown
— если свойстваreferencesStatus
,digestStatus
илиidentityStatus
имеют значениеunknown
.
Ограничения канонизации:
Модуль XML в AIR не всегда создает ожидаемую XML-строку при канонизации XML-документа. В связи с этим не рекомендуется вставлять межэлементные пробелы в документах с запечатанной или неприсоединенной подписью и переопределять пространства имен в документе с подписью. В обоих случаях AIR может воссоздать документ с иной последовательностью символов (отличной от оригинала), вследствие чего произойдет сбой проверки.
Дополнительно
Связанные элементы API
Свойство | Определено | ||
---|---|---|---|
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
digestStatus : String [только для чтения]
Состояние достоверности для криптографической подписи, рассчитанной по элементу SignedInfo подписи. | XMLSignatureValidator | ||
identityStatus : String [только для чтения]
Состояние достоверности подписывающего сертификата. | XMLSignatureValidator | ||
isSupported : Boolean [статические] [только для чтения]
Свойству isSupported задается значение true, если текущая платформа поддерживает класс XMLSignatureValidator, в противном случае задается значение false. | XMLSignatureValidator | ||
referencesStatus : String [только для чтения]
Состояние достоверности данных в ссылках элемента SignedInfo подписи. | XMLSignatureValidator | ||
referencesValidationSetting : String
Указывает условия проверки ссылок. | XMLSignatureValidator | ||
revocationCheckSetting : String
Указывает, как проверяется аннулирование сертификата. | XMLSignatureValidator | ||
signerCN : String [только для чтения]
Поле «Общее имя» в подписывающем сертификате. | XMLSignatureValidator | ||
signerDN : String [только для чтения]
Поле «Отличительное имя» в подписывающем сертификате. | XMLSignatureValidator | ||
signerExtendedKeyUsages : Array [только для чтения]
Массив, содержащий объектные идентификаторы расширенного использования ключей, перечисленные в подписывающем сертификате. | XMLSignatureValidator | ||
signerTrustSettings : Array [только для чтения]
Массив, содержащий доверительные параметры подписывающего сертификата. | XMLSignatureValidator | ||
uriDereferencer : IURIDereferencer
Реализация IURIDereferencer. | XMLSignatureValidator | ||
useSystemTrustStore : Boolean
Указывает, какие сертификаты из хранилища доверенных сертификатов используются для создания цепи. | XMLSignatureValidator | ||
validityStatus : String [только для чтения]
Состояние достоверности проверенной сигнатуры XML. | XMLSignatureValidator |
Метод | Определено | ||
---|---|---|---|
Создает объект XMLSignatureValidator. | XMLSignatureValidator | ||
Добавляется сертификат x509 для построения цепи. | XMLSignatureValidator | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. | EventDispatcher | ||
Посылает событие в поток событий. | EventDispatcher | ||
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. | EventDispatcher | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object | ||
Проверяет указанную сигнатуру. | XMLSignatureValidator | ||
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. | EventDispatcher |
Событие | Сводка | Определено | ||
---|---|---|---|---|
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным. | EventDispatcher | |||
Передается, если выполнена проверка. | XMLSignatureValidator | |||
[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR теряет фокус системы и становится неактивным. | EventDispatcher | |||
Передается, если невозможно выполнить проверку из-за ошибок. | XMLSignatureValidator |
digestStatus | свойство |
digestStatus:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Состояние достоверности для криптографической подписи, рассчитанной по элементу SignedInfo подписи.
Значение состояния:
valid
— если сигнатура криптографически действительна.invalid
— если дайджест менялся после подписания.unknown
— если методverify()
не вызывался.
Примечание. Если digestStatus
имеет значение invalid, свойства identityStatus
и referencesStatus
не проверяются и принимают значение unknown
.
Реализация
public function get digestStatus():String
Выдает
IllegalOperationError — Если происходит обращение во время проверки сигнатуры.
|
identityStatus | свойство |
identityStatus:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Состояние достоверности подписывающего сертификата.
Состояние может принимать следующие значения:
valid
— срок действия сертификата не истек, не было ошибок при проверке аннулирования, сертификат связан цепью с доверенным корневым сертификатом.unknown
— срок действия сертификата не истек, не было ошибок при проверке аннулирования, но цепь к доверенному корневому сертификату отсутствует. Состояниеunknown
также будет выставляться, если еще не проведена проверка, потому что методverify()
еще не вызывался или потому что криптографическая сигнатура элемента SignedInfo (digestStatus
) недействительна.invalid
— срок действия сертификата истек или обнаружена ошибка при проверке аннулирования.
Сертификаты добавляются с помощью метода addCertificate()
, а установки свойств revocationCheckSetting
и useSystemTrustStore
можно изменить в зависимости от того, считается ли сертификат действительным.
Примечание. Если identityStatus
имеет значение invalid, свойство referencesStatus
не проверяется и принимает значение unknown
. Более того, ссылки не проверяются, если identityStatus
имеет значение unknown, если только referencesValidationSetting
не имеет значение validOrUnknownIdentity
Реализация
public function get identityStatus():String
Выдает
IllegalOperationError — Если происходит обращение во время проверки сигнатуры.
|
Связанные элементы API
Пример ( Использование этого примера )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var identityResult:String = verifier.identityStatus;
isSupported | свойство |
isSupported:Boolean
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 2 |
Свойству isSupported
задается значение true
, если текущая платформа поддерживает класс XMLSignatureValidator, в противном случае задается значение false
.
Реализация
public static function get isSupported():Boolean
referencesStatus | свойство |
referencesStatus:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Состояние достоверности данных в ссылках элемента SignedInfo подписи.
Состояние может принимать следующие значения:
valid
— если все ссылки действительны.invalid
— если какая-либо ссылка недействительна.unknown
— если проверка не была выполнена. Ссылки могут не проверяться по следующим причинам:- метод
verify()
не был вызван; - криптографическая подпись элемента SignedInfo (
digestStatus
) недействительна; - сертификат подписи (
identityStatus
) недействителен; referencesValidationSetting
имеет значениеvalidIdentity
(настройка по умолчанию), и значениеidentityStatus
сертификата подписи неизвестно;referencesValidationSetting
имеет значениеnever
.
- метод
Важно! Внешние ресурсы не проверяются, если в элементе SignedInfo документа подписи нет прямой ссылки на них. Внешние ресурсы, на которые указывают вторичные ссылки, не проверяются. Например, если XML-подпись используется для элемента манифеста, проверяется только целостность самого элемента манифеста. Файлы, перечисленные в манифесте, не проверяются.
Реализация
public function get referencesStatus():String
Выдает
IllegalOperationError — Если происходит обращение во время проверки сигнатуры.
|
Связанные элементы API
Пример ( Использование этого примера )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var dataResult:String = verifier.referencesStatus;
referencesValidationSetting | свойство |
referencesValidationSetting:String
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.5 |
Указывает условия проверки ссылок.
Для настройки этого свойства используются константы, определенные в классе ReferencesValidationSetting. Эти параметры включают:
ReferencesValidationSetting.VALID_IDENTITY
— проверка ссылок выполняется, только если сертификат подписи действительный и ведет к доверенному корневому сертификату. Это настройка по умолчанию.ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY
— проверка ссылок выполняется, если сертификат подписи действительный, даже если он не ведет к доверенному корневому сертификату.ReferencesValidationSetting.NEVER
— проверка ссылок никогда не выполняется.
Используйте настройку по умолчанию (validIdentity
) для коммерческих сертификатов подписи или в случае предоставления собственного сертификата в качестве якоря доверия в методе addCertificate()
. Эта настройка позволит избежать излишней проверки действительности ссылки, если подписанный документ будет отклонен в любом случае.
Используйте настройку validOrUnknownIdentity
для самозаверяющих сертификатов. Данная настройка позволяет проверить, не были ли изменены подписанные данные, но не позволяет проверить личность подписавшего.
Используйте настройку never
, чтобы избежать излишней проверки ссылок, если такая проверка не важна в контексте вашего приложения.
Реализация
public function get referencesValidationSetting():String
public function set referencesValidationSetting(value:String):void
Выдает
IllegalOperationError — Если устанавливается во время проверки сигнатуры.
| |
ArgumentError — если параметр setting содержит значение, не определенное в классе ReferencesValidationSetting.
|
Связанные элементы API
Пример ( Использование этого примера )
import flash.security.ReferencesValidationSetting; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.referencesValidationSetting = ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY;
revocationCheckSetting | свойство |
revocationCheckSetting:String
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Указывает, как проверяется аннулирование сертификата.
Используются константы, определенные в классе RevocationSettings для настройки этого свойства. Эти параметры включают:
RevocationCheckSettings.NEVER
— аннулирование сертификата не проверяется.RevocationCheckSettings.BEST_EFFORT
— проверяется аннулирование сертификата, если информация об аннулировании сертификата доступна, а состояние аннулирования может быть получено. Если состояние аннулирования невозможно установить определенно, сертификат не отвергается.RevocationCheckSettings.REQUIRED_IF_AVAILABLE
— если сертификат содержит информацию об аннулировании, состояние аннулирования должно быть точно установлено для проверки действительности сертификата.RevocationCheckSettings.ALWAYS_REQUIRED
— всегда проверять аннулирование сертификата. Сертификаты без информации об отзыве отвергаются.
Реализация
public function get revocationCheckSetting():String
public function set revocationCheckSetting(value:String):void
Выдает
IllegalOperationError — Если устанавливается во время проверки сигнатуры.
|
Связанные элементы API
signerCN | свойство |
signerCN:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Поле «Общее имя» в подписывающем сертификате.
Реализация
public function get signerCN():String
Пример ( Использование этого примера )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var commonName:String = verifier.signerCN;
signerDN | свойство |
signerDN:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Поле «Отличительное имя» в подписывающем сертификате.
Реализация
public function get signerDN():String
Пример ( Использование этого примера )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var distinguishedName:String = verifier.signerDN;
signerExtendedKeyUsages | свойство |
signerExtendedKeyUsages:Array
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Массив, содержащий объектные идентификаторы расширенного использования ключей, перечисленные в подписывающем сертификате.
Каждое расширенное использование ключей регистрируется в форме цифрового объектного идентификатора.
Реализация
public function get signerExtendedKeyUsages():Array
Выдает
IllegalOperationError — Если происходит обращение во время проверки сигнатуры.
|
Пример ( Использование этого примера )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var extendedKeyOIDs:Array = verifier.signerExtendedKeyUsages;
signerTrustSettings | свойство |
signerTrustSettings:Array
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Массив, содержащий доверительные параметры подписывающего сертификата.
Доверительные параметры выводятся из системного объектного идентификатора и идентификатора использования ключей, встроенных в сертификат. Константы для строк, представляющие распознанные доверительные параметры, определенные в классе SignerTrustSettings.
Массив signerTrustSettings
для сертификата в состоянии unknown
или invalid
не содержит данных.
Модификация массива не изменяет доверительных параметров сертификата.
Реализация
public function get signerTrustSettings():Array
Выдает
IllegalOperationError — Если происходит обращение во время проверки сигнатуры.
|
Связанные элементы API
Пример ( Использование этого примера )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var certificateTrustedFor:Array = verifier.signerTrustSettings;
uriDereferencer | свойство |
uriDereferencer:IURIDereferencer
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Реализация IURIDereferencer.
Реализация IURIDereferencer должна быть предоставлена до попытки проверки сигнатуры.
Реализация
public function get uriDereferencer():IURIDereferencer
public function set uriDereferencer(value:IURIDereferencer):void
Выдает
IllegalOperationError — Если устанавливается во время проверки сигнатуры.
|
Связанные элементы API
Пример ( Использование этого примера )
import com.example.SignedMessageDereferencer; //A custom class implementing IURIDereferencer var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.uriDereferencer = new SignedMessageDereferencer();
useSystemTrustStore | свойство |
useSystemTrustStore:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Указывает, какие сертификаты из хранилища доверенных сертификатов используются для создания цепи.
Если значение true
, то якоря доверия в хранилище доверенных сертификатов используются в качестве доверенных корней. Хранилище доверенных сертификатов по умолчанию не используется.
Реализация
public function get useSystemTrustStore():Boolean
public function set useSystemTrustStore(value:Boolean):void
Выдает
IllegalOperationError — Если устанавливается во время проверки сигнатуры.
|
Пример ( Использование этого примера )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.useSystemTrustStore = true;
validityStatus | свойство |
validityStatus:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Состояние достоверности проверенной сигнатуры XML.
Проверка XML-подписи включает в себя проверку криптографической подписи элемента SignedInfo, сертификата подписи и данных, на которые указывают ссылки в элементе SignedInfo. Достоверность каждого из этих элементов регистрируется отдельно с помощью свойств digestStatus
, identityStatus()
и referencesStatus
соответственно.
Достоверность сигнатуры XML может иметь три значения: действительно, недействительно, неизвестно. Общее состояние зависит от состояния проверки отдельных компонентов файла сигнатуры.
digestStatus
— криптографическая достоверность сигнатуры вычисляется по элементу SignedInfo.identityStatus
— достоверность подписывающего сертификата.referencesStatus
— достоверность дайджеста ссылок в элементе сигнатуры SignedInfo.
Достоверность сигнатуры, указанная в свойстве validityStatus
, может принимать следующие значения.
valid
— если свойстваreferencesStatus
,digestStatus
иidentityStatus
все имеют значениеvalid
.invalid
— если для какого-либо отдельного состояния задано значениеinvalid
.unknown
— если какое-либо отдельное состояние имеет значениеunknown
.
Реализация
public function get validityStatus():String
Выдает
IllegalOperationError — Если происходит обращение во время проверки сигнатуры.
|
Связанные элементы API
Пример ( Использование этого примера )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate the signature... var validationResult:String = verifier.validityStatus;
XMLSignatureValidator | () | Конструктор |
public function XMLSignatureValidator()
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Создает объект XMLSignatureValidator.
Необходимо установить свойство uriDereferencer
перед вызовом метода verify()
для нового объекта.
Связанные элементы API
Пример ( Использование этого примера )
import com.example.EnvelopedDereferencer; //Your custom IURIDereferencer implementation //Create the object var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //Provide the IURIDerferencer verifier.uriDereferencer = new EnvelopedDereferencer(xmlDoc); //Set validation options verifier.referencesValidationSetting = ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY; verifier.revocationCheckSetting = RevocationCheckSettings.NEVER; verifier.useSystemTrustStore = true; //Add listeners to handle results verifier.addEventListener(Event.COMPLETE, verificationComplete); verifier.addEventListener(ErrorEvent.ERROR, verificationError);
addCertificate | () | метод |
public function addCertificate(cert:ByteArray, trusted:Boolean):*
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Добавляется сертификат x509 для построения цепи.
Добавляемый сертификат должен быть зашифрованным в формате DER сертификатом x509.
Если для параметра trusted
задано значение true
, то данный сертификат считается якорем доверия.
Примечание. Сигнатура XML может включать сертификаты для построения цепи сертификатов подписывающего. Класс XMLSignatureValidator использует эти сертификаты для построения цепи, но не в качестве доверенных корней (по умолчанию).
Параметры
cert:ByteArray — Объект ByteArray, содержащий зашифрованный в формате DER цифровой сертификат x509.
| |
trusted:Boolean — Установите значение true , чтобы обозначить этот сертификат в качестве якоря доверия.
|
* |
Выдает
IllegalOperationError — Если вызывается во время проверки сигнатуры.
|
Пример ( Использование этого примера )
import flash.utils.ByteArray; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); var certificate:ByteArray = new ByteArray(); var certFile:File = new File("certificate.cer"); var certFileStream:FileStream = new FileStream(); certFileStream.open(certFile, FileMode.READ); certFileStream.readBytes(certificate, 0, certFileStream.bytesAvailable); verifier.addCertificate(certificate, true);
verify | () | метод |
public function verify(signature:XML):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Проверяет указанную сигнатуру.
Проверка выполняется в асинхронном режиме. Объект XMLSignatureValidator передает событие complete
, если проверка завершается успешно, или событие error
, если проверка не может быть выполнена из-за ошибок.
Процесс проверки не может быть отменен. Пока происходит процесс проверки, последующие вызовы метода verify()
завершаются со сбоем. После того как текущая проверка завершена, можно снова вызывать метод verify()
.
Примечание. Поскольку класс XMLSignatureValidator реализует только часть набора рекомендаций W3C для синтаксиса и обработки подписей XML, многие действительные в других случаях подписи XML не могут быть проверены.
Параметры
signature:XML — Сигнатура XML для проверки.
|
События
complete: — Передается, если проверка завершилась успешно.
| |
error: — Передается, если при проверке ссылок обнаружены ошибки.
|
Выдает
IllegalOperationError — Если вызывается во время проверки сигнатуры.
| |
Error — Если встретились другие ошибки, например неправильно сформированный XML или неподдерживаемые элементы в файле сигнатуры.
|
Пример ( Использование этого примера )
verify()
. (В данном примере предполагается, что реализация IURIDereferencer соответствует подписи.)
import flash.filesystem.File; import flash.filesystem.FileStream; import com.example.SignedMessageDereferencer; //Your IURIDereferencer implementation const xmlSignatureNS:Namespace = new Namespace( "http://www.w3.org/2000/09/xmldsig#" ); var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.uriDereferencer = new SignedMessageDereferencer(); var signatureFile:File = new File( "path/to/XMLSignatureDocument.xml" ); var sigFileStream:FileStream = new FileStream(); sigFileStream.open( signatureFile, FileMode.READ ); var xmlDoc:XML = XML( sigFileStream.readUTFBytes(sigFileStream.bytesAvailable) ); var xmlSig:XML = XML( xmlDoc..xmlSignatureNS::Signature ); verifier.verify( xmlSig );
complete | Событие |
flash.events.Event
свойство Event.type =
flash.events.Event.COMPLETE
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Передается, если выполнена проверка.
Событие complete
не подразумевает, что сигнатура действительна. Проверьте свойство validityStatus
объекта XMLSignatureValidator, чтобы узнать результат проверки подписи.
Event.COMPLETE
определяет значение свойства type
объекта complete
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Сетевой объект, который завершил загрузку. |
Пример ( Использование этого примера )
private function verificationComplete(event:Event):void{ var validator:XMLSignatureValidator = event.target as XMLSignatureValidator; trace("Digest status: " + validator.digestStatus); trace("Identity status: " + validator.identityStatus); trace("Reference status: " + validator.referencesStatus); trace("Signature status: " + validator.validityStatus); }
Связанные элементы API
error | Событие |
flash.events.ErrorEvent
свойство ErrorEvent.type =
flash.events.ErrorEvent.ERROR
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Передается, если невозможно выполнить проверку из-за ошибок.
Определяет значение свойстваtype
объекта события error
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
target | Объект, испытывающий сбой сетевой операции. |
text | Текст, отображаемый в качестве сообщения об ошибке. |
Пример ( Использование этого примера )
private function verificationError(event:ErrorEvent):void{ trace("Verification error: " + event.text); }
SignatureValidatorExample.validateSignature(signatureFile)
и передав файл, ссылающийся на проверяемый документ с подписью XML.
import flash.events.Event; import flash.filesystem.File; import flash.filesystem.FileStream; import flash.security.ReferencesValidationSetting; import flash.security.XMLSignatureValidator; import com.example.SignedMessageDereferencer; //A custom class implementing IURIDereferencer public class SignatureValidatorExample{ private var xmlSig:XML; private const signatureNS:Namespace = new Namespace( "http://www.w3.org/2000/09/xmldsig#" ); public static function validateSignature( signatureFile:File ):void{ try{ //Set up the XMLSignatureValidator var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.addEventListener( Event.COMPLETE, verificationComplete ); verifier.uriDereferencer = new SignedMessageDereferencer(); verifier.referencesValidationSetting = ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY; //Load the signed document var sigFileStream:FileStream = new FileStream(); sigFileStream.open( signatureFile, FileMode.READ ); var xmlDoc:XML = XML( sigFileStream.readUTFBytes(sigFileStream.bytesAvailable) ); //Get the last Signature element in the document if( xmlDoc.name().localName != "Signature" ){ var signatureList:XMLList = xmlDoc..signatureNS::Signature; xmlSig = XML( signatureList[ signatureList.length()-1 ] ); } else{ xmlSig = xmlDoc; } //Validate the signature verifier.verify( xmlSig ); }catch (e:Error){ statusDisplay.text = "Verification error.\n" + e; } } private static function verificationComplete(event:Event):void{ trace( "Signature Validity: " + verifier.validityStatus ); trace( "Digest validity: " + verifier.digestStatus ); trace( "Certificate validity: " + verifier.identityStatus ); trace( "Data validity: " + verifier.referencesStatus ); } }
Tue Jun 12 2018, 11:34 AM Z