flash.securityXMLSignatureValidator Die XMLSignatureValidator-Klasse überprüft sowohl, ob eine XML-Signaturdatei gut strukturiert und unverändert ist, als auch optional, ob sie mit einem Schlüssel signiert wurde, der mit einem vertrauenswürdigen digitalen Zertifikat verknüpft ist.flash.events:EventDispatcher Die XMLSignatureValidator-Klasse überprüft sowohl, ob eine XML-Signaturdatei gut strukturiert und unverändert ist, als auch optional, ob sie mit einem Schlüssel signiert wurde, der mit einem vertrauenswürdigen digitalen Zertifikat verknüpft ist.

Unterstützung von AIR-Profilen: Diese Funktion wird unter allen Desktopbetriebssystemen und auf Geräten mit AIR für TV unterstützt, jedoch nicht auf mobilen Geräten. Mit der XMLSignatureValidator.isSupported-Eigenschaft können Sie testen, ob zur Laufzeit Unterstützung gegeben ist. Weitere Informationen zum AIR-Support über mehrere Profile finden Sie unter Unterstützung von AIR-Profilen.

XMLSignatureValidator implementiert einen Teilsatz der W3C-Empfehlung für XML-Signatursyntax- und -verarbeitung und sollte nicht als konforme Implementierung betrachtet werden. Der unterstützte Teilsatz der Empfehlung enthält:

  • Die gesamte Kernsignatursyntax mit Ausnahme des KeyInfo-Elements.
  • Das KeyInfo-Element unterstützt nur das X509Data-Element.
  • Das X509Data-Element unterstützt nur das X509Certificate-Element.
  • Der SHA256-Digestmethodenalgorithmus.
  • Der PKCS1-Signieralgorithmus.
  • Die „Canonical XML without comments“-Kanonisierungsmethode und Transformationsalgorithmus.
  • Das Manifest-Element in zusätzlicher Signatursyntax.

Sie müssen eine IURIDereferencer-Implementierung zur Verfügung stellen, um eine XML-Signatur zu verifizieren. Diese Implementierungsklasse ist zuständig für das Auflösen der URIs, die in den SignedInfo-Elementen der Signaturdatei angegeben sind und die referenzierten Daten in einem Objekt zurückgeben, zum Beispiel ein ByteArray, das die IDataInput-Schnittstelle implementiert.

Um zu überprüfen, ob das Signierzertifikat mit einem vertrauenswürdigen Zertifikat verkettet ist, muss entweder die XML-Signatur die zum Bilden der Kette in X509Certificate-Elementen erforderlichen Zertifikate enthalten oder Sie müssen die zum Bilden der Kette erforderlichen Zertifikate über die addCertificate()-Methode bereitstellen.

Überprüfen einer XMLSignatur:

  1. Erstellen Sie eine Instanz der XMLSignatureValidator-Klasse.
  2. Stellen Sie die uriDereferencer-Eigenschaft der Instanz auf eine Instanz Ihrer IURIDereferencer-Implementierungsklasse ein.
  3. (Optional) Stellen Sie über die addCertificate()-Methode DER-kodierte Zertifikate zum Bilden der vertrauenswürdigen Zertifikatkette bereit.
  4. Rufen Sie die verify-Methode von XMLSignatureValidator auf, wobei Sie die zu verifizierende Signatur übergeben.
  5. Überprüfen Sie die validityStatus-Eigenschaft, nachdem das XMLSignatureValidator-Objekt ein complete-Ereignis auslöst.

Informationen zum Signaturstatus:

XML-Signaturen können gültig oder ungültig sein oder ihre Gültigkeit ist unbekannt. Der Gesamtstatus richtet sich nach dem Verifizierungsstatus der einzelnen Komponenten der Signaturdatei:

  • digestStatus: Die Gültigkeit der Kryptographie der Signatur, die über das SignedInfo-Element berechnet wird. Kann valid, invalid oder unknown sein.
  • identityStatus: Die Gültigkeit des signierenden Zertifikats. Wenn das Zertifikat abgelaufen, zurückgenommen oder geändert wurde, ist der Status invalid. Wenn das Zertifikat nicht mit einem vertrauenswürdigen Stammzertifikat verbunden werden kann, ist der Status unknown. Das Zertifikat wird nicht überprüft, wenn der Digest ungültig ist. Bei Nichtüberprüfung wird der Status als unknown gemeldet.
  • referencesStatus: Die Gültigkeit der Daten, auf die von den Referenzen im SignedInfo-Element der Signaturdatei verwiesen wird. Kann valid, invalid oder unknown sein. Die Referenzen werden nicht überprüft, wenn der Digest oder das Zertifikat ungültig ist. Die Referenzprüfung kann auch basierend auf der Einstellung der referencesValidationSetting-Eigenschaft übersprungen werden. Bei Nichtüberprüfung wird der Status als unknown gemeldet.

