flash.securityXMLSignatureValidator La classe XMLSignatureValidator vérifie si un fichier de signature XML est correctement constitué, s’il n’est pas modifié et, éventuellement, s’il est signé à l’aide d’une clé associée à un certificat numérique approuvé.flash.events:EventDispatcher La classe XMLSignatureValidator vérifie si un fichier de signature XML est correctement constitué, s’il n’est pas modifié et, éventuellement, s’il est signé à l’aide d’une clé associée à un certificat numérique approuvé.

Prise en charge du profil AIR : cette fonctionnalité est prise en charge sur tous les systèmes d’exploitation de bureau et les périphériques AIR pour TV, mais ne l’est pas sur les périphériques mobiles. Vous pouvez tester la prise en charge lors de l’exécution à l’aide de la propriété XMLSignatureValidator.isSupported. Voir Prise en charge du profil AIR pour plus d’informations sur la prise en charge de l’API dans plusieurs profils.

La classe XMLSignatureValidator implémente un sous-ensemble de la recommandation du W3C portant sur la syntaxe et le traitement de XML Signature, bien que ce dernier ne doive pas être considéré comme une implémentation normalisée. Le sous-ensemble de la recommandation pris en charge inclut les éléments suivants :

  • Toute la syntaxe des signatures de base à l’exception de l’élément KeyInfo.
  • L’élément KeyInfo prend en charge uniquement l’élément X509Data.
  • L’élément X509Data prend en charge uniquement l’élément X509Certificate.
  • Algorithme de la méthode digest SHA256.
  • Algorithme de signature PKCS1.
  • Méthode de canonisation « XML canonique sans commentaires » et algorithme de transformation.
  • Elément Manifest dans une syntaxe de signatures supplémentaire.

Vous devez fournir une implémentation IURIDereferencer pour vérifier une signature XML. Cette classe d’implémentation est chargée de résoudre les URI (Uniform Resource Identifier) spécifiés dans les éléments SignedInfo du fichier de signature, puis de renvoyer les données référencées dans un objet, tel que ByteArray, qui implémente l’interface IDataInput.

Pour vérifier que le certificat de signature est lié à un certificat approuvé, deux possibilités s’offrent à vous : soit la signature XML doit contenir les certificats requis pour créer la chaîne dans les éléments X509Certificate, soit vous devez fournir les certificats requis pour créer la chaîne à l’aide de la méthode addCertificate().

Pour vérifier une signature XML :

  1. Créez une occurrence de la classe XMLSignatureValidator.
  2. Définissez la propriété uriDereferencer de l’occurrence sur une occurrence de votre classe d’implémentation IURIDereferencer.
  3. Si vous souhaitez créer la chaîne d’approbation de certificat, fournissez des certificats codés en DER (Distinguished Encoding Rules) à l’aide de la méthode addCertificate().
  4. Appelez la méthode verify de l’objet XMLSignatureValidator, en transmettant la signature à vérifier.
  5. Vérifiez la propriété validityStatus une fois que l’objet XMLSignatureValidator distribue un événement complete.

A propos de l’état des signatures :

Une signature XML peut présenter un état « valid » (valide), non « invalid » (non valide) ou « unknown » (inconnu). L’état général dépend de l’état de vérification des composants individuels du fichier de signature :

  • digestStatus : validité de la signature cryptographique calculée sur l’élément SignedInfo. Les valeurs possibles sont valid, invalid ou unknown.
  • identityStatus : validité du certificat de signature. Si le certificat a expiré, a été révoqué ou altéré, l’état est invalid. S’il s’avère impossible de lier le certificat à un certificat racine approuvé, l’état est unknown. Le certificat n’est pas vérifié si le digest n’est pas valide. S’il n’est pas vérifié, l’état correspond à unknown.
  • referencesStatus : validité des données transmises par les références dans l’élément SignedInfo du fichier de signature. Les valeurs possibles sont valid, invalid ou unknown. Les références ne sont pas vérifiées si le digest ou le certificat n’est pas valide. Il est également possible que la vérification des références ne soit pas effectuée, selon le paramètre de la propriété referencesValidationSetting. S’il n’est pas vérifié, l’état correspond à unknown.

