https://gitlab.com/evernym/mobile/mobile-sdk/-/blob/main/docs/2.Initialization.md
원문서 링크
Evernym 모바일 SDK를 사용하려면, 현재 SDK가 Evernym에서 호스팅되고 프로비저닝 되는 클라우드에 연결되고 이에 의존해야 한다. 후에 Evernym 클라우드 에이전트를 다른 공급업체의 에이전트로 교체해도 Evernym 모바일 SDK와 함게 사용할 수 있다. 에이전트는 저장 후 전달 서비스, 지속성 및 가용성, 장치에 알람 푸시하거나 http를 통해 후원자에게 전달하는 기능에 사용된다. 기본적으로 Evernym 호스팅 클라우드 서비스는 잠겨있다. 모바일 SDK 인스턴스가 새로운 호스팅 클라우드 에이전트를 프로비저닝 할 수 있는 권한이 있음을 증명하려면 프로비저닝 토큰을 제공해야 한다.
Sponsor
나 = 후원자. 자체 모바일 앱 내에서 Evernym 모바일 SDK를 사용하는 식
Sponsor 토근 발행을 수행할 백엔드 서버가 있어야 한다. 후원자는 고객이 Evernym 클라우드 에이전트에 권한을 제공할 수 있도록 프로비저닝 토큰을 제공한다.
Sponsee
모바일 장치에서 개별 응용프로그램을 설치한 고객
Evernym Cloud Service
Evernym은 클라우드 에이전트의 프로비저닝 및 관리를 용이하게 하는 클라우드 서비스를 호스팅 한다.
프로비저닝 토큰
Evernym 호스팅 클라우드 에이전트에서 Sponsee 중 한 명을 프로비저닝 할 수 있도록 하기 위해 에버님에서 제공한다.
{
"sponseeId": String,
"sponsorId": String,
"nonce": String,
"timestamp": String,
"sig": String,
"sponsorVerKey": String,
}
- sponseeId : 고객을 식별/참조하는 데 사용하는 식별자이다. 이것은 백엔드 데이터베이스에서 고객을 식별하는 데 사용되는 고객 ID일 수 있다. 즉 앱 사용자의 ID
- sponsorId : Sponsor 온보딩 프로세스가 완료된 후 Evernym 지원팀에서 부여한 ID이다.
- nonce : 무작위로 생성된 문자열로 등록 시 일회성 보안 토큰으로 사용된다.
ex) random.number.toString()- timestamp : RFC 3339 및 ISO 8601 날짜 및 시간 문자열
ex) 1996-12-19T16:39:57-08:00- RFC 3339 & ISO 8601 : 날짜와 시간의 표기에 관한 국제 표준 규격
- sig : Evernym의 클라우드 에이전트로 프로비저닝할 수 있도록 고객에게 서명을 제공한다.
Sponsor가
1. nonce + timestamp + sponseeId + sponsorId 순서로 문자열을 만든다.
2. 온보딩 프로세스 중에 등록된 키로 결과 문자열에 서명한다.
키 : sponsorVerkey
3. Base64는 서명의 결과를 인코딩한다.
ex) Base64Encode(Sign(nonce+timestamp+sponseeId+sponsorId)- sponsorVerKey : 스폰서 온보딩 중에 Evernym 지원팀에서 제공한 키이다.
링크텍스트
스폰서 서버 링크
온보딩에 등록하려면 support@evernym.com 으로 문의!
메일로 학생인데 공부해보고 싶다~ 하면서 문의 보냈더니 거의 두시간만에 답장왔다. 기 메일을 여러번 주고받았는데 거의 답이 정말 빠르게 옴!! 고맙습니다..!
이메일 보낼 때 포함해야 하는 것
1. organization 이름 : 온보딩 아이디가 될 것이니 필수로 작성해야 한다.
2. 확인 키 : 클라우드 서비스에서 프로비저닝하는 동안 고객의 프로비저닝 토큰을 확인하고 인증하는 데 사용된다. 개인키는 보내면 안됨!!! 당연함..
https://github.com/sovrin-foundation/launch/raw/master/sovrin-keygen.zip 여기서 간단하게 생성할 수 있다.
3. endpoint : 클라우드 서비스가 고객에게 메시지를 전달할 때 이용하는 URL. 앱에 푸시알람을 보낼 때 사용하는데 나는 고객 없이 예제를 따라 갈 것이라고 설명했더니, 필수로 보내지는 않아도 된다고 하셨다. 나중에 추가하고 싶을 때 말하면 추가해준다고 하심
=> 필수는 1, 2번
메일을 보내면, 만들어 주겠다는 답메일이 오고 몇시간 뒤면 아이디를 보내주신다.
링크텍스트
참조 문서
libVcx 는 slf4j 로깅 라이브러리를 사용한다. 지정된 파일에 libVcs 로그를 저장하기 위한 구성 샘플 : ConnectMeVcx.java#131
네트워크 구성에 사용된 Genesis 트랜잭션 풀 Constants.java#3.
이 구성은 프로덕션 네트워크를 대상으로 한다. 앱이 다른 네트워크와 함께 작동하는 경우 다른 환경에 대한 해당 제네시스 트랜잭션 파일은 https://github.com/sovrin-foundation/sovrin/tree/master/sovrin 에서 찾을 수 있다. 파일은 파일 시스템에 저장해야 하며 libVcs에 액세스 할 수 있어야 한다. 샘플 : ConnectMeVcx.java#L146
첫 번째 초기화 시(JSON 구성을 채우지 않은 경우) 다음 단계를 수행해야 한다.
두 번째 및 기타 애플리케이션 초기화 시 스토리지에거 구성(첫 번째 애플리케이션 실행 중 3단계에서 생성됨)을 가져와야 하고 libVcx를 직접 초기화해야 한다. ConnectMeVcx.java#L320
Indy 기반 풀 원장 네트워크는 검증 가능한 자격 증명 교환에 사용되는 엔티티를 저장하는데 사용하는 공개적으로 사용 가능한 분산 스토리지를 나타낸다.
사용 Agency Url, Agency DID및 Agency Verification Key특정 환경에서 값을 준비하는 agency_did, agency_url그리고 agency_verkeySDK를 초기화 설정 필드.
{
// These fields are used for agency configuration
"agency_url": "http://agency.pps.evernym.com", // URL of agency to use
"agency_did": "3mbwr7i85JNSL3LoNQecaW", // DID of agency
"agency_verkey": "2WXxo6y1FJvXWgZnoYUP5BJej2mceFrqBDNPE3p6HDPf", // Verification key of the agency
//These fields are used for wallet configuration
"wallet_name": "wallet-name-wwwww-wallet", // Name of the wallet
"wallet_key": "viM/BUU7I+Ypn+AdXAIQUAGX59pteVzau7Z7Jv3Ll6nzmYsSHrFqRdT71tjoMhTPRM2uSnqt8tDTSOLMP1KVf0fl1uP/dPsWu7cjucMsqfK8ohb92amhAWnNn+8s8UWC5owLN3EXZuilqYtjtRZtRUm/hhK5ycQ/OuxMgNPpfUQ=", // Name of the wallet
// Communication Protocol
"protocol_type": "3.0", // Type of the protocol
// Pool Ledger
"path": "/data/user/0/me.connect.sdk.java.sample/files/connectMeVcx/pool_transactions_genesis", // path to file containing pool genesis transactions
// User Meta
"logo": "https://robothash.com/logo.png", // url leading to image
"name": "real institution name" // name to use
}