Die von der validityStatus-Eigenschaft gemeldete Signaturgültigkeit kann folgende Werte aufweisen:

  • valid, wenn referencesStatus, digestStatus und identityStatus alle valid sind.
  • invalid, wenn einer der Status invalid ist.
  • unknown: Wenn referencesStatus, digestStatus oder identityStatus unknown ist.

Kanonisierungsbeschränkungen:

Die XML-Engine in AIR erzeugt beim Kanonisieren eines XML-Dokuments nicht immer den erwarteten XML-String. Aus diesem Grund wird empfohlen, keine Weißräume zwischen Elemente in umhüllten oder abgetrennten Signaturdokumenten zu setzen und Namespaces in Signaturdokumenten nicht neu zu definieren. In beiden Fällen erzeugt AIR das Dokument unter Umständen nicht mit der gleichen Zeichenfolge wie das Original und die Prüfung schlägt folglich fehl.

Das folgende Beispiel lädt und überprüft eine Datei, die eine XML-Signatur enthält. Um dieses Beispiel zu verwenden, müssen Sie einen IURIDereferencer implementieren, der zu den zu überprüfenden Signaturen passt (ersetzen Sie hierzu die im Beispiel verwendete SignedMessageDereferencer-Klasse). Führen Sie das Beispiel aus, indem Sie SignatureValidatorExample.validateSignature( signatureFile ) aufrufen und die Datei, die das zu überprüfende XML-Signaturdokument enthält, übergeben. 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 ); } }
IURIDereferencerXML-Signatursyntax und VerarbeitungCanonical XMLPKCS #1error Wird ausgelöst, wenn die Überprüfung aufgrund von Fehlern nicht abgeschlossen werden kann.flash.events.ErrorEvent.ERRORflash.events.ErrorEvent Wird ausgelöst, wenn die Überprüfung aufgrund von Fehlern nicht abgeschlossen werden kann. Das folgende Beispiel überwacht Fehlerereignisse, die von einem XMLSignatureValidator-Objekt ausgelöst werden, und verfolgt die Fehlermeldung: private function verificationError(event:ErrorEvent):void{ trace("Verification error: " + event.text); } complete Wird ausgelöst, wenn die Überprüfung abgeschlossen ist.flash.events.Event.COMPLETEflash.events.Event Wird ausgelöst, wenn die Überprüfung abgeschlossen ist.

Ein complete-Ereignis bedeutet nicht, dass die Signatur gültig ist. Überprüfen Sie die validityStatus-Eigenschaft des XMLSignatureValidator-Objekts, um das Ergebnis der Signaturüberprüfung zu ermitteln.

Das folgende Beispiel überwacht vollständige Ergebnisse, die von einem XMLSignatureValidator-Objekt ausgelöst werden, und verfolgt die Überprüfungsergebnisse: 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 Erstellt ein neues XMLSignatureValidator-Objekt. Erstellt ein neues XMLSignatureValidator-Objekt.

Sie müssen die uriDereferencer-Eigenschaft einstellen, bevor Sie die verify()-Methode des neuen Objekts aufrufen.

Das folgende Beispiel erstellt und richtet ein neues XMLSignatureValidator-Objekt ein: 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 Fügt ein x509-Zertifikat für die Kettenbildung hinzu.Wenn der Aufruf während der Überprüfung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationErrorcertflash.utils:ByteArrayEin ByteArray-Objekt, das ein digitales DER-kodiertes x509-Zertifikat enthält. trustedBooleanSetzen Sie es auf true, um dieses Zertifikat als Vertrauensanker festzulegen. Fügt ein x509-Zertifikat für die Kettenbildung hinzu.

Das hinzugefügte Zertifikat muss ein DER-kodiertes x509-Zertifikat sein.

Wenn der trusted-Parameter den Wert true hat, wird das Zertifikat als Vertrauensanker angesehen.

Hinweis: Eine XML-Signatur kann Zertifikate zum Bilden der Zertifikatkette des Unterzeichners enthalten. Die XMLSignatureValidator-Klasse verwendet diese Zertifikate zur Kettenbildung, aber nicht als vertrauenswürdige Stämme (standardmäßig).