L’état de la signature indiqué par la propriété validityStatus peut être :

  • valid : si les propriétés referencesStatus, digestStatus et identityStatus sont toutes valid.
  • invalid : si l’un des états individuels est invalid.
  • unknown : si referencesStatus, digestStatus ou identityStatus est unknown.

Restrictions concernant la mise en forme canonique :

Le moteur XML d’AIR ne produit pas toujours la chaîne XML attendue lors de la mise en forme canonique d’un document XML. Pour cette raison, nous vous recommandons d’éviter d’insérer des espaces blancs entre les éléments dans les documents de signature enveloppés ou séparés et de ne pas redéfinir les espaces de noms au sein d’un document de signature. Dans les deux cas, AIR peut de ne pas recréer le document avec la même séquence de caractères que celle du document original, ce qui risque d’entraîner l’échec de la validation.

L’exemple suivant charge et vérifie un fichier contenant une signature XML. Pour utiliser cet exemple, vous devez implémenter une classe IURIDereferencer appropriée afin que les signatures soient validées (en remplaçant la classe SignedMessageDereferencer utilisée dans l’exemple). Exécutez l’exemple en appelant SignatureValidatorExample.validateSignature( signatureFile ) et en transmettant le fichier qui référence le document de signature XML à valider. 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 ); } }
IURIDereferencerSyntaxe et traitement de XML SignatureXML canoniquePKCS #1error Distribué si la vérification s’avère impossible à cause d’erreurs.flash.events.ErrorEvent.ERRORflash.events.ErrorEvent Distribué si la vérification s’avère impossible à cause d’erreurs. L’exemple suivant écoute l’événement error distribué par un objet XMLSignatureValidator et localise le message d’erreur : private function verificationError(event:ErrorEvent):void{ trace("Verification error: " + event.text); } complete Distribué une fois la vérification terminée.flash.events.Event.COMPLETEflash.events.Event Distribué une fois la vérification terminée.

Un événement complete n’indique pas la validité d’une signature. Vérifiez la propriété validityStatus de l’objet XMLSignatureValidator afin de déterminer les résultats de la vérification de la signature.

L’exemple suivant écoute l’événement complete distribué par un objet XMLSignatureValidator et localise les résultats de la vérification : 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); }
validityStatus
XMLSignatureValidator Crée un objet XMLSignatureValidator. Crée un objet XMLSignatureValidator.

Vous devez définir la propriété uriDereferencer avant d’appeler la méthode verify() du nouvel objet.

L’exemple suivant crée et définit un nouvel objet XMLSignatureValidator : 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);
uriDereferencer
addCertificate Ajoute un certificat x509 pour la création de la chaîne.Si l’appel a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationErrorcertflash.utils:ByteArrayObjet ByteArray contenant un certificat numérique x509 codé en DER. trustedBooleanDéfini sur true pour désigner ce certificat comme ancre de confiance. Ajoute un certificat x509 pour la création de la chaîne.

Le certificat ajouté doit être un certificat x509 codé en DER.

Si le paramètre trusted est défini sur true, le certificat est considéré comme une ancre de confiance.

Remarque : une signature XML peut inclure des certificats permettant de créer la chaîne de certificats du signataire. Par défaut, la classe XMLSignatureValidator utilise ces certificats pour la création de chaînes, et non comme racines de confiance.

L’exemple suivant charge un certificat à partir du système de fichiers et l’ajoute en tant qu’ancre de confiance. 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 Vérifie la signature spécifiée.Si l’appel a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationErrorEn cas d’erreurs, telles qu’une mauvaise constitution des fichiers XML ou la non prise en charge d’éléments dans le fichier de signature. ErrorErrorsignatureXMLSignature XML à vérifier. Vérifie la signature spécifiée.

La vérification est asynchrone. L’objet XMLSignatureValidator distribue un événement complete lorsque la vérification s’achève avec succès, ou si un événement error est émis lorsque la vérification s’avère impossible à cause d’erreurs.

