(AIR only)
Packageflash.security
Classpublic class XMLSignatureValidator
InheritanceXMLSignatureValidator Inheritance EventDispatcher Inheritance Object

The XMLSignatureValidator class validates whether an XML signature file is well formed, unmodified, and, optionally, whether it is signed using a key linked to a trusted digital certificate.

XMLSignatureValidator implements a subset of the W3C Recommendation for XML-Signature Syntax and Processing and should not be considered a conforming implementation. The supported subset of the recommendation includes:

You must provide an IURIDereferencer implementation in order to verify an XML signature. This implementation class is responsible for resolving the URIs specified in the SignedInfo elements of the signature file and returning the referenced data in an object, such as a ByteArray, that implements the IDataInput interface.

In order to verify that the signing certificate chains to a trusted certificate, either the XML signature must contain the certificates required to build the chain in X509Certificate elements, or you must supply the certificates required to build the chain using the addCertificate() method.

To verify an XMLSignature:

  1. Create an instance of the XMLSignatureValidator class.
  2. Set the uriDereferencer property of the instance to an instance of your IURIDereferencer implementation class.
  3. Supply DER-encoded certificates for building the certificate trust chain, if desired, using the addCertificate() method.
  4. Call the XMLSignatureValidator verify method, passing in the signature to be verified.
  5. Check the validityStatus property after the XMLSignatureValidator object dispatches a complete event.

About signature status:

The validity of an XML signature can be valid, invalid, or unknown. The overall status depends on the verification status of the individual components of the signature file:

The signature validity reported by the validityStatus property can be:

See also

IURIDereferencer
XML-Signature Syntax and Processing
Canonical XML
PKCS #1


Public Properties
 PropertyDefined By
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
  AIR-onlydigestStatus : String
[read-only] The validity status of the cryptographic signature computed over the SignedInfo element.
XMLSignatureValidator
  AIR-onlyidentityStatus : String
[read-only] The validity status of the signing certificate.
XMLSignatureValidator
 Inheritedprototype : Object
[static] A reference to the prototype object of a class or function object.
Object
  AIR-onlyreferencesStatus : String
[read-only] The validity status of the digest of all the references in the SignedInfo element.
XMLSignatureValidator
  AIR-onlyrevocationCheckSetting : String
Specifies how certificate revocation is checked.
XMLSignatureValidator
  AIR-onlysignerCN : String
[read-only] The Common Name field of the signing certificate.
XMLSignatureValidator
  AIR-onlysignerDN : String
[read-only] The Distinguished Name field of the signing certificate.
XMLSignatureValidator
  AIR-onlysignerExtendedKeyUsages : Array
[read-only] An array containing the Extended Key Usages OIDs listed in the signing certificate.
XMLSignatureValidator
  AIR-onlysignerTrustSettings : Array
[read-only] An array containing the trust settings of the signing certificate.
XMLSignatureValidator
  AIR-onlyuriDereferencer : IURIDereferencer
The IURIDereferencer implementation.
XMLSignatureValidator
  AIR-onlyuseSystemTrustStore : Boolean
Specifies that certificates in the system trust store are used for chain building.
XMLSignatureValidator
  AIR-onlyvalidityStatus : String
[read-only] The validity status of a verified XML signature.
XMLSignatureValidator
Public Methods
 MethodDefined By
  
Creates an XMLSignatureValidator object.
XMLSignatureValidator
  
AIR-onlyaddCertificate(cert:ByteArray, trusted:Boolean):*
Adds an x509 certificate for chain building.
XMLSignatureValidator
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event.
EventDispatcher
 Inherited
Dispatches an event into the event flow.
EventDispatcher
 Inherited
Checks whether the EventDispatcher object has any listeners registered for a specific type of event.
EventDispatcher
 Inherited
Indicates whether an object has a specified property defined.
Object
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Removes a listener from the EventDispatcher object.
EventDispatcher
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
 Inherited
Returns the string representation of the specified object.
Object
 Inherited
Returns the primitive value of the specified object.
Object
  
AIR-onlyverify(signature:XML):void
Verifies the specified signature.
XMLSignatureValidator
 Inherited
Checks whether an event listener is registered with this EventDispatcher object or any of its ancestors for the specified event type.
EventDispatcher
Events
 Event Summary Defined By
 Inherited Dispatched when Flash Player or an AIR application gains operating system focus and becomes active.EventDispatcher
   Dispatched when verification is complete.XMLSignatureValidator
 Inherited Dispatched when Flash Player or an AIR application loses operating system focus and is becoming inactive.EventDispatcher
  
AIR-onlyerror
Dispatched if verification cannot complete because of errors.XMLSignatureValidator
Property Detail
AIR-only digestStatusproperty
digestStatus:String  [read-only]

The validity status of the cryptographic signature computed over the SignedInfo element.

The status is:


Implementation
    public function get digestStatus():String

Throws
IllegalOperationError — If accessed while a signature is being validated.
AIR-only identityStatusproperty 
identityStatus:String  [read-only]

The validity status of the signing certificate.

The status can be:

The certificates added using the addCertificate() method and the settings of the revocationCheckSetting and the useSystemTrustStore properties can change whether a certificate is considered valid.


Implementation
    public function get identityStatus():String

Throws
IllegalOperationError — If accessed while a signature is being validated.

See also

AIR-only referencesStatusproperty 
referencesStatus:String  [read-only]

The validity status of the digest of all the references in the SignedInfo element.

The status is:


Implementation
    public function get referencesStatus():String

Throws
IllegalOperationError — If accessed while a signature is being validated.
AIR-only revocationCheckSettingproperty 
revocationCheckSetting:String  [read-write]

Specifies how certificate revocation is checked.

