패키지 | flash.security |
클래스 | public class XMLSignatureValidator |
상속 | XMLSignatureValidator EventDispatcher Object |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0 |
AIR 프로파일 지원: 이 기능은 모든 데스크톱 운영 체제 및 AIR for TV 장치에서는 지원되지만 휴대 장치에서는 지원되지 않습니다. XMLSignatureValidator.isSupported
속성을 사용하여 런타임에 지원을 테스트할 수 있습니다. 여러 프로파일 간 API 지원에 대한 자세한 내용은 AIR 프로파일 지원을 참조하십시오.
XMLSignatureValidator는 XML 서명 구문 및 처리를 위한 W3C 권장 사항의 하위 집합을 구현하며 준수 구현으로 간주되어서는 안 됩니다. 지원되는 권장 사항 하위 집합에는 다음이 포함됩니다.
- KeyInfo 요소를 제외한 모든 핵심 서명 구문
- X509Data 요소만 지원하는 KeyInfo 요소
- X509Certificate 요소만 지원하는 X509Data 요소
- SHA256 다이제스트 메서드 알고리즘
- PKCS1 서명 알고리즘
- "주석 없는 정규 XML" 정규화 메서드와 변형 알고리즘
- 추가 서명 구문의 Manifest 요소
XML 서명을 확인하려면 IURIDereferencer 구현을 제공해야 합니다. 이 구현 클래스는 서명 파일의 SignedInfo 요소에 지정된 URI를 확인하며 ByteArray와 같이 IDataInput 인터페이스를 구현하는 객체의 참조 데이터를 반환합니다.
서명 인증서가 신뢰할 수 있는 인증서에 체인으로 연결되었는지 확인하려면, X509Certificate 요소에 체인을 만드는 데 필요한 인증서가 XML 서명에 있거나 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
가 잘못된 경우 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
가 잘못된 경우 referencesStatus
는 확인하지 않고 unknown
으로 보고됩니다. 또한 referencesValidationSetting
이 validOrUnknownIdentity
가 아니면 identityStatus
를 알 수 없는 경우 참조를 확인하지 않습니다.
구현
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
를 알 수 없는 경우referencesValidationSetting
이never
인 경우
중요: 외부 리소스는 서명 문서 내의 SignedInfo 요소에서 직접 참조되지 않는 한 유효성을 검사하지 않습니다. 보조 참조에서 참조하는 외부 리소스의 유효성은 검사하지 않습니다. 예를 들어 XML 서명이 Manifest 요소에 서명하는 경우 Manifest 요소 자체 무결성의 유효성만 검사합니다. Manifest에 나열된 파일은 확인하지 않습니다.
구현
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 — 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로부터 파생됩니다. 인식된 신뢰 설정을 나타내는 문자열의 상수는 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 객체를 만듭니다.
새 객체의 verify()
메서드를 호출하기 전에 uriDereferencer
속성을 설정해야 합니다.
관련 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는 XML 서명 구문 및 처리를 위한 W3C 권장 사항의 하위 집합만을 구현하므로 올바른 XML 서명을 모두 확인할 수는 없습니다.
매개 변수
signature:XML — 확인할 XML 서명입니다.
|
이벤트
complete: — 확인이 성공적으로 완료되었을 때 전달됩니다.
| |
error: — 참조 확인에서 오류가 발생한 경우 전달됩니다.
|
오류
IllegalOperationError — 서명의 유효성을 검사하는 동안 호출된 경우입니다.
| |
Error — 서명 파일에 형식이 잘못된 XML 또는 지원되지 않는 요소와 같은 기타 오류가 발생한 경우입니다.
|
예제 ( 예제 사용 방법 )
verify()
메서드를 호출하여 XML 서명이 들어 있는 파일을 읽고 해당 파일의 유효성을 검사합니다. (예제에서는 서명에 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:17 PM Z