Das folgende Beispiel lädt ein Zertifikat aus dem Dateisystem und fügt es als Vertrauensanker hinzu. 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 Überprüft die angegebene Signatur.Wenn der Aufruf während der Überprüfung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationErrorWenn andere Fehler gefunden werden, z. B. nicht wohlgeformtes XML oder nicht unterstützte Elemente in der Signaturdatei. ErrorErrorsignatureXMLDie XML-Signatur, die überprüft werden soll. Überprüft die angegebene Signatur.

Die Überprüfung ist asynchron. Das XMLSignatureValidator-Objekt löst ein complete-Ereignis aus, wenn die Überprüfung erfolgreich abgeschlossen wird bzw. ein error-Ereignis, wenn die Überprüfung aufgrund von Fehlern nicht abgeschlossen werden kann.

Der Überprüfungsprozess kann nicht abgebrochen werden. Wenn gerade ein Überprüfungsprozess ausgeführt wird, schlagen anschließende Aufrufe der verify()-Methode fehl. Nach der aktuellen Überprüfung können Sie die verify()-Methode erneut aufrufen.

Hinweis: Da der XMLSignatureValidator nur einen Teilsatz der W3C-Empfehlung für die Syntax und Verarbeitung von XML-Signaturen implementiert, können nicht alle gültigen XML-Signaturen überprüft werden.

Das folgende Beispiel liest eine Datei, die eine XML-Signatur enthält, und überprüft sie durch Aufrufen der verify()-Methode. (Bei diesem Beispiel wird angenommen, dass die IURIDereferencer-Implementierung für die Signatur geeignet ist.) 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:EventWird ausgelöst, wenn die Überprüfung erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn die Überprüfung erfolgreich abgeschlossen wurde.errorflash.events:ErrorEventWird ausgelöst, wenn bei der Überprüfung von Verweisen ein Fehler aufgetreten ist. Wird ausgelöst, wenn bei der Überprüfung von Verweisen ein Fehler aufgetreten ist.
digestStatus Der Gültigkeitsstatus der kryptografischen Signatur, die aus dem SignedInfo-Element der Signatur berechnet wird.StringWenn der Zugriff während der Überprüfung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationError Der Gültigkeitsstatus der kryptografischen Signatur, die aus dem SignedInfo-Element der Signatur berechnet wird.

Der Status ist:

  • valid: Wenn die Signatur kryptographisch gültig ist.
  • invalid: Wenn der Digest nach dem Signieren geändert wurde.
  • unknown: Wenn die verify()-Methode nicht aufgerufen wurde.

Hinweis: Wenn der digestStatus ungültig ist, werden der identityStatus und der referencesStatus nicht überprüft und als unknown gemeldet.

identityStatus Der Gültigkeitsstatus des signierenden Zertifikats.StringWenn der Zugriff während der Überprüfung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationError Der Gültigkeitsstatus des signierenden Zertifikats.

Der Status kann sein:

  • valid: Das Zertifikat ist nicht abgelaufen, hat die Rücknahmeüberprüfung bestanden und ist mit einem vertrauenswürdigen Stammzertifikat verbunden.
  • unknown: Das Zertifikat ist nicht abgelaufen, hat die Rücknahmeüberprüfung bestanden, ist jedoch nicht mit einem vertrauenswürdigen Stammzertifikat verbunden. Der Statusunknown wird auch gemeldet, wenn der Status nicht überprüft wurde, weil entweder die verify()-Methode nicht aufgerufen wurde oder weil die kryptographische Signatur des SignedInfo-Elements (digestStatus) ungültig ist.
  • invalid: Das Zertifikat ist abgelaufen oder hat eine Rücknahmeüberprüfung nicht bestanden.

Die über die addCertificate()-Methode hinzugefügten Zertifikate und die Einstellungen der revocationCheckSetting- und der useSystemTrustStore-Eigenschaft können ändern, ob ein Zertifikat als gültig betrachtet wird.

Hinweis: Wenn der identityStatus ungültig ist, wird der referencesStatus nicht überprüft und als unknown gemeldet. Außerdem werden Verweise nicht überprüft, wenn der identityStatus unbekannt ist, es sei denn, die referencesValidationSetting ist validOrUnknownIdentity.