Use constants defined in the RevocationSettings class to set this property. The settings include:


Implementation
    public function get revocationCheckSetting():String
    public function set revocationCheckSetting(value:String):void

Throws
IllegalOperationError — If set while a signature is being validated.

See also

AIR-only signerCNproperty 
signerCN:String  [read-only]

The Common Name field of the signing certificate.


Implementation
    public function get signerCN():String
AIR-only signerDNproperty 
signerDN:String  [read-only]

The Distinguished Name field of the signing certificate.


Implementation
    public function get signerDN():String
AIR-only signerExtendedKeyUsagesproperty 
signerExtendedKeyUsages:Array  [read-only]

An array containing the Extended Key Usages OIDs listed in the signing certificate.

Each extended key usage is reported in numeric OID form.


Implementation
    public function get signerExtendedKeyUsages():Array

Throws
IllegalOperationError — If accessed while a signature is being validated.
AIR-only signerTrustSettingsproperty 
signerTrustSettings:Array  [read-only]

An array containing the trust settings of the signing certificate.

Trust settings are derived from the system and the key usage OIDs embedded in the certificate. Constants for the strings representing the recognized trust settings are defined in the SignerTrustSettings class.

The signerTrustSettings array of an unknown or invalid certificate is empty.

Modifying the array does not change the certificate trust settings.


Implementation
    public function get signerTrustSettings():Array

Throws
IllegalOperationError — If accessed while a signature is being validated.

See also

AIR-only uriDereferencerproperty 
uriDereferencer:IURIDereferencer  [read-write]

The IURIDereferencer implementation.

An IURIDereferencer implementation must be provided before attempting to verify a signature.


Implementation
    public function get uriDereferencer():IURIDereferencer
    public function set uriDereferencer(value:IURIDereferencer):void

Throws
IllegalOperationError — If set while a signature is being validated.

See also

AIR-only useSystemTrustStoreproperty 
useSystemTrustStore:Boolean  [read-write]

Specifies that certificates in the system trust store are used for chain building.

If true, then the trust anchors in the system trust store are used as trusted roots. The system trust store is not used by default.


Implementation
    public function get useSystemTrustStore():Boolean
    public function set useSystemTrustStore(value:Boolean):void

Throws
IllegalOperationError — If set while a signature is being validated.
AIR-only validityStatusproperty 
validityStatus:String  [read-only]

The validity status of a verified XML signature.

The XML signature is verified by validating the digest of the references in the SignedInfo element, the cryptographic signature of the SignedInfo element itself, and the signing certificate. The validity of each of these elements is reported individually by the referencesStatus, digestStatus, and identityStatus() properties, respectively.

The validity of an XML signature can be valid, invalid, or unknown. The overall status depends on the verification status of the individual components of the signature file:

The signature validity reported by the validityStatus property can be:


Implementation
    public function get validityStatus():String

Throws
IllegalOperationError — If accessed while a signature is being validated.

See also

Constructor Detail
AIR-only XMLSignatureValidator()Constructor
public function XMLSignatureValidator()

Creates an XMLSignatureValidator object.

You must set the uriDereferencer property before calling the verify() method of the new object.

See also

Method Detail
AIR-only addCertificate()method
public function addCertificate(cert:ByteArray, trusted:Boolean):*

Adds an x509 certificate for chain building.

The certificate added must be a DER-encoded x509 certificate.

If the trusted parameter is true, the certificate is considered a trust anchor.

Note: An XML signature may include certificates for building the signer's certificate chain. The XMLSignatureValidator class uses these certificates for chain building, but not as trusted roots (by default).

Parameters

cert:ByteArray — A ByteArray object containing a DER-encoded x509 digital certificate.
 
trusted:Boolean — Set to true to designate this certificate as a trust anchor.

Returns
*

Throws
IllegalOperationError — If called while a signature is being validated.
AIR-only verify()method 
public function verify(signature:XML):void

Verifies the specified signature.

Verification is asynchronous. The XMLSignatureValidator object dispatches a complete event when verification completes successfully or an error event if verification cannot complete because of errors.

The verification process cannot be cancelled. While a verification process is under way, subsequent calls to the verify() method fail. After the current verification check is complete, you can call the verify() method again.

Note: Because the XMLSignatureValidator only implements a subset of the W3C recommendation for XML Signature Syntax and Processing, many otherwise valid XML signatures cannot be verified.

Parameters

signature:XML — The XML signature to verify.


Events
complete:Event — Dispatched when verification completes successfully.
 
error:ErrorEvent — Dispatched if the verification of references encounters an error.

Throws
IllegalOperationError — If called while a signature is being validated.
 
Error — If other errors are encountered, such as non-well-formed XML or unsupported elements in the signature file.
Event Detail
AIR-only complete Event
Event Object Type: flash.events.Event
Event.type property = flash.events.Event.COMPLETE

Dispatched when verification is complete.

A complete event does not imply that the signature is valid. Check validityStatus to determine the outcome of the signature verification.

The Event.COMPLETE constant defines the value of the type property of a complete event object.

This event has the following properties:

PropertyValue
bubblesfalse
cancelablefalse; there is no default behavior to cancel.
currentTargetThe object that is actively processing the Event object with an event listener.
targetThe network object that has completed loading.

See also

AIR-only error Event  
Event Object Type: flash.events.ErrorEvent
ErrorEvent.type property = flash.events.ErrorEvent.ERROR

Dispatched if verification cannot complete because of errors.

Defines the value of the type property of an error event object.

This event has the following properties:

PropertyValue
bubblesfalse
cancelablefalse; there is no default behavior to cancel.
currentTargetThe object that is actively processing the Event object with an event listener.
targetThe object experiencing a network operation failure.
textText to be displayed as an error message.