| Пакет | 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(). - Вызовите метод
verifyXMLSignatureValidator, передав в него сигнатуру для проверки. - Проверьте свойство
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
Скрыть унаследованные общедоступные свойства
Показать унаследованные общедоступные свойства