Das folgende Beispiel ruft das Ergebnis der Überprüfung des signierenden Zertifikats ab (nachdem eine Signatur überprüft wurde): import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var identityResult:String = verifier.identityStatus;
addCertificate()revocationCheckSettinguseSystemTrustStorereferencesValidationSetting
isSupported Die isSupported-Eigenschaft hat den Wert „true“, wenn die XMLSignatureValidator-Klasse von der aktuellen Plattform unterstützt wird, andernfalls hat sie den Wert „false“.BooleanMeldet, ob die XMLSignatureValidation-Klasse vom Clientsystem unterstützt wird. Die isSupported-Eigenschaft hat den Wert true, wenn die XMLSignatureValidator-Klasse von der aktuellen Plattform unterstützt wird, andernfalls hat sie den Wert false. referencesStatus Der Gültigkeitsstatus der Daten in den Verweisen im SignedInfo-Element der Signatur.StringWenn der Zugriff während der Überprüfung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationError Der Gültigkeitsstatus der Daten in den Verweisen im SignedInfo-Element der Signatur.

Der Status kann sein:

  • valid: Wenn alle Verweise gültig sind.
  • invalid: Wenn einer der Verweise ungültig ist.
  • unknown: Wenn keine Überprüfung stattgefunden hat. Verweise können in den folgenden Situationen unüberprüft bleiben:
    • die verify()-Methode wurde nicht aufgerufen
    • die kryptographische Signatur des SignedInfo-Elements (digestStatus) ist ungültig.
    • das signierende Zertifikat (identityStatus) ist ungültig
    • referencesValidationSetting ist validIdentity (die Standardeinstellung) und der identityStatus des signierenden Zertifikats ist unbekannt.
    • die referencesValidationSetting ist never.

Wichtig: Externe Ressourcen werden nur überprüft, wenn sie direkt in einem SignedInfo-Element innerhalb des Signaturdokuments referenziert werden. Externe Ressourcen, auf die von einer sekundären Referenz verwiesen wird, werden nicht überprüft. Wenn z. B. eine XML-Signatur ein Manifest-Element signiert, wird nur die Integrität des Manifest-Elements selbst überprüft. Die im Manifest aufgelisteten Dateien werden nicht überprüft.

Das folgende Beispiel ruft das Ergebnis der Überprüfung der Verweise in der Signatur ab (nachdem eine Signatur überprüft wurde): import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var dataResult:String = verifier.referencesStatus;
referencesValidationSetting
referencesValidationSetting Gibt die Bedingungen an, unter denen Verweise überprüft werden.StringWenn der Zugriff während der Validierung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationErrorwenn der setting-Parameter einen Wert enthält, der nicht in der ReferencesValidationSetting-Klasse definiert ist. ArgumentErrorArgumentError Gibt die Bedingungen an, unter denen Verweise überprüft werden.

Verwenden Sie Konstanten, die in der ReferencesValidationSetting-Klasse definiert sind, um die Eigenschaft festzulegen. Zu diesen Einstellungen gehören:

  • ReferencesValidationSetting.VALID_IDENTITY: Verweise werden nur überprüft, wenn das signierende Zertifikat gültig und mit einem vertrauenswürdigen Stamm verkettet ist. Dies ist die Standardeinstellung.
  • ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY: Verweise werden überprüft, wenn das signierende Zertifikat gültig ist, selbst wenn es nicht mit einem vertrauenswürdigen Stamm verkettet ist.
  • ReferencesValidationSetting.NEVER: Verweise werden nie überprüft.

Verwenden Sie die Standardeinstellung (validIdentity) für Signaturen, die mit einem kommerziellen Zertifikat signiert sind, oder wenn Sie Ihr eigenes Zertifikat als Vertrauensanker über die addCertificate()-Methode bereitstellen. Durch diese Einstellung wird verhindert, dass Verweise überprüft werden, wenn das signierte Dokument sowieso abgelehnt wird.

Verwenden Sie die Einstellung validOrUnknownIdentity für Signaturen, die mit selbst signierten Zertifikaten signiert sind. Mit dieser Einstellung können Sie überprüfen, ob die signierten Daten unverändert sind, erhalten aber keine Garantie bezüglich der Identität des Signierers.

Verwenden Sie die Einstellung never, um zu verhindern, dass Verweise überprüft werden, wenn diese Überprüfung im Kontext Ihrer Anwendung unerheblich ist.