Il est impossible d’annuler la procédure de vérification. Lorsqu’une vérification est en cours, les appels suivants à la méthode verify() échouent. Une fois la vérification en cours terminée, vous pouvez rappeler la méthode verify().

Remarque : étant donné que l’objet XMLSignatureValidator implémente uniquement un sous-ensemble de la recommandation du W3C portant sur la syntaxe et le traitement des signatures XML, toutes les signatures XML valides ne peuvent pas être vérifiées.

L’exemple suivant lit un fichier contenant une signature XML et la vérifie en appelant la méthode verify() (dans l’exemple suivant, nous supposons que l’implémentation de IURIDereferencer est appropriée pour la signature). 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 );
completeflash.events:EventDistribué lorsque la vérification s’achève avec succès. Distribué lorsque la vérification s’achève avec succès.errorflash.events:ErrorEventDistribué si une erreur se produit lors de la vérification des références. Distribué si une erreur se produit lors de la vérification des références.
digestStatus Etat de validité de la signature cryptographique calculée sur l’élément de signature SignedInfo.StringSi l’accès a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationError Etat de validité de la signature cryptographique calculée sur l’élément de signature SignedInfo.

Le statut est :

  • valid : si la signature est valide au niveau cryptographique.
  • invalid : si la méthode digest a été modifiée après la signature.
  • unknown : si la méthode verify() n’a pas été appelée.

Remarque : si digestStatus est invalid, les états identityStatus et referencesStatus ne sont pas vérifiés et sont indiqués comme unknown.

identityStatus Etat de validité du certificat de signature.StringSi l’accès a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationError Etat de validité du certificat de signature.

Les états possibles sont les suivants :

  • valid : le certificat n’a pas expiré, la vérification de la révocation a été effectuée correctement et il est lié à un certificat racine approuvé.
  • unknown : le certificat n’a pas expiré, la vérification de la révocation a été effectuée correctement, mais il n’est pas lié à un certificat racine approuvé. Le statut unknown est également signalé lorsqu’il n’a pas été vérifié, soit parce que la méthode verify() n’a pas été appelée, soit parce que la signature cryptographique de l’élément SignedInfo (digestStatus) n’est pas valide.
  • invalid : le certificat a expiré ou la vérification de la révocation a échoué.

Les certificats ajoutés à l’aide de la méthode addCertificate(), ainsi que les paramètres des propriétés revocationCheckSetting et useSystemTrustStore peuvent changer lorsqu’un certificat est considéré comme étant valide.

Remarque : si identifyStatus est invalid, l’état referenceStatus n’est pas vérifié et est indiqué comme unknown. En outre, les références ne sont pas vérifiées si l’état identityStatus est unknown, à moins que la propriété referencesValidationSetting soit définie sur validOrUnknownIdentity.

L’exemple suivant obtient les résultats de la vérification du certificat de signature (après qu’une signature a été vérifiée) : import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var identityResult:String = verifier.identityStatus;
addCertificate()revocationCheckSettinguseSystemTrustStorereferencesValidationSetting
isSupported La propriété isSupported est définie sur true si la classe XMLSignatureValidator est disponible sur la plate-forme actuelle ; dans le cas contraire, elle est définie sur false.BooleanIndique si la classe XMLSignatureValidation est prise en charge sur le système client. La propriété isSupported est définie sur true si la classe XMLSignatureValidator est disponible sur la plate-forme actuelle ; dans le cas contraire, elle est définie sur false. referencesStatus Validité des données de toutes les références dans l’élément de signature SignedInfo.StringSi l’accès a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationError Validité des données de toutes les références dans l’élément de signature SignedInfo.

Les états possibles sont les suivants :

  • valid : si toutes les références sont valides.
  • invalid : si l’une des références n’est pas valide.
  • unknown : si aucune référence n’est vérifiée. Il est possible de ne pas vérifier les références dans les cas suivants :
    • la méthode verify() n’a pas été appelée
    • la signature cryptographique de l’élément SignedInfo (digestStatus) n’est pas valide
    • le certificat de signature (identityStatus) n’est pas valide
    • la propriété referencesValidationSetting est définie sur validIdentity (paramètre par défaut) et l’état identityStatus du certificat de signature est unknown
    • la propriété referencesValidationSetting est définie sur never.

