Pakiet | flash.security |
Klasa | public class XMLSignatureValidator |
Dziedziczenie | XMLSignatureValidator EventDispatcher Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Obsługa profilów AIR: Ta funkcja jest obsługiwana we wszystkich systemach operacyjnych dla komputerów stacjonarnych oraz na urządzeniach telewizyjnych ze środowiskiem AIR, ale nie jest obsługiwana na urządzeniach przenośnych. W czasie wykonywania można sprawdzić, czy funkcja jest obsługiwana, odczytując właściwość XMLSignatureValidator.isSupported
. Więcej informacji o obsłudze elementów interfejsu API w różnych profilach można znaleźć w sekcji Obsługa profilów aplikacji AIR.
Klasa XMLSignatureValidator implementuje podzbiór zaleceń ujętych w dokumencie W3C Recommendation for XML-Signature Syntax and Processing i nie powinna być uważana za implementację zgodną z tymi zaleceniami. Obsługiwany podzbiór zaleceń obejmuje:
- Całą podstawową składnię podpisu z wyjątkiem elementu KeyInfo.
- Element KeyInfo obsługuje tylko element X509Data.
- Element X509Data obsługuje tylko element X509Certificate.
- Algorytm metody skrótu SHA256.
- Algorytm podpisywania PKCS1.
- Metodę kanonizacji „Canonical XML without comments” i algorytm transformacji.
- Element Manifest w dodatkowej składni podpisu.
Aby uzyskać możliwość weryfikowania podpisów XML, należy udostępnić własną implementację interfejsu IURIDereferencer. Ta klasa implementacyjna odpowiada za tłumaczenie identyfikatorów URI określonych w elementach SignedInfo pliku podpisu i zwrócenie docelowych danych w obiekcie, takim jak ByteArray, który implementuje interfejs IDataInput.
Aby można było sprawdzić, czy certyfikat podmiotu podpisującego należy do łańcucha prowadzącego do certyfikatu zaufanego, podpis XML musi zawierać w elementach X509Certificate certyfikaty potrzebne do zbudowania łańcucha lub należy dostarczyć certyfikaty potrzebne do zbudowania łańcucha, korzystając z metody addCertificate()
.
Aby zweryfikować podpis XML:
- Utwórz instancję klasy XMLSignatureValidator.
- Ustaw właściwość
uriDereferencer
tej instancji na instancję własnej klasy implementującej interfejs IURIDereferencer. - W razie potrzeby przekaż certyfikaty zakodowane w standardzie DER, umożliwiające zbudowanie łańcucha zaufanych certyfikatów, korzystając z metody
addCertificate()
. - Wywołaj metodę XMLSignatureValidator
verify
, przekazując podpis do zweryfikowania. - Sprawdź wartość właściwości
validityStatus
po tym, jak obiekt XMLSignatureValidator wywoła zdarzenie complete.
Informacje o stanie podpisu:
Podpis XML może być ważny, nieważny lub nieznany. Ogólny stan zależy od stanu weryfikacji poszczególnych składników pliku podpisu:
-
digestStatus
— ważność danych kryptograficznych podpisu obliczonych na podstawie elementu SignedInfo Może mieć wartość:valid
(ważny),invalid
(nieważny) albounknown
(nieznany). -
identityStatus
— ważność certyfikatu podmiotu podpisującego. Jeśli certyfikat utracił ważność, został unieważniony lub zmodyfikowany, ma statusinvalid
. Jeśli certyfikatu nie można połączyć łańcuchem z zaufanym certyfikatem główny, ma statusunknown
. Certyfikat nie jest sprawdzany, jeśli wyciąg jest niepoprawny. Jeśli certyfikat nie został sprawdzony, ma statusunknown
. -
referencesStatus
— ważność danych adresowanych przez odwołania w elemencie SignedInfo pliku podpisu. Może mieć wartość:valid
(ważne),invalid
(nieważne) albounknown
(nieznana). Odwołania nie są sprawdzane, jeśli wyciąg lub certyfikat jest niepoprawny. Sprawdzanie odwołań może być także pomijane na podstawie wartości właściwościreferencesValidationSetting
. Jeśli certyfikat nie został sprawdzony, ma stanunknown
.
Ważność podpisu określona we właściwości validityStatus
może być wyrażona wartościami:
-
valid
— jeśli stany składnikówreferencesStatus
,digestStatus
iidentityStatus
są równe wartościvalid
. -
invalid
— jeśli którykolwiek stan jest równy wartościinvalid
. -
unknown
— jeśli stan składnikówreferencesStatus
,digestStatus
lubidentityStatus
jest równy wartościunknown
.
Ograniczenia w doprowadzaniu do postaci kanonicznej:
Mechanizm XML w środowisku AIR nie zawsze generuje oczekiwany ciąg znaków XML w wyniku doprowadzania dokumentu XML do postaci kanonicznej. Dlatego zaleca się unikanie umieszczania odstępów między elementami w dokumentach podpisu typu koperta lub odłączonych, a także rezygnację z definiowania przestrzeni nazw wewnątrz dokumentu podpisu. W obu przypadkach środowisko AIR może nie odtworzyć dokumentu z tą samą sekwencją znaków, co w dokumencie oryginalnym, a w konsekwencji weryfikacja może się nie powieść.
Więcej informacji
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
digestStatus : String [tylko do odczytu]
Stan ważności podpisu kryptograficznego obliczonego na podstawie elementu SignedInfo podpisu. | XMLSignatureValidator | ||
identityStatus : String [tylko do odczytu]
Stan ważności certyfikatu podmiotu podpisującego. | XMLSignatureValidator | ||
isSupported : Boolean [statyczny] [tylko do odczytu]
Właściwość isSupported ma wartość true, jeśli na bieżącej platformie jest obsługiwana klasa XMLSignatureValidator; w przeciwnym razie ma wartość false. | XMLSignatureValidator | ||
referencesStatus : String [tylko do odczytu]
Status ważności danych w odwołaniach w elemencie SignedInfo podpisu. | XMLSignatureValidator | ||
referencesValidationSetting : String
Określa warunki, pod jakimi sprawdzane są odwołania. | XMLSignatureValidator | ||
revocationCheckSetting : String
Określa sposób sprawdzania, czy certyfikat został unieważniony. | XMLSignatureValidator | ||
signerCN : String [tylko do odczytu]
Pole Common Name certyfikatu podmiotu podpisującego. | XMLSignatureValidator | ||
signerDN : String [tylko do odczytu]
Pole Distinguished Name certyfikatu podmiotu podpisującego. | XMLSignatureValidator | ||
signerExtendedKeyUsages : Array [tylko do odczytu]
Tablica zawierająca identyfikatory OID Extended Key Usages wymienione w certyfikacie podmiotu podpisującego. | XMLSignatureValidator | ||
signerTrustSettings : Array [tylko do odczytu]
Tablica zawierająca ustawienia zaufania certyfikatu podmiotu podpisującego. | XMLSignatureValidator | ||
uriDereferencer : IURIDereferencer
Implementacja interfejsu IURIDereferencer. | XMLSignatureValidator | ||
useSystemTrustStore : Boolean
Określa, że do budowania łańcucha mają być używane certyfikaty z systemowego magazynu certyfikatów zaufanych. | XMLSignatureValidator | ||
validityStatus : String [tylko do odczytu]
Stan ważności zweryfikowanego podpisu XML. | XMLSignatureValidator |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Tworzy obiekt XMLSignatureValidator. | XMLSignatureValidator | ||
Dodaje certyfikat x509 potrzebny do zbudowania łańcucha. | XMLSignatureValidator | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Rejestruje obiekt detektora zdarzeń w obiekcie EventDispatcher, dzięki czemu detektor będzie otrzymywał powiadomienia o zdarzeniu. | EventDispatcher | ||
Wywołuje zdarzenie, tj. kieruje je do przepływu zdarzeń. | EventDispatcher | ||
Sprawdza, czy obiekt EventDispatcher zawiera jakiekolwiek detektory zarejestrowane dla konkretnego typu zdarzeń. | EventDispatcher | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Usuwa detektor z obiektu EventDispatcher. | EventDispatcher | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object | ||
Weryfikuje określony podpis. | XMLSignatureValidator | ||
Sprawdza, czy detektor zdarzeń określonego typu jest zarejestrowany w tym obiekcie EventDispatcher lub jego elementach macierzystych. | EventDispatcher |
Zdarzenie | Podsumowanie | Zdefiniowane przez | ||
---|---|---|---|---|
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja środowiska wykonawczego AIR uzyskuje fokus w systemie operacyjnym i przechodzi w stan aktywny. | EventDispatcher | |||
Wywoływane po ukończeniu weryfikacji. | XMLSignatureValidator | |||
[zdarzenie broadcast] Wywoływane, gdy program Flash Player lub aplikacja AIR traci fokus w systemie operacyjnym i przechodzi w stan nieaktywny. | EventDispatcher | |||
Wywoływane, jeśli weryfikacji nie można ukończyć z powodu błędów. | XMLSignatureValidator |
digestStatus | właściwość |
digestStatus:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Stan ważności podpisu kryptograficznego obliczonego na podstawie elementu SignedInfo podpisu.
Możliwe stany:
valid
— jeśli podpis jest ważny pod względem kryptograficznym.invalid
— jeśli skrót został zmodyfikowany po podpisaniu.unknown
— jeśli nie wywołano metodyverify()
.
Uwaga: Jeśli właściwość digestStatus
ma wartość invalid, wówczas statusy identityStatus
i referencesStatus
nie są sprawdzane i odpowiednie właściwości będą miały wartości unknown
.
Implementacja
public function get digestStatus():String
Zgłasza
IllegalOperationError — Jeśli dostęp ma miejsce w momencie sprawdzania podpisu.
|
identityStatus | właściwość |
identityStatus:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Stan ważności certyfikatu podmiotu podpisującego.
Możliwe stany:
valid
— nie upłynął termin ważności certyfikatu, łańcuch certyfikatu prowadzi do zaufanego certyfikatu głównego, a sprawdzenie, czy certyfikat nie został unieważniony, zakończyło się pozytywnie.unknown
— nie upłynął termin ważności certyfikatu, sprawdzenie, czy certyfikat nie został unieważniony, zakończyło się pozytywnie, ale łańcuch certyfikatu nie prowadzi do zaufanego certyfikatu głównego. Stanunknown
zostanie również zgłoszony, jeśli stan nie został jeszcze zweryfikowany, ponieważ niw wywołano metodyverify()
lub podpis kryptograficzny elementu SignedInfo (digestStatus
) jest nieważny.invalid
— upłynął termin ważności certyfikatu lub sprawdzenie, czy certyfikat nie został unieważniony, zakończyło się negatywnie.
Certyfikaty dodane za pomocą metody addCertificate()
i ustawienia właściwości revocationCheckSetting
oraz useSystemTrustStore
mogą wpłynąć na ważność certyfikaty.
Uwaga: Jeśli status identityStatus
ma wartość invalid, status referencesStatus
nie jest sprawdzany i odpowiednia właściwość ma wartość unknown
. Ponadto odwołania nie są sprawdzane, gdy status identityStatus
ma wartość unknown, chyba że właściwość referencesValidationSetting
jest ustawiona na validOrUnknownIdentity
.
Implementacja
public function get identityStatus():String
Zgłasza
IllegalOperationError — Jeśli dostęp ma miejsce w momencie sprawdzania podpisu.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var identityResult:String = verifier.identityStatus;
isSupported | właściwość |
isSupported:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Właściwość isSupported
ma wartość true
, jeśli na bieżącej platformie jest obsługiwana klasa XMLSignatureValidator; w przeciwnym razie ma wartość false
.
Implementacja
public static function get isSupported():Boolean
referencesStatus | właściwość |
referencesStatus:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Stan ważności danych w odniesieniach w elemencie SignedInfo podpisu.
Możliwe stany:
valid
— jeśli wszystkie odwołania są ważne.invalid
— jeśli którekolwiek odwołanie jest nieważne.unknown
— jeśli niezweryfikowane. Odwołania mogą pozostać niezweryfikowane w następujących okolicznościach:- Nie wywołano metody
verify()
. - Podpis kryptograficzny elementu SignedInfo (
digestStatus
) jest nieważny. - Certyfikat używany do podpisywania (
identityStatus
) jest nieważny. - Ustawienie
referencesValidationSetting
ma wartośćvalidIdentity
(wartość domyślna) i statusidentityStatus
certyfikatu używanego do podpisywania jest nieznany (unknown). - Ustawienie
referencesValidationSetting
ma wartośćnever
.
- Nie wywołano metody
Ważne: Zewnętrzne zasoby nie są sprawdzane, jeśli element SignedInfo w dokumencie podpisu nie zawiera bezpośrednich odwołań do tych zasobów. Zasoby zewnętrzne będące celami odwołań pośrednich nie są sprawdzane. Na przykład, jeśli podpis XML został użyty do podpisania elementu manifest, sprawdzana jest integralność tylko elementu manifest. Pliki wymienione w manifeście nie są sprawdzane.
Implementacja
public function get referencesStatus():String
Zgłasza
IllegalOperationError — Jeśli dostęp ma miejsce w momencie sprawdzania podpisu.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var dataResult:String = verifier.referencesStatus;
referencesValidationSetting | właściwość |
referencesValidationSetting:String
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.5 |
Określa warunki sprawdzania odniesień.
Do ustawiania tej właściwości należy używać stałych zdefiniowanych w klasie ReferencesValidationSetting. Są to następujące ustawienia:
ReferencesValidationSetting.VALID_IDENTITY
— sprawdzaj odwołania tylko wtedy, gdy certyfikat używany do podpisywania jest ważny, a jego łańcuch prowadzi do zaufanego certyfikatu głównego. Jest to ustawienie domyślne.ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY
— sprawdzaj odwołania, jeśli certyfikat używany do podpisywania jest ważny, nawet jeśli jego łańcuch nie prowadzi do zaufanego certyfikatu głównego.ReferencesValidationSetting.NEVER
— nigdy nie sprawdzaj odwołań.
Domyślne ustawienie validIdentity
powinno być używane w przypadku podpisów podpisanych certyfikatem komercyjnym lub w przypadku udostępnienia za pomocą metody addCertificate()
własnego certyfikatu będącego początkiem łańcucha zaufania. To ustawienie pozwala uniknąć narzutu sprawdzania poprawności odwołań w sytuacji, gdy podpisany dokument i tak zostanie odrzucony.
Ustawienia validOrUnknownIdentity
należy używać z podpisami podpisanymi za pomocą certyfikatów samopodpisanych. To ustawienie umożliwia sprawdzenie, czy podpisane dane nie zostały zmodyfikowane, ale nie gwarantuje tożsamości podmiotu podpisującego.
Ustawienie never
umożliwia uniknięcia narzutu sprawdzania poprawności odwołań, gdy takie sprawdzanie nie jest istotne w kontekście aplikacji.
Implementacja
public function get referencesValidationSetting():String
public function set referencesValidationSetting(value:String):void
Zgłasza
IllegalOperationError — Jeśli ustawienie następuje w momencie sprawdzania podpisu.
| |
ArgumentError — jeśli parametr setting zawiera wartość niezdefiniowaną w klasie ReferencesValidationSetting.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
import flash.security.ReferencesValidationSetting; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.referencesValidationSetting = ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY;
revocationCheckSetting | właściwość |
revocationCheckSetting:String
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Określa sposób sprawdzania, czy certyfikat nie został unieważniony.
Do ustawiania tej właściwości należy używać stałych zdefiniowanych w klasie RevocationSettings. Są to następujące ustawienia:
RevocationCheckSettings.NEVER
— nie sprawdzaj, czy certyfikat został unieważniony.RevocationCheckSettings.BEST_EFFORT
— sprawdzaj, czy certyfikat został unieważniony, o ile informacje o unieważnieniu są dostępne i jest możliwe uzyskanie statusu unieważnienia. Jeśli nie jest możliwe jednoznaczne stwierdzenie statusu unieważnienia, certyfikat nie jest odrzucany.RevocationCheckSettings.REQUIRED_IF_AVAILABLE
— jeśli certyfikat zawiera informacje o unieważnieniu, do zweryfikowania certyfikatu wymagane jest jednoznaczne ustalenie statusu unieważnienia.RevocationCheckSettings.ALWAYS_REQUIRED
— zawsze sprawdzaj, czy certyfikat jest unieważniony. Certyfikaty bez informacji o unieważnieniu są odrzucane.
Implementacja
public function get revocationCheckSetting():String
public function set revocationCheckSetting(value:String):void
Zgłasza
IllegalOperationError — Jeśli ustawienie następuje w momencie sprawdzania podpisu.
|
Powiązane elementy interfejsu API
signerCN | właściwość |
signerCN:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Pole Common Name certyfikatu podmiotu podpisującego.
Implementacja
public function get signerCN():String
Przykład ( Sposób korzystania z tego przykładu )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var commonName:String = verifier.signerCN;
signerDN | właściwość |
signerDN:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Pole Distinguished Name certyfikatu podmiotu podpisującego.
Implementacja
public function get signerDN():String
Przykład ( Sposób korzystania z tego przykładu )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var distinguishedName:String = verifier.signerDN;
signerExtendedKeyUsages | właściwość |
signerExtendedKeyUsages:Array
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Tablica zawierająca identyfikatory OID Extended Key Usages wymienione w certyfikacie podmiotu podpisującego.
Informacje Extended Key Usage są przekazywane w postaci liczbowych identyfikatorów OID.
Implementacja
public function get signerExtendedKeyUsages():Array
Zgłasza
IllegalOperationError — Jeśli dostęp ma miejsce w momencie sprawdzania podpisu.
|
Przykład ( Sposób korzystania z tego przykładu )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var extendedKeyOIDs:Array = verifier.signerExtendedKeyUsages;
signerTrustSettings | właściwość |
signerTrustSettings:Array
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Tablica zawierająca ustawienia zaufania certyfikatu podmiotu podpisującego.
Ustawienia zaufania są określane na podstawie ustawień systemowych i identyfikatorów OID wykorzystania klucza osadzonych w certyfikacie. Stałe ciągi znaków reprezentujące rozpoznawane ustawienia zaufania są zdefiniowane w klasie SignerTrustSettings.
Tablica signerTrustSettings
certyfikatu o stanie unknown
lub invalid
jest pusta.
Zmodyfikowanie tablicy nie zmienia ustawień zaufania certyfikatu.
Implementacja
public function get signerTrustSettings():Array
Zgłasza
IllegalOperationError — Jeśli dostęp ma miejsce w momencie sprawdzania podpisu.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var certificateTrustedFor:Array = verifier.signerTrustSettings;
uriDereferencer | właściwość |
uriDereferencer:IURIDereferencer
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Implementacja interfejsu IURIDereferencer.
Przed próbą zweryfikowania podpisu należy udostępnić implementację interfejsu IURIDereferencer.
Implementacja
public function get uriDereferencer():IURIDereferencer
public function set uriDereferencer(value:IURIDereferencer):void
Zgłasza
IllegalOperationError — Jeśli ustawienie następuje w momencie sprawdzania podpisu.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
import com.example.SignedMessageDereferencer; //A custom class implementing IURIDereferencer var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.uriDereferencer = new SignedMessageDereferencer();
useSystemTrustStore | właściwość |
useSystemTrustStore:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Określa, że do budowania łańcucha mają być używane certyfikaty z systemowego magazynu certyfikatów zaufanych.
Wartość true
powoduje, że w charakterze zaufanych certyfikatów głównych są używane certyfikaty z systemowego magazynu certyfikatów zaufanych. Domyślnie systemowy magazyn certyfikatów zaufanych nie jest używany.
Implementacja
public function get useSystemTrustStore():Boolean
public function set useSystemTrustStore(value:Boolean):void
Zgłasza
IllegalOperationError — Jeśli ustawienie następuje w momencie sprawdzania podpisu.
|
Przykład ( Sposób korzystania z tego przykładu )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.useSystemTrustStore = true;
validityStatus | właściwość |
validityStatus:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Stan ważności zweryfikowanego podpisu XML.
Weryfikacja podpisu XML polega na zweryfikowaniu podpisu kryptograficznego elementu SignedInfo, certyfikatu używanego do podpisywania oraz danych adresowanych przez odwołania w elemencie SignedInfo. Ważność każdego z tych elementów jest zgłaszana odpowiednio we właściwościach digestStatus
, identityStatus()
oraz referencesStatus
.
Podpis XML może być ważny, nieważny lub nieznany. Ogólny stan zależy od stanu weryfikacji poszczególnych składników pliku podpisu:
digestStatus
— ważność podpisu kryptograficznego obliczonego na podstawie elementu SignedInfo.identityStatus
— ważność certyfikatu podmiotu podpisującego.referencesStatus
— ważność skrótu odwołań w elemencie SignedInfo.
Ważność podpisu określona we właściwości validityStatus
może być wyrażona wartościami:
valid
— jeśli stany składnikówreferencesStatus
,digestStatus
iidentityStatus
są równe wartościvalid
.invalid
— jeśli którykolwiek stan jest równy wartościinvalid
.unknown
— jeśli którykolwiek status jest równy wartościunknown
.
Implementacja
public function get validityStatus():String
Zgłasza
IllegalOperationError — Jeśli dostęp ma miejsce w momencie sprawdzania podpisu.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate the signature... var validationResult:String = verifier.validityStatus;
XMLSignatureValidator | () | Konstruktor |
public function XMLSignatureValidator()
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Tworzy obiekt XMLSignatureValidator.
Należy ustawić właściwość uriDereferencer
przed wywołaniem metody verify()
nowego obiektu.
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function addCertificate(cert:ByteArray, trusted:Boolean):*
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Dodaje certyfikat x509 potrzebny do zbudowania łańcucha.
Dodawany certyfikat musi być certyfikatem x509 zakodowanym w standardzie DER.
Jeśli parametr trusted
ma wartość true
, certyfikat jest uznawany za początek łańcucha zaufania.
Uwaga: Podpis XML może zawierać certyfikaty służące do budowania łańcucha certyfikatów podmiotu podpisującego. Klasa XMLSignatureValidator używa tych certyfikatów do budowania łańcucha, ale nie jako zaufanych certyfikatów głównych (domyślnie).
Parametry
cert:ByteArray — Obiekt ByteArray zawierający certyfikat cyfrowy x509 zakodowany w standardzie DER.
| |
trusted:Boolean — Należy ustawić na true , aby wskazać ten certyfikat jako początek łańcucha zaufania.
|
* |
Zgłasza
IllegalOperationError — Jeśli wywołanie następuje w momencie sprawdzania podpisu.
|
Przykład ( Sposób korzystania z tego przykładu )
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 | () | metoda |
public function verify(signature:XML):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Weryfikuje określony podpis.
Weryfikacja przebiega asynchronicznie. Obiekt XMLSignatureValidator wywołuje zdarzenie complete
po pomyślnym zakończeniu weryfikacji albo zdarzenie error
, jeśli weryfikacji nie można ukończyć z powodu błędów.
Procesu weryfikacji nie można anulować. W trakcie weryfikacji kolejne wywołania metody verify()
kończą się niepowodzeniem. Po zakończeniu bieżącej weryfikacji można ponownie wywołać metodę verify()
.
Uwaga: Ponieważ klasa XMLSignatureValidator implementuje tylko podzbiór zaleceń W3C w zakresie składni i przetwarzania podpisów XML, nie wszystkie formalnie poprawne podpisy XML można zweryfikować.
Parametry
signature:XML — Podpis XML do zweryfikowania.
|
Zdarzenia
complete: — Wywoływane po pomyślnym ukończeniu weryfikacji.
| |
error: — Wywoływane w wypadku napotkania błędu podczas weryfikacji odwołań.
|
Zgłasza
IllegalOperationError — Jeśli wywołanie następuje w momencie sprawdzania podpisu.
| |
Error — W razie napotkania innych błędów, takich jak niepoprawna postać XML lub nieobsługiwane elementy w pliku podpisu.
|
Przykład ( Sposób korzystania z tego przykładu )
verify()
. (W przykładzie przyjęto założenie, że implementacja interfejsu IURIDereferencer jest odpowiednia dla danego podpisu).
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 | Zdarzenie |
flash.events.Event
właściwość Event.type =
flash.events.Event.COMPLETE
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Wywoływane po ukończeniu weryfikacji.
Zdarzenie complete
nie oznacza, że podpis jest ważny. W celu określenia wyniku weryfikacji podpisu należy sprawdzić wartość właściwości validityStatus
obiektu XMLSignatureValidator.
Event.COMPLETE
definiuje wartość właściwości type
obiektu zdarzenia complete
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt sieciowy, którego ładowanie zostało ukończone. |
Przykład ( Sposób korzystania z tego przykładu )
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); }
Powiązane elementy interfejsu API
error | Zdarzenie |
flash.events.ErrorEvent
właściwość ErrorEvent.type =
flash.events.ErrorEvent.ERROR
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Wywoływane, jeśli weryfikacji nie można ukończyć z powodu błędów.
Definiuje wartość właściwościtype
obiektu zdarzenia error
.
To zdarzenie ma następujące właściwości:
Właściwość | Wartość |
---|---|
bubbles | false |
cancelable | false ; nie ma domyślnego zachowania, które można byłoby anulować. |
currentTarget | Obiekt przetwarzający aktywnie obiekt Event za pomocą detektora zdarzeń. |
target | Obiekt, w którym wystąpiło niepowodzenie operacji sieciowej. |
text | Tekst, który ma być wyświetlany w charakterze komunikatu o błędzie. |
Przykład ( Sposób korzystania z tego przykładu )
private function verificationError(event:ErrorEvent):void{ trace("Verification error: " + event.text); }
SignatureValidatorExample.validateSignature(signatureFile)
, przekazując obiekt pliku odwołujący się do dokumentu podpisu XML przeznaczonego do weryfikacji.
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, 12:06 PM Z