Das folgende Beispiel setzt das XMLSignatureValidator-Objekt nur dann auf eine Überprüfung von Verweisen, wenn das signierende Zertifikat mit einem Vertrauensanker verkettet ist: import flash.security.ReferencesValidationSetting; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.referencesValidationSetting = ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY;
ReferencesValidationSetting
revocationCheckSetting Gibt an, wie die Zertifikatrücknahme überprüft werden soll.StringWenn der Zugriff während der Validierung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationError Gibt an, wie die Zertifikatrücknahme überprüft werden soll.

Legen Sie diese Eigenschaft mit Konstanten, die in der RevocationSettings-Klasse definiert sind, fest. Zu diesen Einstellungen gehören:

  • RevocationCheckSettings.NEVER: Die Zertifikatrücknahme wird nicht überprüft.
  • RevocationCheckSettings.BEST_EFFORT: Die Zertifikatrücknahme wird überprüft, wenn Rücknahmeinformationen zur Verfügung stehen und der Rücknahmestatus abgerufen werden kann. Wenn der Rücknahmestatus nicht ermittelt werden kann, wird das Zertifikat nicht zurückgewiesen.
  • RevocationCheckSettings.REQUIRED_IF_AVAILABLE: Wenn das Zertifikat Rücknahmeinformationen enthält, muss zur Überprüfung des Zertifikats der Rücknahmestatus ermittelt werden.
  • RevocationCheckSettings.ALWAYS_REQUIRED: Der Rücknahmestatus wird immer überprüft. Zertifikate ohne Rücknahmeinformationen werden abgelehnt.
RevocationCheckSettings
signerCN Das Feld „Allgemeiner Name“ des signierenden Zertifikats.String Das Feld „Allgemeiner Name“ des signierenden Zertifikats. Das folgende Beispiel liest den allgemeinen Namen des signierenden Zertifikats (nachdem eine Signatur überprüft wurde): var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var commonName:String = verifier.signerCN; signerDN Das Feld „Eindeutiger Name“ des signierenden Zertifikats.String Das Feld „Eindeutiger Name“ des signierenden Zertifikats. Das folgende Beispiel liest den eindeutigen Namen des signierenden Zertifikats (nachdem eine Signatur überprüft wurde): var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var distinguishedName:String = verifier.signerDN; signerExtendedKeyUsages Ein Array, das die OIDs für die erweiterte Tastenverwendung enthält, die im signierenden Zertifikat aufgeführt sind.ArrayWenn der Zugriff während der Überprüfung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationError Ein Array, das die OIDs für die erweiterte Tastenverwendung enthält, die im signierenden Zertifikat aufgeführt sind.

Jede erweiterte Tastenverwendung wird in numerischer OID-Form gemeldet.

Das folgende Beispiel liest die erweiterten Tasten-OIDs des signierenden Zertifikats (nachdem eine Signatur überprüft wurde): import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var extendedKeyOIDs:Array = verifier.signerExtendedKeyUsages;
signerTrustSettings Ein Array, das die Vertrauenseinstellungen des signierenden Zertifikats enthält.ArrayWenn der Zugriff während der Überprüfung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationError Ein Array, das die Vertrauenseinstellungen des signierenden Zertifikats enthält.

Die Vertrauenseinstellungen werden aus dem System und den Schlüssel-IODs, die im Zertifikat eingebettet sind, abgeleitet. Konstanten für die Strings, die die erkannten Vertrauenseinstellungen repräsentieren, sind in der SignerTrustSettings-Klasse definiert.

Das signerTrustSettings-Array eines Zertifikats mit dem Status unknown oder invalid ist leer.

Das Verändern des Array hat keinen Einfluss auf die Vertrauenseinstellungen des Zertifikats.

Das folgende Beispiel liest die Vertrauenseinstellungen des signierenden Zertifikats (nachdem eine Signatur überprüft wurde): import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var certificateTrustedFor:Array = verifier.signerTrustSettings;
SignerTrustSettings
uriDereferencer Die IURIDereferencer-Implementierung.flash.security:IURIDereferencerWenn der Zugriff während der Validierung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationError Die IURIDereferencer-Implementierung.

Eine IURIDereferencer-Implementierung muss bereitgestellt werden, bevor eine Signatur überprüft wird.

Das folgende Beispiel erstellt eine Instanz von SignedMessageDereferencer, die die IURIDereferencer-Schnittstelle implementiert, und setzt sie als den Dereferenzierer, der zur Überprüfung der Signatur verwendet werden soll: import com.example.SignedMessageDereferencer; //A custom class implementing IURIDereferencer var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.uriDereferencer = new SignedMessageDereferencer();
IURIDereferencer
useSystemTrustStore Gibt an, dass Zertifikate im Vertrauensspeicher des Systems für die Kettenbildung verwendet werden.BooleanWenn der Zugriff während der Validierung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationError Gibt an, dass Zertifikate im Vertrauensspeicher des Systems für die Kettenbildung verwendet werden.