Important : les ressources externes ne sont pas vérifiées, à moins qu’elles ne soient référencées directement dans un élément SignedInfo au sein du document de signature. Les ressources externes désignées par une référence secondaire ne sont pas vérifiées. Par exemple, si une signature XML signe un élément manifest, seule l’intégrité de l’élément manifest est vérifiée. Les fichiers répertoriés dans le manifeste ne sont pas vérifiés.

L’exemple suivant obtient les résultats de la vérification des références dans la signature (après qu’une signature a été vérifiée) : import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var dataResult:String = verifier.referencesStatus;
referencesValidationSetting
referencesValidationSetting Spécifie les conditions sous lesquelles les références sont vérifiées.StringSi le paramétrage a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationErrorSi le paramètre setting contient une valeur non définie dans la classe ReferencesValidationSetting. ArgumentErrorArgumentError Spécifie les conditions sous lesquelles les références sont vérifiées.

Utilisez les constantes définies dans la classe ReferencesValidationSetting pour définir cette propriété. Les paramètres sont les suivants :

  • ReferencesValidationSetting.VALID_IDENTITY : vérifiez les références uniquement si le certificat de signature est valide et s’il est lié à un certificat racine approuvé. C’est la valeur par défaut.
  • ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY : vérifiez les références si le certificat de signature est valide, même s’il n’est lié à aucun certificat racine approuvé.
  • ReferencesValidationSetting.NEVER : ne vérifiez jamais les références.

Utilisez le paramètre par défaut, validIdentity, avec les signatures signées à l’aide d’un certificat commercial ou lorsque vous fournissez votre propre certificat en tant qu’ancre de confiance à l’aide de la méthode addCertificate(). Ce paramètre permet d’éviter de vérifier plusieurs fois la validité des références lorsque le document signé est rejeté.

Utilisez le paramètre validOrUnknownIdentity avec les signatures signées à l’aide de certificats auto-signés. Ce paramètre vous permet de vérifier que les données signées n’ont pas été altérées, mais il ne permet pas de vérifier l’identité du signataire.

Utilisez le paramètre never pour éviter de vérifier plusieurs fois les références lorsque cette vérification n’est pas importante dans le contexte de votre application.

L’exemple suivant définit l’objet XMLSignatureValidator de façon à ce qu’il vérifie les références uniquement si le certificat de signature est lié à une ancre de confiance : import flash.security.ReferencesValidationSetting; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.referencesValidationSetting = ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY;
ReferencesValidationSetting
revocationCheckSetting Détermine la méthode de vérification de la révocation des certificats.StringSi le paramétrage a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationError Détermine la méthode de vérification de la révocation des certificats.

Utilisez les constantes définies dans la classe RevocationSettings pour définir cette propriété. Les paramètres sont les suivants :

  • RevocationCheckSettings.NEVER : la révocation des certificats n’est pas vérifiée.
  • RevocationCheckSettings.BEST_EFFORT : la révocation des certificats est vérifiée si les informations de révocation sont disponibles et s’il est possible d’obtenir le statut de révocation. S'il s'avère impossible de déterminer le statut de révocation, le certificat n'est pas rejeté.
  • RevocationCheckSettings.REQUIRED_IF_AVAILABLE : si le certificat dispose d’informations de révocation, il est nécessaire de déterminer le statut de révocation pour le valider.
  • RevocationCheckSettings.ALWAYS_REQUIRED : vérifie toujours la révocation des certificats. Les certificats ne disposant d’aucune information de révocation sont rejetés.
RevocationCheckSettings
signerCN Champ Nom commun du certificat de signature.String Champ Nom commun du certificat de signature. L’exemple suivant lit le nom commun du certificat de signature (après qu’une signature a été vérifiée) : var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var commonName:String = verifier.signerCN; signerDN Champ Nom unique du certificat de signature.String Champ Nom unique du certificat de signature. L’exemple suivant lit le nom unique du certificat de signature (après qu’une signature a été vérifiée) : var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var distinguishedName:String = verifier.signerDN; signerExtendedKeyUsages Tableau contenant les identificateurs d’objets de l’utilisation avancée de la clé répertoriés dans le certificat de signature.ArraySi l’accès a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationError Tableau contenant les identificateurs d’objets de l’utilisation avancée de la clé répertoriés dans le certificat de signature.

