Paquete | flash.security |
Clase | public class XMLSignatureValidator |
Herencia | XMLSignatureValidator EventDispatcher Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Compatibilidad con perfil de AIR: esta característica se admite en todos los sistemas operativos de escritorio y en dispositivos de AIR para TV, pero no en dispositivos móviles. Puede comprobar la compatibilidad en tiempo de ejecución mediante la propiedad XMLSignatureValidator.isSupported
. Consulte Compatibilidad con perfil de AIR para obtener información sobre la compatibilidad de la API con varios perfiles.
XMLSignatureValidator implementa un subconjunto de la recomendación del W3C sobre procesamiento y sintaxis de XML Signature y no debe considerarse como una implementación estandarizada. El subconjunto admitido de la recomendación incluye:
- Toda la sintaxis central de firma excepto el elemento KeyInfo.
- El elemento KeyInfo sólo admite el elemento X509Data.
- El elemento X509Data sólo admite el elemento X509Certificate.
- Algoritmo del método digest SHA256.
- Algoritmo de firma PKCS1.
- Método de canonización "XML canónico sin comentarios" y algoritmo de transformación.
- Elemento Manifest en sintaxis de firma adicional.
Debe proporcionar una implementación de IURIDereferencer para poder verificar una firma XML. Esta clase de implementación es la responsable de resolver las URI especificadas en los elementos SignedInfo del archivo de firma y de devolver los datos a los que se hace referencia en el objeto, por ejemplo ByteArray, que implementa la interfaz IDataInput.
Para poder verificar que el certificado de firma se vincula a un certificado de confianza, la firma XML debe contener los certificados necesarios para crear el vínculo en los elementos X509Certificate, o bien se deben suministrar estos certificados para poder crear el vínculo mediante el método addCertificate()
.
Para verificar el XMLSignature:
- Cree una instancia de la clase XMLSignatureValidator.
- Establezca la propiedad
uriDereferencer
de la instancia en una instancia de su clase de implementación IURIDereferencer. - Si lo desea, puede utilizar el método
addCertificate
para proporcionar certificados con codificación DER que permitan crear el vínculo de confianza con el certificado. - Llame al método
verify
de XMLSignatureValidator y transfiera la firma que se va a verificar. - Verifique la propiedad
validityStatus
cuando el objeto XMLSignatureValidator haya distribuido un evento complete.
El estado de la firma:
La validez de una firma XML puede tener los valores valid (válido), invalid (no válido) o unknown (desconocido). El estado general depende del estado de verificación de los distintos componentes del archivo de firma:
-
digestStatus
: la validez de la firma criptográfica calculada sobre el elemento SignedInfo. Puede servalid
,invalid
ounknown
. -
identityStatus
: la validez del certificado de firma. Si el certificado ha caducado, se ha rechazado o modificado, el estado esinvalid
. Si el certificado no se puede vincular a un certificado raíz de confianza, el estado esunknown
. El certificado no se comprueba si el digest no es válido. Si no se verifica, el estado seráunknown
. -
referencesStatus
: la validez de los datos asociados con las referencias del elemento SignedInfo del archivo de firma. Puede servalid
,invalid
ounknown
. Las referencias no se comprueban si el digest o el certificado no son válidos. La comprobación de referencias se puede omitir en función de los parámetros de la propiedadreferencesValidationSetting
. Si no se verifica, el estado seráunknown
.
La validez de firma registrada en la propiedad validityStatus
puede ser:
-
valid
: sireferencesStatus
,digestStatus
yidentityStatus
son todosvalid
. -
invalid
: si alguno de los estados individuales esinvalid
. -
unknown
: sireferencesStatus
,digestStatus
oidentityStatus
sonunknown
.
Limitaciones de canonización:
El motor XML de AIR no siempre genera la cadena XML esperada cuando se canoniza un documento XML. Por este motivo, se recomienda evitar los espacios en blanco entre elementos en documentos de firma adjuntos o independientes, y no redefinir espacios de nombres dentro de documentos de firma. En ambos casos, AIR tal vez no pueda recrear el documento con la misma secuencia de caracteres que el original, por lo que la validación fallará.
Más información
Elementos de API relacionados
Propiedad | Definido por | ||
---|---|---|---|
constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. | Object | ||
digestStatus : String [solo lectura]
El estado de validez de la firma criptográfica calculada sobre el elemento de firma SignedInfo. | XMLSignatureValidator | ||
identityStatus : String [solo lectura]
Estado de validez del certificado de firma. | XMLSignatureValidator | ||
isSupported : Boolean [estática] [solo lectura]
La propiedad isSupported se establece en true si la clase XMLSignatureValidator se admite en la plataforma actual; en caso contrario, se establece en false. | XMLSignatureValidator | ||
referencesStatus : String [solo lectura]
El estado de validez de los datos en las referencias del elemento de firma SignedInfo. | XMLSignatureValidator | ||
referencesValidationSetting : String
Especifica las condiciones en las que se comprueban determinadas referencias. | XMLSignatureValidator | ||
revocationCheckSetting : String
Especifica el modo en que se comprueba la revocación del certificado. | XMLSignatureValidator | ||
signerCN : String [solo lectura]
El campo de nombre frecuente del certificado de firma. | XMLSignatureValidator | ||
signerDN : String [solo lectura]
El campo de nombre único del certificado de firma. | XMLSignatureValidator | ||
signerExtendedKeyUsages : Array [solo lectura]
Un conjunto que contiene los OID de usos de clave extendida incluidos en el certificado de firma. | XMLSignatureValidator | ||
signerTrustSettings : Array [solo lectura]
Conjunto que contiene los parámetros de confianza del certificado de firma. | XMLSignatureValidator | ||
uriDereferencer : IURIDereferencer
La implementación de IURIDereferencer. | XMLSignatureValidator | ||
useSystemTrustStore : Boolean
Especifica que los certificados del almacén de confianza del sistema se utilizan para la creación del vínculo. | XMLSignatureValidator | ||
validityStatus : String [solo lectura]
Estado de validez de una firma XML verificada. | XMLSignatureValidator |
Método | Definido por | ||
---|---|---|---|
Crea un objeto XMLSignatureValidator. | XMLSignatureValidator | ||
Añade un certificado x509 a la creación del vínculo. | XMLSignatureValidator | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un objeto de detector de eventos con un objeto EventDispatcher, de modo que el detector reciba la notificación de un evento. | EventDispatcher | ||
Distribuye un evento en el flujo del evento. | EventDispatcher | ||
Comprueba si el objeto EventDispatcher tiene detectores registrados para un tipo concreto de evento. | EventDispatcher | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Elimina un detector del objeto EventDispatcher. | EventDispatcher | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Devuelve el valor simple del objeto especificado. | Object | ||
Verifica la firma especificada. | XMLSignatureValidator | ||
Comprueba si hay registrado un detector de eventos con este objeto EventDispatcher o con cualquiera de sus ascendientes para el tipo de evento concreto. | EventDispatcher |
Evento | Resumen | Definido por | ||
---|---|---|---|---|
[evento broadcast] Se distribuye cuando Flash Player o AIR pasan a estar activos. | EventDispatcher | |||
Se distribuye una vez completada la verificación. | XMLSignatureValidator | |||
[evento broadcast] Se distribuye cuando Flash Player o de AIR pasan a estar inactivos. | EventDispatcher | |||
Se distribuye si no se puede completar la verificación por la aparición de errores. | XMLSignatureValidator |
digestStatus | propiedad |
digestStatus:String
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
El estado de validez de la firma criptográfica calculada sobre el elemento de firma SignedInfo.
El estado puede ser:
valid
: si la firma es válida criptográficamente.invalid
: si se ha modificado el método digest tras la firma.unknown
: si no se ha llamado al métodoverify()
.
Nota: si digestStatus
no es válido, identityStatus
y referencesStatus
no se comprueban y se consideran unknown
.
Implementación
public function get digestStatus():String
Emite
IllegalOperationError — Si se accede durante el proceso de validación de una firma.
|
identityStatus | propiedad |
identityStatus:String
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Estado de validez del certificado de firma.
El estado puede ser:
valid
: el certificado no ha caducado, no se han producido errores en la comprobación de revocación y se ha vinculado a un certificado raíz de confianza.unknown
: el certificado no ha caducado, no se han producido errores en la comprobación de revocación, pero no se ha vinculado a ningún certificado raíz de confianza. El estadounknown
también se activa si no se ha verificado el estado, bien porque no se ha llamado al métodoverify()
o porque la firma criptográfica del elemento SignedInfo (digestStatus
) no es válida.invalid
: el certificado ha caducado o se han producido errores en la comprobación de revocación.
Los certificados añadidos con el método addCertificate()
y las propiedades de revocationCheckSetting
y useSystemTrustStore
pueden definir si un certificado se considera válido o no.
Nota: si identityStatus
no es válido, referencesStatus
no se comprueba y se considera unknown
. Además, las referencias tampoco se comprueban si identityStatus
es desconocido, a no ser que referencesValidationSetting
sea validOrUnknownIdentity
Implementación
public function get identityStatus():String
Emite
IllegalOperationError — Si se accede durante el proceso de validación de una firma.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var identityResult:String = verifier.identityStatus;
isSupported | propiedad |
isSupported:Boolean
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
La propiedad isSupported
se establece en true
si la clase XMLSignatureValidator se admite en la plataforma actual; en caso contrario, se establece en false
.
Implementación
public static function get isSupported():Boolean
referencesStatus | propiedad |
referencesStatus:String
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
El estado de validez de los datos en las referencias del elemento de firma SignedInfo.
El estado puede ser:
valid
: si todas las referencias son válidas.invalid
: si alguna referencia no es válida.unknown
: si no está verificado. Las referencias pueden quedar sin verificar en las circunstancias siguientes:- no se ha llamado al método
verify()
. - la firma criptográfica del elemento SignedInfo (
digestStatus
) no es válida. - el certificado de firma (
identityStatus
) no es válido. referencesValidationSetting
esvalidIdentity
(parámetro predeterminado) y el estadoidentityStatus
del certificado de firma es desconocido.referencesValidationSetting
esnever
.
- no se ha llamado al método
Importante: los recursos externos no se validan a no ser que hagan referencia directa a un elemento SignedInfo del documento de firma. Los recursos externos a los que hace referencia una referencia secundaria no se validan. Por ejemplo, si una firma XML firma un elemento manifest, sólo se verificará la integridad del propio elemento manifest. Los archivos incluidos en el elemento manifest no se comprueban.
Implementación
public function get referencesStatus():String
Emite
IllegalOperationError — Si se accede durante el proceso de validación de una firma.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var dataResult:String = verifier.referencesStatus;
referencesValidationSetting | propiedad |
referencesValidationSetting:String
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.5 |
Especifica las condiciones en las que se comprueban determinadas referencias.
Utilice las constantes definidas en la clase ReferencesValidationSetting para establecer esta propiedad. Entre los parámetros se incluye:
ReferencesValidationSetting.VALID_IDENTITY
: comprueba referencias sólo si el certificado de firma es válido y enlaza a una raíz de confianza. Este es el valor predeterminado.ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY
: comprueba referencias si el certificado de firma es válido, incluso si no enlaza a ninguna raíz de confianza.ReferencesValidationSetting.NEVER
: no comprueba referencias nunca.
Utilice el parámetro predeterminado validIdentity
con firmas autorizadas con certificados comerciales o proporcione su propio certificado como anclaje de confianza con el método addCertificate()
. Esta configuración impide la sobre carga de comprobación de validez de referencias si el documento firmado se va a rechazar de todas formas.
Utilice el parámetro validOrUnknownIdentity
con firmas firmadas con certificados autofirmados. Este parámetro permite validar datos firmados que no hayan sido modificados, pero no garantiza la identidad del firmante.
Utilice el parámetro never
para evitar la sobre carga de validación de referencias si dicha validación no es crucial en el contexto de su aplicación.
Implementación
public function get referencesValidationSetting():String
public function set referencesValidationSetting(value:String):void
Emite
IllegalOperationError — Si se establece durante el proceso de validación de una firma.
| |
ArgumentError — si el parámetro setting contiene un valor no definido en la clase ReferencesValidationSetting.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
import flash.security.ReferencesValidationSetting; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.referencesValidationSetting = ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY;
revocationCheckSetting | propiedad |
revocationCheckSetting:String
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Especifica el modo en que se comprueba la revocación del certificado.
Utilice las constantes definidas en la clase RevocationSettings para establecer esta propiedad. Entre los parámetros se incluye:
RevocationCheckSettings.NEVER
: no se comprueba la revocación del certificado.RevocationCheckSettings.BEST_EFFORT
: se comprueba la revocación del certificado en caso de estar disponible su información, y es posible obtener el estado de la revocación. Si no es posible determinar el estado de la revocación, el certificado no se rechaza.RevocationCheckSettings.REQUIRED_IF_AVAILABLE
: si el certificado contiene información de la revocación, deberá determinarse obligatoriamente su estado para validar el certificado.RevocationCheckSettings.ALWAYS_REQUIRED
: siempre se comprueba la revocación del certificado. Los certificados sin información de revocación se rechazan.
Implementación
public function get revocationCheckSetting():String
public function set revocationCheckSetting(value:String):void
Emite
IllegalOperationError — Si se establece durante el proceso de validación de una firma.
|
Elementos de API relacionados
signerCN | propiedad |
signerCN:String
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
El campo de nombre frecuente del certificado de firma.
Implementación
public function get signerCN():String
Ejemplo ( Cómo utilizar este ejemplo )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var commonName:String = verifier.signerCN;
signerDN | propiedad |
signerDN:String
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
El campo de nombre único del certificado de firma.
Implementación
public function get signerDN():String
Ejemplo ( Cómo utilizar este ejemplo )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var distinguishedName:String = verifier.signerDN;
signerExtendedKeyUsages | propiedad |
signerExtendedKeyUsages:Array
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Un conjunto que contiene los OID de usos de clave extendida incluidos en el certificado de firma.
Cada uso de clave extendida se registra en formato de OID numérico.
Implementación
public function get signerExtendedKeyUsages():Array
Emite
IllegalOperationError — Si se accede durante el proceso de validación de una firma.
|
Ejemplo ( Cómo utilizar este ejemplo )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var extendedKeyOIDs:Array = verifier.signerExtendedKeyUsages;
signerTrustSettings | propiedad |
signerTrustSettings:Array
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Conjunto que contiene los parámetros de confianza del certificado de firma.
Los parámetros de confianza se derivan del sistema y de los OID de uso de claves incorporados en el certificado. Las constantes de las cadenas que representan los parámetros de confianza conocidos se definen en la clase SignerTrustSettings.
El conjunto signerTrustSettings
de un certificado unknown
o invalid
está vacío.
Modificar la raíz no cambia los parámetros de confianza del certificado.
Implementación
public function get signerTrustSettings():Array
Emite
IllegalOperationError — Si se accede durante el proceso de validación de una firma.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var certificateTrustedFor:Array = verifier.signerTrustSettings;
uriDereferencer | propiedad |
uriDereferencer:IURIDereferencer
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
La implementación de IURIDereferencer.
Se debe proporcionar una implementación de IURIDereferencer antes de intentar verificar una firma.
Implementación
public function get uriDereferencer():IURIDereferencer
public function set uriDereferencer(value:IURIDereferencer):void
Emite
IllegalOperationError — Si se establece durante el proceso de validación de una firma.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
import com.example.SignedMessageDereferencer; //A custom class implementing IURIDereferencer var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.uriDereferencer = new SignedMessageDereferencer();
useSystemTrustStore | propiedad |
useSystemTrustStore:Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Especifica que los certificados del almacén de confianza del sistema se utilizan para la creación del vínculo.
Si es true
, las anclas de confianza del almacén de confianza del sistema se utilizan como raíces de confianza. El almacén de confianza del sistema no se utiliza de forma predeterminada.
Implementación
public function get useSystemTrustStore():Boolean
public function set useSystemTrustStore(value:Boolean):void
Emite
IllegalOperationError — Si se establece durante el proceso de validación de una firma.
|
Ejemplo ( Cómo utilizar este ejemplo )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.useSystemTrustStore = true;
validityStatus | propiedad |
validityStatus:String
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Estado de validez de una firma XML verificada.
La firma XML se verifica mediante la validación de la firma criptográfica del elemento SignedInfo, el certificado de firma y lo sdatos asociados por las referencias del elemento SignedInfo. La validez de cada uno de estos elementos se asume individualmente mediante las propiedades digestStatus
, identityStatus()
y referencesStatus
, respectivamente.
La validez de una firma XML puede tener los valores valid (válido), invalid (no válido) o unknown (desconocido). El estado general depende del estado de verificación de los distintos componentes del archivo de firma:
digestStatus
: la validez de la firma criptográfica calculada sobre el elemento SignedInfo.identityStatus
: la validez del certificado de firma.referencesStatus
: la validez del método digest de las referencias del elemento de firma SignedInfo.
La validez de firma registrada en la propiedad validityStatus
puede ser:
valid
: sireferencesStatus
,digestStatus
yidentityStatus
son todosvalid
.invalid
: si alguno de los estados individuales esinvalid
.unknown
: si algún estado individual esunknown
.
Implementación
public function get validityStatus():String
Emite
IllegalOperationError — Si se accede durante el proceso de validación de una firma.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate the signature... var validationResult:String = verifier.validityStatus;
XMLSignatureValidator | () | Información sobre |
public function XMLSignatureValidator()
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Crea un objeto XMLSignatureValidator.
Debe establecer la propiedad uriDereferencer
antes de llamar al método verify()
del nuevo objeto.
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
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 | () | método |
public function addCertificate(cert:ByteArray, trusted:Boolean):*
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Añade un certificado x509 a la creación del vínculo.
El certificado añadido debe ser un certificado x509 con codificación DER.
Si el parámetro trusted
es true
, el certificado se considera un ancla de confianza.
Nota: una firma XML puede contener certificados para crear el vínculo de certificados del firmante. De forma predeterminada, la clase XMLSignatureValidator utiliza estos certificados para crear el vínculo, pero no como raíces de confianza.
Parámetros
cert:ByteArray — Un objeto ByteArray con un certificado digital x509 con codificación DER.
| |
trusted:Boolean — Establézcalo en true para designar que el certificado es un ancla de confianza.
|
* |
Emite
IllegalOperationError — Si se llama mientras se valida una firma.
|
Ejemplo ( Cómo utilizar este ejemplo )
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 | () | método |
public function verify(signature:XML):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Verifica la firma especificada.
La verificación es asíncrona. El objeto XMLSignatureValidator distribuye un evento complete
cuando la verificación finaliza correctamente, o distribuye un evento error
si la verificación no puede completarse por la aparición de errores.
No es posible cancelar el proceso de verificación. Una vez iniciado el proceso de verificación, las llamadas que se realicen al método verify()
fallan. Una vez completado el proceso de verificación, puede volver a llamar al método verify()
.
Nota: dado que XMLSignatureValidator únicamente implemente un subconjunto de la recomendación del W3C para el procesado y sintaxis de firma XML, no todas las firmas que no son XML se pueden verificar.
Parámetros
signature:XML — La firma XML que se va a verificar.
|
Eventos
complete: — Se distribuye cuando la verificación finaliza correctamente.
| |
error: — Se distribuye si se produce un error durante la verificación de referencias.
|
Emite
IllegalOperationError — Si se llama mientras se valida una firma.
| |
Error — Si se producen otros errores, como XML mal formado o elementos no admitidos en el archivo de firma.
|
Ejemplo ( Cómo utilizar este ejemplo )
verify()
. (El ejemplo asume que la implementación de IURIDereferencer es la correcta para el tipo de firma.)
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 | Evento |
flash.events.Event
propiedad Event.type =
flash.events.Event.COMPLETE
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Se distribuye una vez completada la verificación.
Un evento complete
no implica que la firma sea válida. Verifique la propiedad validityStatus
del objeto XMLSignatureValidator para determinar el resultado de la verificación de la firma.
Event.COMPLETE
define el valor de la propiedad type
de un objeto de evento complete
.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | Objeto de red que ha terminado de cargarse. |
Ejemplo ( Cómo utilizar este ejemplo )
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); }
Elementos de API relacionados
error | Evento |
flash.events.ErrorEvent
propiedad ErrorEvent.type =
flash.events.ErrorEvent.ERROR
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Se distribuye si no se puede completar la verificación por la aparición de errores.
Define el valor de la propiedadtype
de un objeto de evento error
.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | El objeto en el que se produce un error de operación de red. |
text | Texto que se mostrará como mensaje de error. |
Ejemplo ( Cómo utilizar este ejemplo )
private function verificationError(event:ErrorEvent):void{ trace("Verification error: " + event.text); }
SignatureValidatorExample.validateSignature(signatureFile)
y transfiera el archivo que hace referencia al documento de firma XML que se va a validar.
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, 02:12 PM Z