Ist der Wert true, werden die Vertrauensanker im Vertrauensspeicher des Systems als vertrauenswürdige Stämme verwendet. Der Vertrauensspeicher des Systems wird standardmäßig nicht verwendet.

Das folgende Beispiel erzeugt eine XMLSignatureValidator-Instanz und richtet diese so ein, dass beim Überprüfen einer XML-Signatur der Systemablagebereich für vertrauenswürdige Zertifikate verwendet wird: var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.useSystemTrustStore = true;
validityStatus Der Gültigkeitsstatus einer überprüften XML-Signatur.StringWenn der Zugriff während der Überprüfung einer Signatur erfolgt. IllegalOperationErrorflash.errors:IllegalOperationError Der Gültigkeitsstatus einer überprüften XML-Signatur.

Die XML-Signatur wird überprüft, indem die kryptographische Signatur des SignedInfo-Elements, das signierende Zertifikat und die Daten, auf die die Referenzen im SignedInfo-Element verweisen, überprüft werden. Die Gültigkeit jedes dieser Elemente wird einzeln über die digestStatus-, die identityStatus()- bzw. die referencesStatus-Eigenschaft gemeldet.

XML-Signaturen können gültig oder ungültig sein oder ihre Gültigkeit ist unbekannt. Der Gesamtstatus richtet sich nach dem Verifizierungsstatus der einzelnen Komponenten der Signaturdatei:

  • digestStatus: Die Gültigkeit der kryptographischen Signatur, die über das SignedInfo-Element berechnet wird.
  • identityStatus: Die Gültigkeit des signierenden Zertifikats.
  • referencesStatus: Die Gültigkeit des Digests der Verweise im SignedInfo-Element der Signatur.

Die von der validityStatus-Eigenschaft gemeldete Signaturgültigkeit kann folgende Werte aufweisen:

  • valid, wenn referencesStatus, digestStatus und identityStatus alle valid sind.
  • invalid, wenn einer der Status invalid ist.
  • unknown: Wenn einer der Status unknown ist.
Das folgende Beispiel ruft das Ergebnis der Überprüfung der XML-Signatur ab. import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate the signature... var validationResult:String = verifier.validityStatus;
digestStatusidentityStatusreferencesStatusSignatureStatus
IURIDereferencer Der IURIDereferencer definiert eine Schnittstelle für Objekte, die URIs in einer XML-Signatur auflösen. Der IURIDereferencer definiert eine Schnittstelle für Objekte, die URIs in einer XML-Signatur auflösen.

Die IURIDereferencer-Implementierung ist zuständig für das Auflösen der URIs, die in den SignedInfo-Elementen einer XML-Signaturdatei angegeben sind und die referenzierten Daten in einem Objekt zurückgeben, zum Beispiel ein ByteArray, das die IDataInput-Schnittstelle implementiert.

Die Schnittstelle verfügt über eine Methode: dereference(). Eine typische Implementierung könnte auch eine Methode zur Übergabe des XML-Signaturobjekts mit den aufzulösenden URIs an den Dereferenzierer erfordern.

Die IURIDereferencer-Schnittstelle wird mit der XMLSignatureValidator-Klasse verwendet.