Chaque utilisation avancée de la clé est indiquée sous forme d’identificateur d’objet numérique.

L’exemple suivant lit les identificateurs d’objets de l’utilisation avancée de la clé du certificat de signature (après qu’une signature a été vérifiée) : import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var extendedKeyOIDs:Array = verifier.signerExtendedKeyUsages;
signerTrustSettings Tableau contenant les paramètres d’approbation du certificat de signature.ArraySi l’accès a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationError Tableau contenant les paramètres d’approbation du certificat de signature.

Les paramètres d’approbation proviennent du système et des identificateurs d’objets incorporés dans le certificat. Les constantes des chaînes représentant les paramètres d’approbation reconnus sont définies dans la classe SignerTrustSettings.

Le tableau signerTrustSettings d’un certificat unknown ou invalid est vide.

La modification du tableau ne permet pas de modifier les paramètres d’approbation du certificat.

L’exemple suivant lit les paramètres de confiance du certificat de signature (après qu’une signature a été vérifiée) : import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var certificateTrustedFor:Array = verifier.signerTrustSettings;
SignerTrustSettings
uriDereferencer Implémentation de IURIDereferencer.flash.security:IURIDereferencerSi le paramétrage a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationError Implémentation de IURIDereferencer.

Vous devez fournir une implémentation de IURIDereferencer avant de vérifier une signature.

L’exemple suivant crée une occurrence de SignedMessageDereferencer, qui implémente l’interface IURIDereferencer, puis la définit comme outil de déférencement à utiliser pour la validation de la signature : import com.example.SignedMessageDereferencer; //A custom class implementing IURIDereferencer var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.uriDereferencer = new SignedMessageDereferencer();
IURIDereferencer
useSystemTrustStore Indique que les certificats dans le magasin d’approbations du système sont utilisés pour la création de chaînes.BooleanSi le paramétrage a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationError Indique que les certificats dans le magasin d’approbations du système sont utilisés pour la création de chaînes.

Si la valeur true est définie, les ancres de confiance dans le magasin d’approbations du système sont utilisées comme racines de confiance. Par défaut, le magasin d’approbations du système n’est pas utilisé.

L’exemple suivant crée une occurrence de XMLSignatureValidator et la définit de façon à utiliser le référentiel système des certificats approuvés lors de la vérification d’une signature XML : var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.useSystemTrustStore = true;
validityStatus Etat de validité d’une signature XML vérifiée.StringSi l’accès a lieu lorsqu’une signature est en cours de validation. IllegalOperationErrorflash.errors:IllegalOperationError Etat de validité d’une signature XML vérifiée.

La signature XML est vérifiée en validant la signature cryptographique de l’élément SignedInfo, le certificat de signature et les données transmises par les références dans l’élément SignedInfo. La validité de ces éléments est indiquée individuellement par les propriétés digestStatus, identityStatus() et referencesStatus, respectivement.

Une signature XML peut présenter un état « valid » (valide), non « invalid » (non valide) ou « unknown » (inconnu). L’état général dépend de l’état de vérification des composants individuels du fichier de signature :

  • digestStatus : validité de la signature cryptographique calculée sur l’élément SignedInfo.
  • identityStatus : validité du certificat de signature.
  • referencesStatus : validité de la méthode digest des références dans l’élément de signature SignedInfo.

L’état de la signature indiqué par la propriété validityStatus peut être :

  • valid : si les propriétés referencesStatus, digestStatus et identityStatus sont toutes valid.
  • invalid : si l’un des états individuels est invalid.
  • unknown : si l’un des états individuels est unknown.
L’exemple suivant obtient les résultats de la validation de la signature XML import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate the signature... var validationResult:String = verifier.validityStatus;
digestStatusidentityStatusreferencesStatusSignatureStatus
IURIDereferencer IURIDereferencer définit une interface pour les objets qui résolvent les URI dans une signature XML. IURIDereferencer définit une interface pour les objets qui résolvent les URI dans une signature XML.

