Paket | flash.security |
Klasse | public class XMLSignatureValidator |
Vererbung | XMLSignatureValidator EventDispatcher Object |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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:
- Erstellen Sie eine Instanz der XMLSignatureValidator-Klasse.
- Stellen Sie die
uriDereferencer
-Eigenschaft der Instanz auf eine Instanz Ihrer IURIDereferencer-Implementierungsklasse ein. - (Optional) Stellen Sie über die
addCertificate()
-Methode DER-kodierte Zertifikate zum Bilden der vertrauenswürdigen Zertifikatkette bereit. - Rufen Sie die
verify
-Methode von XMLSignatureValidator auf, wobei Sie die zu verifizierende Signatur übergeben. - Ü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. Kannvalid
,invalid
oderunknown
sein. -
identityStatus
: Die Gültigkeit des signierenden Zertifikats. Wenn das Zertifikat abgelaufen, zurückgenommen oder geändert wurde, ist der Statusinvalid
. Wenn das Zertifikat nicht mit einem vertrauenswürdigen Stammzertifikat verbunden werden kann, ist der Statusunknown
. Das Zertifikat wird nicht überprüft, wenn der Digest ungültig ist. Bei Nichtüberprüfung wird der Status alsunknown
gemeldet. -
referencesStatus
: Die Gültigkeit der Daten, auf die von den Referenzen im SignedInfo-Element der Signaturdatei verwiesen wird. Kannvalid
,invalid
oderunknown
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 derreferencesValidationSetting
-Eigenschaft übersprungen werden. Bei Nichtüberprüfung wird der Status alsunknown
gemeldet.
Die von der validityStatus
-Eigenschaft gemeldete Signaturgültigkeit kann folgende Werte aufweisen:
-
valid
, wennreferencesStatus
,digestStatus
undidentityStatus
allevalid
sind. -
invalid
, wenn einer der Statusinvalid
ist. -
unknown
: WennreferencesStatus
,digestStatus
oderidentityStatus
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.
Weitere Informationen
Verwandte API-Elemente
Eigenschaft | Definiert von | ||
---|---|---|---|
constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz. | Object | ||
digestStatus : String [schreibgeschützt]
Der Gültigkeitsstatus der kryptografischen Signatur, die aus dem SignedInfo-Element der Signatur berechnet wird. | XMLSignatureValidator | ||
identityStatus : String [schreibgeschützt]
Der Gültigkeitsstatus des signierenden Zertifikats. | XMLSignatureValidator | ||
isSupported : Boolean [statisch] [schreibgeschützt]
Die isSupported-Eigenschaft hat den Wert „true“, wenn die XMLSignatureValidator-Klasse von der aktuellen Plattform unterstützt wird, andernfalls hat sie den Wert „false“. | XMLSignatureValidator | ||
referencesStatus : String [schreibgeschützt]
Der Gültigkeitsstatus der Daten in den Verweisen im SignedInfo-Element der Signatur. | XMLSignatureValidator | ||
referencesValidationSetting : String
Gibt die Bedingungen an, unter denen Verweise überprüft werden. | XMLSignatureValidator | ||
revocationCheckSetting : String
Gibt an, wie die Zertifikatrücknahme überprüft werden soll. | XMLSignatureValidator | ||
signerCN : String [schreibgeschützt]
Das Feld „Allgemeiner Name“ des signierenden Zertifikats. | XMLSignatureValidator | ||
signerDN : String [schreibgeschützt]
Das Feld „Eindeutiger Name“ des signierenden Zertifikats. | XMLSignatureValidator | ||
signerExtendedKeyUsages : Array [schreibgeschützt]
Ein Array, das die OIDs für die erweiterte Tastenverwendung enthält, die im signierenden Zertifikat aufgeführt sind. | XMLSignatureValidator | ||
signerTrustSettings : Array [schreibgeschützt]
Ein Array, das die Vertrauenseinstellungen des signierenden Zertifikats enthält. | XMLSignatureValidator | ||
uriDereferencer : IURIDereferencer
Die IURIDereferencer-Implementierung. | XMLSignatureValidator | ||
useSystemTrustStore : Boolean
Gibt an, dass Zertifikate im Vertrauensspeicher des Systems für die Kettenbildung verwendet werden. | XMLSignatureValidator | ||
validityStatus : String [schreibgeschützt]
Der Gültigkeitsstatus einer überprüften XML-Signatur. | XMLSignatureValidator |
Methode | Definiert von | ||
---|---|---|---|
Erstellt ein neues XMLSignatureValidator-Objekt. | XMLSignatureValidator | ||
Fügt ein x509-Zertifikat für die Kettenbildung hinzu. | XMLSignatureValidator | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird. | EventDispatcher | ||
Sendet ein Ereignis in den Ereignisablauf. | EventDispatcher | ||
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat. | EventDispatcher | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde. | Object | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Entfernt einen Listener aus dem EventDispatcher-Objekt. | EventDispatcher | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas. | Object | ||
Gibt das angegebene Objekt als String zurück. | Object | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object | ||
Überprüft die angegebene Signatur. | XMLSignatureValidator | ||
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner Vorgänger ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist. | EventDispatcher |
Ereignis | Übersicht | Definiert von | ||
---|---|---|---|---|
[broadcast event] Wird ausgelöst, wenn Flash Player oder eine AIR-Anwendung den Betriebssystemfokus erhält und aktiv wird. | EventDispatcher | |||
Wird ausgelöst, wenn die Überprüfung abgeschlossen ist. | XMLSignatureValidator | |||
[broadcast event] Wird ausgelöst, wenn Flash Player- oder die AIR-Anwendung den Fokus verliert und inaktiv wird. | EventDispatcher | |||
Wird ausgelöst, wenn die Überprüfung aufgrund von Fehlern nicht abgeschlossen werden kann. | XMLSignatureValidator |
digestStatus | Eigenschaft |
digestStatus:String
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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 dieverify()
-Methode nicht aufgerufen wurde.
Hinweis: Wenn der digestStatus
ungültig ist, werden der identityStatus
und der referencesStatus
nicht überprüft und als unknown
gemeldet.
Implementierung
public function get digestStatus():String
Auslöser
IllegalOperationError — Wenn der Zugriff während der Überprüfung einer Signatur erfolgt.
|
identityStatus | Eigenschaft |
identityStatus:String
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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 dieverify()
-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
.
Implementierung
public function get identityStatus():String
Auslöser
IllegalOperationError — Wenn der Zugriff während der Überprüfung einer Signatur erfolgt.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var identityResult:String = verifier.identityStatus;
isSupported | Eigenschaft |
isSupported:Boolean
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 2 |
Die isSupported
-Eigenschaft hat den Wert true
, wenn die XMLSignatureValidator-Klasse von der aktuellen Plattform unterstützt wird, andernfalls hat sie den Wert false
.
Implementierung
public static function get isSupported():Boolean
referencesStatus | Eigenschaft |
referencesStatus:String
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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
istvalidIdentity
(die Standardeinstellung) und deridentityStatus
des signierenden Zertifikats ist unbekannt.- die
referencesValidationSetting
istnever
.
- die
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.
Implementierung
public function get referencesStatus():String
Auslöser
IllegalOperationError — Wenn der Zugriff während der Überprüfung einer Signatur erfolgt.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var dataResult:String = verifier.referencesStatus;
referencesValidationSetting | Eigenschaft |
referencesValidationSetting:String
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.5 |
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.
Implementierung
public function get referencesValidationSetting():String
public function set referencesValidationSetting(value:String):void
Auslöser
IllegalOperationError — Wenn der Zugriff während der Validierung einer Signatur erfolgt.
| |
ArgumentError — wenn der setting -Parameter einen Wert enthält, der nicht in der ReferencesValidationSetting-Klasse definiert ist.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
import flash.security.ReferencesValidationSetting; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.referencesValidationSetting = ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY;
revocationCheckSetting | Eigenschaft |
revocationCheckSetting:String
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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.
Implementierung
public function get revocationCheckSetting():String
public function set revocationCheckSetting(value:String):void
Auslöser
IllegalOperationError — Wenn der Zugriff während der Validierung einer Signatur erfolgt.
|
Verwandte API-Elemente
signerCN | Eigenschaft |
signerCN:String
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
Das Feld „Allgemeiner Name“ des signierenden Zertifikats.
Implementierung
public function get signerCN():String
Beispiel ( Verwendung dieses Beispiels )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var commonName:String = verifier.signerCN;
signerDN | Eigenschaft |
signerDN:String
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
Das Feld „Eindeutiger Name“ des signierenden Zertifikats.
Implementierung
public function get signerDN():String
Beispiel ( Verwendung dieses Beispiels )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var distinguishedName:String = verifier.signerDN;
signerExtendedKeyUsages | Eigenschaft |
signerExtendedKeyUsages:Array
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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.
Implementierung
public function get signerExtendedKeyUsages():Array
Auslöser
IllegalOperationError — Wenn der Zugriff während der Überprüfung einer Signatur erfolgt.
|
Beispiel ( Verwendung dieses Beispiels )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var extendedKeyOIDs:Array = verifier.signerExtendedKeyUsages;
signerTrustSettings | Eigenschaft |
signerTrustSettings:Array
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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.
Implementierung
public function get signerTrustSettings():Array
Auslöser
IllegalOperationError — Wenn der Zugriff während der Überprüfung einer Signatur erfolgt.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var certificateTrustedFor:Array = verifier.signerTrustSettings;
uriDereferencer | Eigenschaft |
uriDereferencer:IURIDereferencer
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
Die IURIDereferencer-Implementierung.
Eine IURIDereferencer-Implementierung muss bereitgestellt werden, bevor eine Signatur überprüft wird.
Implementierung
public function get uriDereferencer():IURIDereferencer
public function set uriDereferencer(value:IURIDereferencer):void
Auslöser
IllegalOperationError — Wenn der Zugriff während der Validierung einer Signatur erfolgt.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
import com.example.SignedMessageDereferencer; //A custom class implementing IURIDereferencer var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.uriDereferencer = new SignedMessageDereferencer();
useSystemTrustStore | Eigenschaft |
useSystemTrustStore:Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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.
Implementierung
public function get useSystemTrustStore():Boolean
public function set useSystemTrustStore(value:Boolean):void
Auslöser
IllegalOperationError — Wenn der Zugriff während der Validierung einer Signatur erfolgt.
|
Beispiel ( Verwendung dieses Beispiels )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.useSystemTrustStore = true;
validityStatus | Eigenschaft |
validityStatus:String
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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
, wennreferencesStatus
,digestStatus
undidentityStatus
allevalid
sind.invalid
, wenn einer der Statusinvalid
ist.unknown
: Wenn einer der Statusunknown
ist.
Implementierung
public function get validityStatus():String
Auslöser
IllegalOperationError — Wenn der Zugriff während der Überprüfung einer Signatur erfolgt.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate the signature... var validationResult:String = verifier.validityStatus;
XMLSignatureValidator | () | Konstruktor |
public function XMLSignatureValidator()
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
Erstellt ein neues XMLSignatureValidator-Objekt.
Sie müssen die uriDereferencer
-Eigenschaft einstellen, bevor Sie die verify()
-Methode des neuen Objekts aufrufen.
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function addCertificate(cert:ByteArray, trusted:Boolean):*
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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).
Parameter
cert:ByteArray — Ein ByteArray-Objekt, das ein digitales DER-kodiertes x509-Zertifikat enthält.
| |
trusted:Boolean — Setzen Sie es auf true , um dieses Zertifikat als Vertrauensanker festzulegen.
|
* |
Auslöser
IllegalOperationError — Wenn der Aufruf während der Überprüfung einer Signatur erfolgt.
|
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function verify(signature:XML):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
Ü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.
Parameter
signature:XML — Die XML-Signatur, die überprüft werden soll.
|
Ereignisse
complete: — Wird ausgelöst, wenn die Überprüfung erfolgreich abgeschlossen wurde.
| |
error: — Wird ausgelöst, wenn bei der Überprüfung von Verweisen ein Fehler aufgetreten ist.
|
Auslöser
IllegalOperationError — Wenn der Aufruf während der Überprüfung einer Signatur erfolgt.
| |
Error — Wenn andere Fehler gefunden werden, z. B. nicht wohlgeformtes XML oder nicht unterstützte Elemente in der Signaturdatei.
|
Beispiel ( Verwendung dieses Beispiels )
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 );
complete | Ereignis |
flash.events.Event
Eigenschaft Event.type =
flash.events.Event.COMPLETE
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
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.
Event.COMPLETE
-Konstante definiert den Wert der type
-Eigenschaft eines complete
-Ereignisobjekts.
Dieses Ereignis verfügt über die folgenden Eigenschaften:
Eigenschaft | Wert |
---|---|
bubbles | false |
cancelable | false . Es gibt kein Standardverhalten, das abgebrochen werden kann. |
currentTarget | Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet. |
target | Das Netzwerkobjekt, dessen Ladevorgang beendet ist. |
Beispiel ( Verwendung dieses Beispiels )
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); }
Verwandte API-Elemente
error | Ereignis |
flash.events.ErrorEvent
Eigenschaft ErrorEvent.type =
flash.events.ErrorEvent.ERROR
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0 |
Wird ausgelöst, wenn die Überprüfung aufgrund von Fehlern nicht abgeschlossen werden kann.
Definiert den Wert der Eigenschafttype
eines error
-Ereignisobjekts.
Dieses Ereignis verfügt über die folgenden Eigenschaften:
Eigenschaft | Wert |
---|---|
bubbles | false |
cancelable | false . Es gibt kein Standardverhalten, das abgebrochen werden kann. |
currentTarget | Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet. |
target | Das Objekt, bei dem der Netzwerkvorgang fehlschlägt. |
text | Der als Fehlermeldung anzuzeigende Text. |
Beispiel ( Verwendung dieses Beispiels )
private function verificationError(event:ErrorEvent):void{ trace("Verification error: " + event.text); }
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 ); } }
Tue Jun 12 2018, 10:04 AM Z