XMLSignatureValidatorXMLSignatureValidator.uriDereferencerdereference Löst den angegebenen URI auf und dereferenziert ihn.Die vom URI referenzierten Daten. flash.utils:IDataInputuriStringDer URI, der dereferenziert werden soll. Löst den angegebenen URI auf und dereferenziert ihn.
SignerTrustSettings Die SignerTrustSettings-Klasse definiert Konstanten, die mit der SignerTrustSettings-Eigenschaft eines XMLSignatureValidator-Objekts verwendet werden.Object Die SignerTrustSettings-Klasse definiert Konstanten, die mit der SignerTrustSettings-Eigenschaft eines XMLSignatureValidator-Objekts verwendet werden. XMLSignatureValidator.signerTrustSettingsCODE_SIGNING Das Zertifikat ist für Codesignaturen vertrauenswürdig.codeSigningString Das Zertifikat ist für Codesignaturen vertrauenswürdig. Dies impliziert, dass eine Kette zu einem vertrauenswürdigen Stamm besteht, dass der Stamm für Codesignaturen vertrauenswürdig ist und dass das signierende Zertifikat in der Extended Key Usage-Erweiterung über die CodeSigning OID verfügt. PLAYLIST_SIGNING Das Zertifikat ist für Signaturen von Wiedergabelisten vertrauenswürdig.playlistSigningString Das Zertifikat ist für Signaturen von Wiedergabelisten vertrauenswürdig. Dies impliziert, dass eine Kette zu einem vertrauenswürdigen Stamm besteht und dass das signierende Zertifikat in der Extended Key Usage-Erweiterung über die OID zum Signieren von Wiedergabelisten verfügt. SIGNING Das Zertifikat ist für Signaturen allgemein vertrauenswürdig.signingString Das Zertifikat ist für Signaturen allgemein vertrauenswürdig. SignatureStatus Die SignatureStatus-Klasse definiert Konstanten, die von der validityStatus-Eigenschaft eines XMLSignatureValidator-Objekts verwendet werden.Object Die SignatureStatus-Klasse definiert Konstanten, die von der validityStatus-Eigenschaft eines XMLSignatureValidator-Objekts verwendet werden. XMLSignatureValidator.validityStatusINVALID Ungültiger Status.invalidString Ungültiger Status. UNKNOWN Unbekannter Status.unknownString Unbekannter Status. VALID Gültiger Status.validString Gültiger Status. ReferencesValidationSetting Die ReferencesValidationSetting-Klasse definiert Konstanten, die von der referencesValidationSetting-Eigenschaft eines XMLSignatureValidator-Objekts verwendet werden.Definiert Konstanten für die unterstützten Modi für validierende Referenzdaten in einer XML-Signatur. Object Die ReferencesValidationSetting-Klasse definiert Konstanten, die von der referencesValidationSetting-Eigenschaft eines XMLSignatureValidator-Objekts verwendet werden. XMLSignatureValidator.ReferencesValidationSettingNEVER Verweise nie überprüfen.neverString Verweise nie überprüfen. VALID_IDENTITY Verweise nur dann überprüfen, wenn das signierende Zertifikat gültig und vertrauenswürdig ist.validIdentityString Verweise nur dann überprüfen, wenn das signierende Zertifikat gültig und vertrauenswürdig ist. VALID_OR_UNKNOWN_IDENTITY Verweise auch dann überprüfen, wenn das signierende Zertifikat nicht vertrauenswürdig ist (also nicht mit einem bekannten vertrauenswürdigen Stamm verkettet ist).validOrUnknownIdentityString Verweise auch dann überprüfen, wenn das signierende Zertifikat nicht vertrauenswürdig ist (also nicht mit einem bekannten vertrauenswürdigen Stamm verkettet ist). RevocationCheckSettings Die RevocationCheckSettings-Klasse definiert Konstanten, die von der revocationCheckSetting-Eigenschaft eines XMLSignatureValidator-Objekts verwendet werden.Object Die RevocationCheckSettings-Klasse definiert Konstanten, die von der revocationCheckSetting-Eigenschaft eines XMLSignatureValidator-Objekts verwendet werden. XMLSignatureValidator.revocationCheckSettingALWAYS_REQUIRED Zertifikatrücknahme immer überprüfen.alwaysRequiredString Zertifikatrücknahme immer überprüfen. Zertifikate ohne Rücknahmeinformationen werden abgelehnt. BEST_EFFORT Zertifikatrücknahme überprüfen, falls Rücknameinformationen verfügbar sind und der Rücknahmestatus ermittelt werden kann.bestEffortString Zertifikatrücknahme überprüfen, falls Rücknameinformationen verfügbar sind und der Rücknahmestatus ermittelt werden kann. Wenn der Rücknahmestatus nicht ermittelt werden kann, wird das Zertifikat nicht zurückgewiesen. NEVER Zertifikatrücknahme nicht überprüfen.neverString Zertifikatrücknahme nicht überprüfen. REQUIRED_IF_AVAILABLE Zertifikatrücknahme überprüfen, wenn das Zertifikat Rücknahmeinformationen enthält.requiredIfInfoAvailableString Zertifikatrücknahme überprüfen, wenn das Zertifikat Rücknahmeinformationen enthält. Wenn die Informationen zur Verfügung stehen, aber der Rücknahmestatus nicht ermittelt werden kann, wird das Zertifikat abgelehnt. CertificateStatus Die CertificateStatus-Klasse definiert Konstanten, mit denen die Ergebnisse einer Zertifikatvalidierung gemeldet werden, die von einem SecureSocket-Objekt ausgeführt wurde.Object Die CertificateStatus-Klasse definiert Konstanten, mit denen die Ergebnisse einer Zertifikatvalidierung gemeldet werden, die von einem SecureSocket-Objekt ausgeführt wurde. SecureSocket.serverCertificateStatusEXPIRED Das Zertifikat ist außerhalb seines Gültigkeitszeitraums.expiredString Das Zertifikat ist außerhalb seines Gültigkeitszeitraums.