L’implémentation IURIDereferencer est chargée de résoudre les URI spécifiés dans les éléments SignedInfo d’un fichier de signature XML, puis de renvoyer les données référencées dans un objet, tel que ByteArray, qui implémente l’interface IDataInput.

L’interface dispose d’une méthode : dereference(). En général, l’implémentation requiert également une méthode permettant de transmettre à la méthode dereference l’objet de signature XML contenant les URI à résoudre.

L’interface IURIDereferencer est utilisée avec la classe XMLSignatureValidator.

XMLSignatureValidatorXMLSignatureValidator.uriDereferencerdereference Résout et annule la référence de l’URI spécifié.Données référencées par l’URI. flash.utils:IDataInputuriStringURI dont il faut annuler la référence. Résout et annule la référence de l’URI spécifié.
SignerTrustSettings La classe SignerTrustSettings définit les constantes utilisées avec la propriété SignerTrustSettings d’un objet XMLSignatureValidator.Object La classe SignerTrustSettings définit les constantes utilisées avec la propriété SignerTrustSettings d’un objet XMLSignatureValidator. XMLSignatureValidator.signerTrustSettingsCODE_SIGNING Le certificat est approuvé pour la signature du code.codeSigningString Le certificat est approuvé pour la signature du code. Ceci implique que le certificat soit lié à une racine approuvée, que cette racine soit approuvée pour la signature du code, et que le certificat de signature dispose de l’identificateur d’objet CodeSigning dans son extension d’utilisation avancée de la clé. PLAYLIST_SIGNING Le certificat est approuvé pour la signature des listes de lecture.playlistSigningString Le certificat est approuvé pour la signature des listes de lecture. Ceci implique que le certificat soit lié à une racine approuvée et dispose de l’identificateur d’objet PlaylistSigning dans son extension d’utilisation avancée de la clé. SIGNING Le certificat est approuvé pour la signature en général.signingString Le certificat est approuvé pour la signature en général. SignatureStatus La classe SignatureStatus définit les constantes utilisées par la propriété validityStatus d’un objet XMLSignatureValidator.Object La classe SignatureStatus définit les constantes utilisées par la propriété validityStatus d’un objet XMLSignatureValidator. XMLSignatureValidator.validityStatusINVALID Etat non valide.invalidString Etat non valide. UNKNOWN Etat inconnu.unknownString Etat inconnu. VALID Etat valide.validString Etat valide. ReferencesValidationSetting La classe ReferencesValidationSetting définit les constantes utilisées par la propriété referencesValidationSetting d’un objet XMLSignatureValidator.Définit des constantes pour les modes pris en charge pour la validation de données référencées dans une signature XML. Object La classe ReferencesValidationSetting définit les constantes utilisées par la propriété referencesValidationSetting d’un objet XMLSignatureValidator. XMLSignatureValidator.ReferencesValidationSettingNEVER Ne vérifiez jamais les références.neverString Ne vérifiez jamais les références. VALID_IDENTITY Ne vérifiez les références que si le certificat de signature est valide et approuvé.validIdentityString Ne vérifiez les références que si le certificat de signature est valide et approuvé. VALID_OR_UNKNOWN_IDENTITY Vérifiez les références même si le certificat de signature n’est pas approuvé (c’est-à-dire s’il n’est pas lié à un certificat racine approuvé).validOrUnknownIdentityString Vérifiez les références même si le certificat de signature n’est pas approuvé (c’est-à-dire s’il n’est pas lié à un certificat racine approuvé). RevocationCheckSettings La classe RevocationCheckSettings définit les constantes utilisées par la propriété revocationCheckSetting d’un objet XMLSignatureValidator.Object La classe RevocationCheckSettings définit les constantes utilisées par la propriété revocationCheckSetting d’un objet XMLSignatureValidator. XMLSignatureValidator.revocationCheckSettingALWAYS_REQUIRED Vérifie toujours la révocation des certificats.alwaysRequiredString Vérifie toujours la révocation des certificats. Les certificats ne disposant d’aucune information de révocation sont rejetés. BEST_EFFORT La révocation des certificats est vérifiée si les informations de révocation sont disponibles et s’il est possible d’obtenir le statut de révocation.bestEffortString La révocation des certificats est vérifiée si les informations de révocation sont disponibles et s’il est possible d’obtenir le statut de révocation. S'il s'avère impossible de déterminer le statut de révocation, le certificat n'est pas rejeté. NEVER Ne vérifie pas la révocation des certificats.neverString Ne vérifie pas la révocation des certificats. REQUIRED_IF_AVAILABLE Vérifie la révocation des certificats si le certificat comprend des informations sur la révocation.requiredIfInfoAvailableString Vérifie la révocation des certificats si le certificat comprend des informations sur la révocation. Si les informations sont disponibles, mais que le statut de la révocation ne peut pas être clairement déterminé, le certificat est rejeté. CertificateStatus La classe CertificateStatus définit les constantes utilisées pour communiquer les résultats de la validation du certificat par un objet SecureSocket.Object La classe CertificateStatus définit les constantes utilisées pour communiquer les résultats de la validation du certificat par un objet SecureSocket. SecureSocket.serverCertificateStatusEXPIRED La période de validité du certificat est échue.expiredString La période de validité du certificat est échue.

