パッケージ | flash.security |
クラス | public class XMLSignatureValidator |
継承 | XMLSignatureValidator EventDispatcher Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
AIR プロファイルのサポート:この機能はすべてのデスクトップオペレーティングシステムおよび AIR for TV デバイスでサポートされますが、モバイルデバイスではサポートされません。XMLSignatureValidator.isSupported
プロパティを使用して、サポートされているかどうかを実行時にテストすることができます。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。
XMLSignatureValidator は、W3C Recommendation for XML-Signature Syntax and Processing のサブセットを実装しているため、適合する実装と見なされません。この勧告でサポートされているサブセットには次のようなものがあります。
- KeyInfo エレメントを除くすべての主要な署名シンタックス。
- KeyInfo エレメントは X509Data エレメントのみをサポートします。
- X509Data エレメントは X509Certificate エレメントのみをサポートします。
- SHA256 ダイジェストメソッドアルゴリズム。
- PKCS1 署名アルゴリズム。
- "Canonical XML without comments" Canonicalization Method and Transform アルゴリズム。
- 追加署名シンタックスによるマニフェストエレメント。
XML 署名を検証するために、IURIDereferencer 実装を提供する必要があります。この実装クラスは、署名ファイルの SignedInfo エレメントで指定されている URI を解決し、IDataInput インターフェイスを実装するオブジェクト(ByteArray など)で参照データを返します。
署名証明書が信頼された証明書にチェーンされていることを検証するためには、XML 署名に X509Certificate エレメントでチェーンを構築するために必要な証明書が含まれているか、または addCertificate()
メソッドを使用してチェーンの構築に必要な証明書を提供する必要があります。
XMLSignature を検証するには:
- XMLSignatureValidator クラスのインスタンスを作成します。
- このインスタンスの
uriDereferencer
プロパティを IURIDereferencer 実装クラスのインスタンスに設定します。 - 必要に応じて、
addCertificate()
メソッドを使用し、証明書信頼チェーンを作成するために DER エンコードされた証明書を提供します。 - XMLSignatureValidator
verify
メソッドを呼び出して、検証する署名を渡します。 - XMLSignatureValidator オブジェクトが complete イベントを送出した後、
validityStatus
プロパティをチェックします。
署名のステータスについて:
XML 署名の有効性は valid、invalid、または unknown です。全体のステータスは、署名ファイルの個々のコンポーネントの検証ステータスによって決まります。
-
digestStatus
-- SignedInfo エレメントに対して計算された暗号署名の有効性。valid
、invalid
、unknown
のいずれかです。 -
identityStatus
-- 署名証明書の有効性。証明書が期限切れになっている、失効している、または変更されている場合、ステータスはinvalid
になります。信頼されたルート証明書に証明書をチェーンできない場合、ステータスはunknown
になります。ダイジェストが無効の場合、証明書はチェックされません。チェックされない場合、ステータスはunknown
として報告されます。 -
referencesStatus
-- 署名ファイルの SignedInfo エレメントにおける参照によって指示されるデータの有効性。valid
、invalid
、unknown
のいずれかです。ダイジェストまたは証明書が無効の場合、参照はチェックされません。参照のチェックは、referencesValidationSetting
プロパティの設定に基づいてスキップされる場合もあります。チェックされない場合、ステータスはunknown
として報告されます。
validityStatus
プロパティによって報告される署名の有効性には、次のようなものがあります。
-
valid
--referencesStatus
、digestStatus
およびidentityStatus
がすべてvalid
の場合。 -
invalid
-- 個々のステータスのいずれかがinvalid
の場合。 -
unknown
--referencesStatus
、digestStatus
またはidentityStatus
がunknown
の場合。
標準化の制限:
XML ドキュメントを標準化するとき、AIR の XML エンジンで予想どおりの XML ストリングが常に生成されるとは限りません。この理由により、エンベロープに入れられたまたはデタッチされたシグネチャドキュメント内ではエレメント間に空白文字を挿入しないこと、およびシグネチャドキュメント内部で名前空間を再定義しないことをお勧めします。どちらの場合も、AIR で元のドキュメントと同じ文字並びのドキュメントが再生成されない可能性があり、そのため検証が失敗します。
詳細
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
digestStatus : String [読み取り専用]
署名 SignedInfo エレメントに対して計算された暗号署名の有効性を返します。 | XMLSignatureValidator | ||
identityStatus : String [読み取り専用]
署名証明書の有効性ステータス。 | XMLSignatureValidator | ||
isSupported : Boolean [静的] [読み取り専用]
現在のプラットフォームで XMLSignatureValidator クラスがサポートされている場合、isSupported プロパティは true に設定されます。サポートされていない場合は、false に設定されます。 | XMLSignatureValidator | ||
referencesStatus : String [読み取り専用]
署名 SignedInfo エレメントの参照内にあるデータの有効性のステータス。 | XMLSignatureValidator | ||
referencesValidationSetting : String
参照がチェックされる条件を指定します。 | XMLSignatureValidator | ||
revocationCheckSetting : String
証明書の失効のチェック方法を指定します。 | XMLSignatureValidator | ||
signerCN : String [読み取り専用]
署名証明書の共通名フィールド。 | XMLSignatureValidator | ||
signerDN : String [読み取り専用]
署名証明書の識別名フィールド。 | XMLSignatureValidator | ||
signerExtendedKeyUsages : Array [読み取り専用]
署名証明書にリストされている拡張キー使用法 OID を含む配列です。 | XMLSignatureValidator | ||
signerTrustSettings : Array [読み取り専用]
署名証明書の信頼設定を含む配列。 | XMLSignatureValidator | ||
uriDereferencer : IURIDereferencer
IURIDereferencer 実装。 | XMLSignatureValidator | ||
useSystemTrustStore : Boolean
システムの信頼ストアの証明書をチェーンの構築に使用するように指定します。 | XMLSignatureValidator | ||
validityStatus : String [読み取り専用]
検証された XML 署名の有効性ステータス。 | XMLSignatureValidator |
メソッド | 定義元 | ||
---|---|---|---|
XMLSignatureValidator オブジェクトを作成します。 | XMLSignatureValidator | ||
チェーン構築用の x509 証明書を追加します。 | XMLSignatureValidator | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | ||
イベントをイベントフローに送出します。 | EventDispatcher | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定された署名を検証します。 | XMLSignatureValidator | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
イベント | 概要 | 定義元 | ||
---|---|---|---|---|
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | |||
検証が完了したときに送出されます。 | XMLSignatureValidator | |||
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | |||
エラーが原因で検証が完了しなかった場合に送出されます。 | XMLSignatureValidator |
digestStatus | プロパティ |
digestStatus:String
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
署名 SignedInfo エレメントに対して計算された暗号署名の有効性を返します。
ステータスを以下に示します。
valid
— 署名が暗号として有効である場合。invalid
— 署名後ダイジェストが変更された場合。unknown
--verify()
メソッドが呼び出されていない場合。
注意:digestStatus
が invalid の場合、identityStatus
と referencesStatus
はチェックされず、unknown
として報告されます。
実装
public function get digestStatus():String
例外
IllegalOperationError — 署名の検証中にアクセスされた場合。
|
identityStatus | プロパティ |
identityStatus:String
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
署名証明書の有効性ステータス。
ステータスは次のいずれかです。
valid
-- 証明書の有効期限は切れておらず、失効のチェックに失敗せず、信頼されたルート証明書へのチェーンがあります。unknown
-- 証明書の有効期限は切れておらず、失効のチェックに失敗しなかったが、信頼されたルート証明書へのチェーンがありません。unknown
のステータスは、verify()
メソッドが呼び出されていないか、SignedInfo エレメント(digestStatus
)の暗号署名が無効であるために、ステータスが検証されていない場合にも報告されます。invalid
-- 証明書の有効期限が切れているか、失効のチェックに失敗しました。
addCertificate()
メソッド、revocationCheckSetting
プロパティおよび useSystemTrustStore
プロパティの設定を使用して追加された証明書は、証明書が有効と見なされるかどうかを変更できます。
注意:identityStatus
が invalid の場合、referencesStatus
はチェックされず、unknown
として報告されます。さらに、identityStatus
は、referencesValidationSetting
が validOrUnknownIdentity
でない限り、unknown になります。
実装
public function get identityStatus():String
例外
IllegalOperationError — 署名の検証中にアクセスされた場合。
|
関連する API エレメント
例 ( この例の使用方法 )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var identityResult:String = verifier.identityStatus;
isSupported | プロパティ |
referencesStatus | プロパティ |
referencesStatus:String
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
署名 SignedInfo エレメントの参照内にあるデータの有効性のステータス。
ステータスは次のいずれかです。
valid
-- すべての参照が有効な場合。invalid
-- いずれかの参照が無効な場合。unknown
— 無効な場合。参照は、次の状況の場合に未検証のままになる可能性があります。verify()
メソッドが呼び出されなかった場合。- SignedInfo エレメントの暗号署名(
digestStatus
)が無効な場合。 - 署名証明書(
identityStatus
)が無効な場合。 referencesValidationSetting
がvalidIdentity
(デフォルトの設定)であり、署名証明書のidentityStatus
が unknown である場合。referencesValidationSetting
がnever
の場合。
重要:外部リソースは、署名ドキュメントの SignedInfo エレメント内で直接参照されていない限り、検証されません。二次参照によって参照される外部リソースは検証されません。例えば、XML 署名がマニフェストエレメントに署名している場合は、マニフェストエレメント自体の整合性だけが検証されます。マニフェストにリストされているファイルはチェックされません。
実装
public function get referencesStatus():String
例外
IllegalOperationError — 署名の検証中にアクセスされた場合。
|
関連する API エレメント
例 ( この例の使用方法 )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var dataResult:String = verifier.referencesStatus;
referencesValidationSetting | プロパティ |
referencesValidationSetting:String
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.5 |
参照がチェックされる条件を指定します。
このプロパティを設定するには、ReferencesValidationSetting クラスに定義されている定数を使用します。この設定には次のようなものがあります。
ReferencesValidationSetting.VALID_IDENTITY
— 署名証明書が有効であり、信頼されたルートにチェーンされている場合のみ、参照をチェックします。これはデフォルトの設定です。ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY
— 署名証明書が有効な場合に、参照をチェックします。信頼できるルートにチェーンされていない場合でも実行します。ReferencesValidationSetting.NEVER
— 参照をチェックしません。
デフォルトの設定である validIdentity
を使用するのは、商用証明書を使用して署名された署名を使用する場合、または addCertificate()
メソッドを使用して独自の証明書を信頼アンカーとして供給する場合です。この設定により、署名されたドキュメントが拒否される場合の参照の有効性をチェックするオーバーヘッドが回避されます。
自己署名証明書を使用して署名された署名では、validOrUnknownIdentity
設定を使用します。この設定では、署名されたデータが変更されていないことを検証できますが、署名者のアイデンティティについては何の保証も与えられません。
アプリケーションのコンテキストの中でこのような検証が重要でない場合は、never
設定を使用して、参照を検証するオーバーヘッドを回避します。
実装
public function get referencesValidationSetting():String
public function set referencesValidationSetting(value:String):void
例外
IllegalOperationError — 署名の検証中に設定された場合。
| |
ArgumentError — ReferencesValidationSetting クラスに定義されていない値が setting パラメーターに含まれている場合。
|
関連する API エレメント
例 ( この例の使用方法 )
import flash.security.ReferencesValidationSetting; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.referencesValidationSetting = ReferencesValidationSetting.VALID_OR_UNKNOWN_IDENTITY;
revocationCheckSetting | プロパティ |
revocationCheckSetting:String
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
証明書の失効のチェック方法を指定します。
このプロパティを設定するために、RevocationSettings クラスで定義されている定数を使用します。この設定には次のようなものがあります。
RevocationCheckSettings.NEVER
-- 証明書の失効をチェックしません。RevocationCheckSettings.BEST_EFFORT
-- 失効情報があり、失効ステータスを取得できる場合、証明書の失効をチェックします。失効ステータスが明確に判別できない場合、証明書は拒否されません。RevocationCheckSettings.REQUIRED_IF_AVAILABLE
-- 証明書に失効情報が含まれている場合、証明書を検証するために失効ステータスを明確に判別できる必要があります。RevocationCheckSettings.ALWAYS_REQUIRED
-- 常に証明書の失効をチェックします。失効情報がない証明書は拒否されます。
実装
public function get revocationCheckSetting():String
public function set revocationCheckSetting(value:String):void
例外
IllegalOperationError — 署名の検証中に設定された場合。
|
関連する API エレメント
signerCN | プロパティ |
signerCN:String
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
署名証明書の共通名フィールド。
実装
public function get signerCN():String
例 ( この例の使用方法 )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var commonName:String = verifier.signerCN;
signerDN | プロパティ |
signerDN:String
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
署名証明書の識別名フィールド。
実装
public function get signerDN():String
例 ( この例の使用方法 )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var distinguishedName:String = verifier.signerDN;
signerExtendedKeyUsages | プロパティ |
signerExtendedKeyUsages:Array
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
署名証明書にリストされている拡張キー使用法 OID を含む配列です。
各拡張キー使用法は、数値形式の OID で報告されます。
実装
public function get signerExtendedKeyUsages():Array
例外
IllegalOperationError — 署名の検証中にアクセスされた場合。
|
例 ( この例の使用方法 )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var extendedKeyOIDs:Array = verifier.signerExtendedKeyUsages;
signerTrustSettings | プロパティ |
signerTrustSettings:Array
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
署名証明書の信頼設定を含む配列。
信頼設定は、証明書に埋め込まれたシステム OID およびキー使用法 OID から派生します。有効な信頼設定を表すストリングの定数は、SignerTrustSettings クラスで定義されています。
unknown
または invalid
の証明書の signerTrustSettings
配列は空です。
配列を変更しても、証明書の信頼設定は変更されません。
実装
public function get signerTrustSettings():Array
例外
IllegalOperationError — 署名の検証中にアクセスされた場合。
|
関連する API エレメント
例 ( この例の使用方法 )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate a signature... var certificateTrustedFor:Array = verifier.signerTrustSettings;
uriDereferencer | プロパティ |
uriDereferencer:IURIDereferencer
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
IURIDereferencer 実装。
IURIDereferencer 実装は、署名を検証しようとする前に提供する必要があります。
実装
public function get uriDereferencer():IURIDereferencer
public function set uriDereferencer(value:IURIDereferencer):void
例外
IllegalOperationError — 署名の検証中に設定された場合。
|
関連する API エレメント
例 ( この例の使用方法 )
import com.example.SignedMessageDereferencer; //A custom class implementing IURIDereferencer var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.uriDereferencer = new SignedMessageDereferencer();
useSystemTrustStore | プロパティ |
useSystemTrustStore:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
システムの信頼ストアの証明書をチェーンの構築に使用するように指定します。
true
の場合、システムの信頼ストアの信頼アンカーは信頼されたルートとして使用されます。デフォルトでは、システムの信頼ストアは使用されません。
実装
public function get useSystemTrustStore():Boolean
public function set useSystemTrustStore(value:Boolean):void
例外
IllegalOperationError — 署名の検証中に設定された場合。
|
例 ( この例の使用方法 )
var verifier:XMLSignatureValidator = new XMLSignatureValidator(); verifier.useSystemTrustStore = true;
validityStatus | プロパティ |
validityStatus:String
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
検証された XML 署名の有効性ステータス。
XML 署名は、SignedInfo エレメントの暗号署名、署名証明書、および SignedInfo エレメントの参照によって指定されるデータを検証することによって検証されます。これらの各エレメントの有効性は、digestStatus
、identityStatus()
および referencesStatus
プロパティによってそれぞれ個別に報告されます。
XML 署名の有効性は valid、invalid、または unknown です。全体のステータスは、署名ファイルの個々のコンポーネントの検証ステータスによって決まります。
digestStatus
-- SignedInfo エレメントに対して計算された暗号署名の有効性。identityStatus
-- 署名証明書の有効性。referencesStatus
-- 署名の SignedInfo エレメントにおける参照のダイジェストの有効性。
validityStatus
プロパティによって報告される署名の有効性には、次のようなものがあります。
valid
--referencesStatus
、digestStatus
およびidentityStatus
がすべてvalid
の場合。invalid
-- 個々のステータスのいずれかがinvalid
の場合。unknown
-- 個々のステータスのいずれかがunknown
の場合。
実装
public function get validityStatus():String
例外
IllegalOperationError — 署名の検証中にアクセスされた場合。
|
関連する API エレメント
例 ( この例の使用方法 )
import flash.security.XMLSignatureValidator; var verifier:XMLSignatureValidator = new XMLSignatureValidator(); //validate the signature... var validationResult:String = verifier.validityStatus;
XMLSignatureValidator | () | コンストラクター |
public function XMLSignatureValidator()
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
XMLSignatureValidator オブジェクトを作成します。
uriDereferencer
プロパティの設定は、新しいオブジェクトの verify()
メソッドを呼び出す前に行う必要があります。
関連する API エレメント
例 ( この例の使用方法 )
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 | () | メソッド |
public function addCertificate(cert:ByteArray, trusted:Boolean):*
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
チェーン構築用の x509 証明書を追加します。
追加される証明書は、DER エンコードされた x509 証明書でなければなりません。
trusted
パラメーターが true
の場合、証明書は信頼アンカーと見なされます。
注意:XML 署名に、署名者の証明書チェーンを構築するための証明書が含まれていることがあります。XMLSignatureValidator クラスは、チェーンを構築するためにこれらの証明書を使用しますが、信頼されたルートとしては構築されません(デフォルト)。
パラメーター
cert:ByteArray — DER エンコードされた x509 電子証明書を含む ByteArray オブジェクトです。
| |
trusted:Boolean — true に設定した場合、この証明書が信頼アンカーに指定されます。
|
* |
例外
IllegalOperationError — 署名の検証中に呼び出された場合。
|
例 ( この例の使用方法 )
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 | () | メソッド |
public function verify(signature:XML):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
指定された署名を検証します。
検証は非同期です。XMLSignatureValidator オブジェクトは、検証が正常に完了すると complete
イベントを送出し、エラーが原因で検証が完了できないと error
イベントを送出します。
検証処理はキャンセルできません。検証処理の実行中は、後続の verify()
メソッドの呼び出しは失敗します。現在の検証が完了すると、もう一度 verify()
メソッドを呼び出すことができます。
注意: XMLSignatureValidator は、W3C recommendation for XML Signature Syntax and Processing のサブセットのみを実装するため、有効な XML 署名のすべてを検証できるわけではありません。
パラメーター
signature:XML — 検証する XML 署名です。
|
イベント
complete: — 検証が正常に完了したときに送出されます。
| |
error: — 参照の検証がエラーを検出した場合に送出されます。
|
例外
IllegalOperationError — 署名の検証中に呼び出された場合。
| |
Error — 署名ファイル内に整形式でない XML やサポートされていないエレメントがあるなど、その他のエラーが発生した場合。
|
例 ( この例の使用方法 )
verify()
メソッドを呼び出してそれを検証します (この例では、IURIDereferencer の実装が署名に適合していると想定します)。
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 | イベント |
flash.events.Event
プロパティ Event.type =
flash.events.Event.COMPLETE
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
検証が完了したときに送出されます。
complete
イベントは署名が有効であることを意味するものではありません。XMLSignatureValidator オブジェクトの validityStatus
プロパティをチェックして、署名検証の結果を判別します。
Event.COMPLETE
定数は、type
プロパティ(complete
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | 読み込みが完了したネットワークオブジェクトです。 |
例 ( この例の使用方法 )
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); }
関連する API エレメント
error | イベント |
flash.events.ErrorEvent
プロパティ ErrorEvent.type =
flash.events.ErrorEvent.ERROR
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
エラーが原因で検証が完了しなかった場合に送出されます。
type
プロパティ(error
イベントオブジェクト)の値を定義します。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | ネットワーク操作エラーが発生したオブジェクトです。 |
text | エラーメッセージとして表示されるテキストです。 |
例 ( この例の使用方法 )
private function verificationError(event:ErrorEvent):void{ trace("Verification error: " + event.text); }
SignatureValidatorExample.validateSignature( signatureFile )
を呼び出し、検証する XML 署名ドキュメントを参照するファイルを渡すことで、この例を実行します。
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:34 AM Z