套件 | flash.security |
類別 | public class XMLSignatureValidator |
繼承 | XMLSignatureValidator EventDispatcher Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0 |
AIR 描述檔支援:所有桌上型電腦作業系統與 AIR for TV 裝置都支援此項功能,但行動裝置不支援。您可以使用 XMLSignatureValidator.isSupported
屬性測試執行階段的支援狀況。如需有關跨多個描述檔之 API 支援的詳細資訊,請參閱 AIR 描述檔支援。
XMLSignatureValidator 會實作 W3C 建議事項的「XML 簽章語法及處理」(XML-Signature Syntax and Processing) 的子集,不應被視為符合的實作。此建議事項支援的子集包括:
- 所有的核心簽章語法,KeyInfo 元素除外。
- KeyInfo 元素只支援 X509Data 元素。
- X509Data 元素只支援 X509Certificate 元素。
- SHA256 摘要方法演算法。
- PKCS1 簽署演算法。
- 「不含註解、規範化的 XML」規範化方法與轉換演算法。
- 採用其他簽章語法的 Manifest 元素。
您必須提供 IURIDereferencer 實作以驗證 XML 簽章。這個實作類別會負責解析簽章檔案的 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
-- 憑證尚未過期且通過撤銷檢查,但未鏈結到受信任的根憑證。當狀態未經過確認,而可能是因為尚未呼叫verify()
方法或是因為 SignedInfo 元素的密碼編譯簽章 (digestStatus
) 無效時,也會報告unknown
狀態。invalid
-- 憑證已過期或未通過撤銷檢查。
使用 addCertificate()
方法所加入的憑證,以及 revocationCheckSetting
和 useSystemTrustStore
屬性的設定可以變更憑證的有效性狀態。
注意:如果 identityStatus
為 invalid,便不會檢查 referencesStatus
,且其狀態將報告為 unknown
。此外,如果 identityStatus
為 unknown,則只有在 referencesValidationSetting
為 validOrUnknownIdentity
時才會檢查參考。
實作
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
-- 絕不檢查參考。
如果是由商業憑證所簽署的簽章,或您透過 addCertificate()
方法提供自己的憑證成為信任錨點,請使用預設的 validIdentity
設定。這項設定讓您可在簽署的文件既已遭拒的情況下不用檢查參考的有效性,以免徒增工作負荷。
如果是由自我簽署的憑證所簽署的簽章,請使用 validOrUnknownIdentity
設定。這項設定讓您得以驗證簽署的資料未曾遭到竄改,不過卻無法證實簽署者的身分。
如果驗證參考的有效性對您的應用程式整體而言不重要,請使用 never
設定以免徒增驗證上的工作負荷。
實作
public function get referencesValidationSetting():String
public function set referencesValidationSetting(value:String):void
擲回值
IllegalOperationError — 如果在驗證簽章時設定。
| |
ArgumentError — 如果 setting 參數包含 ReferencesValidationSetting 類別中未定義的值。
|
相關 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 | 屬性 |
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。代表已辨識之信任設定的字串常數是在 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 建議事項「XML 簽章語法及處理」(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
常數會定義 complete
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
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 |
當驗證因錯誤而無法完成時傳送。
定義error
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
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, 03:47 PM Z