Gibt an, dass versucht wurde, das Zertifikat zu validieren, dies jedoch fehlgeschlagen ist, weil der Gültigkeitszeitraum des Zertifikats entweder vor oder nach dem aktuellen Datum liegt. Bei einigen Betriebssystemen wird der Status notYetValid gemeldet, wenn das aktuelle Datum vor dem Gültigkeitszeitraum des Zertifikats liegt. Bei anderen Betriebssystemen wird in beiden Fällen der Status expired angegeben.

INVALID_CHAIN Ein Stamm- oder Übergangszertifikat in dieser Zertifikatkette ist ungültig.invalidChainString Ein Stamm- oder Übergangszertifikat in dieser Zertifikatkette ist ungültig.

Gibt an, dass versucht wurde, ein Zertifikat zu validieren, was jedoch fehlgeschlagen ist, weil die Vertrauenskette des Zertifikats ungültig ist.

INVALID Ein ungültiges Zertifikat.invalidString Ein ungültiges Zertifikat.

Gibt an, dass versucht wurde, ein Zertifikat zu validieren, was jedoch fehlgeschlagen ist. Dies ist der generische Fehlschlagstatus, der gemeldet wird, wenn kein genauerer Zertifikatstatus ermittelt werden kann.

NOT_YET_VALID Das Zertifikat ist noch nicht gültig.notYetValidString Das Zertifikat ist noch nicht gültig.

Gibt an, dass ein Zertifikat noch nicht gültig ist. Das aktuelle Datum liegt vor der „notBefore“-Zeitangabe des Zertifikats.

PRINCIPAL_MISMATCH Der allgemeine Name des Zertifikats stimmt nicht mit dem erwarteten Hostnamen überein.principalMismatchString Der allgemeine Name des Zertifikats stimmt nicht mit dem erwarteten Hostnamen überein.

Gibt an, dass versucht wurde, ein Zertifikat zu validieren, was jedoch fehlgeschlagen ist, da der allgemeine Name des Zertifikats nicht mit dem vollständig qualifizierten Domänennamen des Hosts übereinstimmt.

REVOKED Das Zertifikat wurde gesperrt.revokedString Das Zertifikat wurde gesperrt.

Gibt an, dass versucht wurde, ein Zertifikat zu validieren, was jedoch fehlgeschlagen ist, weil das Zertifikat gesperrt ist. Bei einigen Betriebssystemen wird der Status revoked auch gemeldet, wenn das Zertifikat (oder dessen Stammzertifikat) der Liste der nicht vertrauenswürdigen Zertifikate auf dem Clientcomputer hinzugefügt wurde.

TRUSTED Ein gültiges, vertrauenswürdiges Zertifikat.trustedString Ein gültiges, vertrauenswürdiges Zertifikat.

Gibt an, dass das Zertifikat nicht abgelaufen ist, die Rücknahmeüberprüfung bestanden hat und mit einem vertrauenswürdigen Stammzertifikat verbunden ist.

UNKNOWN Die Gültigkeit des Zertifikats ist nicht bekannt.unknownString Die Gültigkeit des Zertifikats ist nicht bekannt.

Gibt an, dass noch keine Zertifikatvalidierung für das Zertifikat ausgeführt wurde.

UNTRUSTED_SIGNERS Das Zertifikat ist nicht mit einem vertrauenswürdigen Stammzertifikat verkettet.untrustedSignersString Das Zertifikat ist nicht mit einem vertrauenswürdigen Stammzertifikat verkettet.

Gibt an, dass versucht wurde, ein Zertifikat zu validieren, was jedoch fehlgeschlagen ist, da das Zertifikat mit keinem der Stammzertifikate im Vertrauensspeicher des Clients verkettet ist. Bei einigen Betriebssystemen wird untrustedSigners auch dann gemeldet, wenn das Zertifikat auf der Liste der nicht vertrauenswürdigen Zertifikate auf dem Clientcomputer steht.