Indique qu’une tentative de validation du certificat a échoué, car la période de validité du certificat est soit avant soit après la date actuelle. Sur certains systèmes d’exploitation, l’état notYetValid est signalé lorsque la date actuelle est avant la période de validité du certificat. Sur d’autres systèmes d’exploitation, l’état expired est signalé dans les deux cas.

INVALID_CHAIN Un certificat racine ou intermédiaire dans cette chaîne de certificats n’est pas valide.invalidChainString Un certificat racine ou intermédiaire dans cette chaîne de certificats n’est pas valide.

Indique qu’une tentative de validation de certificat a eu lieu, mais a échoué car la chaîne d’approbation du certificat n’était pas valide.

INVALID Un certificat non valide.invalidString Un certificat non valide.

Indique qu’une tentative de validation de certificat a eu lieu, mais a échoué. Il s’agit de l’état d’échec générique signalé lorsqu’il est impossible de déterminer l’état d’un certificat spécifique.

NOT_YET_VALID Le certificat n’est pas encore valide.notYetValidString Le certificat n’est pas encore valide.

Indique qu’un certificat n’est pas encore valide. La date actuelle est antérieure à la date/heure notBefore du certificat.

PRINCIPAL_MISMATCH Le nom commun du certificat ne correspond pas au nom d’hôte attendu.principalMismatchString Le nom commun du certificat ne correspond pas au nom d’hôte attendu.

Indique qu’une tentative de validation de certificat a eu lieu, mais a échoué car le nom commun du certificat ne correspond pas au nom de domaine complet de l’hôte.

REVOKED Le certificat a été révoqué.revokedString Le certificat a été révoqué.

Indique qu’une tentative de validation de certificat a échoué, car le certificat a été révoqué. Sur certains systèmes d’exploitation, l’état revoked est également signalé lorsque le certificat (ou son certificat racine) a été ajouté à la liste des certificats non approuvés sur l’ordinateur client.

TRUSTED Un certificat valide et approuvé.trustedString Un certificat valide et approuvé.

Indique que le certificat n’a pas expiré, qu’il a survécu à une vérification de révocation et qu’il est lié à un certificat racine approuvé.

UNKNOWN La validité du certificat est inconnue.unknownString La validité du certificat est inconnue.

Indique qu’un certificat n’a pas encore été validé.

UNTRUSTED_SIGNERS Le certificat n’est pas lié à un certificat racine approuvé.untrustedSignersString Le certificat n’est pas lié à un certificat racine approuvé.

Indique qu’une tentative de validation de certificat a échoué, car le certificat n’est lié à aucun des certificats racine situés dans le magasin d’approbations du client. Sur certains systèmes d’exploitation, l’état untrustedSigners est également signalé si le certificat figure dans la liste des certificats non approuvés sur l’ordinateur client.