# Verifier 개발 가이드
# DID, private/public key 생성
Holder는 verifier를 식별하기 위한 DID를 생성하고, presentation을 요청할 때 이를 사용해야 합니다. 또한 이 DID를 생성하고, presentation request message에 서명을 추가하기 위해 PKI기반의 private key, public key가 필요합니다.
DID 및 private/public key 쌍을 생성하기 위하여 DID Tool 문서를 참고하세요.
생성한 DID와 private key를 분실했을 경우, 복구할 수 없기 때문에 분실하지 않도록 주의해야 합니다.
# Presentation 요청 및 검증
Verifier는 credential을 보유하고 있는 holder인 쯩 앱 (opens new window)과 연동해서 presentation을 제출 받을수 있습니다.
이를 위해 쯩 앱 (opens new window)과 연동하는 모바일 어플리케이션과, presentation을 검증하고 내용을 확인하는 Web Server가 필요합니다.
# Sequence Diagram
아래 diagram은 presentation을 획득하고 검증하는 전형적인 시나리오의 예시입니다.
구체적인 예제를 통해서 이해를 돕고자 하는 것이니, 아래 diagram의 서버 API나 절차를 반드시 지킬 필요는 없습니다.
- Holder인 쯩 앱 (opens new window)과 verifier 앱 간의 통신은 Client SDK를 이용합니다.
- Verifier WAS에서 아래 예제의 "jwt { }" 부분은 MyID2.0 Implementation Guide를 이용해서 만들수 있습니다.
- Verifier 앱과 verifier WAS간의 통신은 이 문서의 범위가 아닙니다.
- 각 entity간 통신 결과에 대한 code는 이 문서의 Appendix 쯩 앱과의 메시지 규격를 참고하십시오.
# Implementation
# Presentation Request 생성
Verifier 서버는 presentation 발급 요청을 위한 JWT 메시지를 만들고, verifier 클라이언트는 이를 쯩 앱 (opens new window)에게 전달합니다. 쯩 앱 (opens new window)에서 제출한 presentation message은 Verifier 클라이언트를 통해 verifier 서버에게 전달합니다.
이를 구현하기 위해 아래 가이드 문서를 참고하십시오.
Verifier는 presentation request message를 생성합니다.
- 서버 개발가이드의 Request Presentation을 참고하십시오.
이렇게 만들어진 message를 verifier 클라이언트는 쯩 앱 (opens new window)에게 전달합니다.
각 플랫폼 별 Client SDK에서 request 함수를 참고하십시오.
- Android: Android Client 개발가이드 문서에서 아래 내용을 참고하십시오
Implementation → Zzeung → Methods - iOS: iOS Client 개발가이드 문서에서 아래 내용을 참고하십시오.
Implementation → Zzeung → Methods
# Presentation 검증
쯩 앱은 verifier 앱에게 presentation message을 전달 합니다. 아래 가이드 내용을 참고 하세요.
- Android: Android Client 개발가이드 문서에서 아래 내용을 참고하십시오
Implementation → Zzeung → Interface → ResultCallback - iOS: iOS Client 개발가이드 문서에서 아래 내용을 참고 하십시오.
Implementation → Zzeung → Methods → translate(...)
Verifier 서버는 holder로부터 제출받은 presentation message을 검증하고, presentation에 포함된 credential의 내용을 확인할 수 있습니다.
- 서버 개발가이드 Verify Presentation을 참고하십시오.