부록
매 명령 실행 시마다 동일한 입력을 생략하기 위해 omni-cli.properties에 이를 등록할 수 있다. 설정은 아래와 같다.
Wallet 암호는 보안을 위하여 매번 실행 시마다 입력하는 것을 권장한다.(-p 옵션을 주면 명령 실행 전 암호 입력) 그러므로 최 초 생성 시 적용한 암호는 잘 기억해 두어야 한다.
Wallet 생성
1 | > omni-cli.bat keymanager createstore -p
2 |
3 | Enter value for --keymanagerpass (keymanager password):
4 | create call/
5 | Command: keymanger->createstore
6 | keymanagerType DEFAULT
7 | KeyStore Generate Success:sp.wallet
sp.wallet 파일이 생성 되었음을 확인한다.
ECC 키쌍 생성
서명용 ECC 키쌍을 생성하고 키 이름을 omni.sp로 지정한다. 이름은 자유롭게 변경이 가능하며 Verifier SDK 사용 시 설정파 일에 이 이름을 지정하면 된다.
1 | > omni-cli.bat keymanager addkey -i omni.sp --keytype 0 -p
2 |
3 | Enter value for --keymanagerpass (keymanager password):
4 | Command: keymanger->addkey
5 | keymanagerType DEFULT
6 | Unlock Success
7 | SECP256k1 key create
8 | Base58! = zBoekah8ZZAFPuystRhsKSi1biBY2TMzxSy4JcopqVoj
9 | HEX! = 0351aeb61260dd8b4c2090a470a52bcdc0470f40c68c637ceaaf8cdca334a096f6
- -i: 키 인덱스
- 향후 이 키를 참조할 때 사용할 이름
- --keytype: 키 종류
- 0: ECC 키쌍
- 1: RSA 키쌍
RSA 키쌍 생성
암호화용 RSA 키쌍을 생성하고 키 이름을 omni.sp.rsa로 지정한다. 이름은 자유롭게 변경이 가능하며 Verifier SDK 사용 시 설정파일에 이 이름을 지정하면 된다.
1 > omni-cli.bat keymanager addkey -i omni.sp.rsa --keytype 1 -p
2
3 Enter value for --keymanagerpass (keymanager password):
4 Command: keymanger->addkey
5 keymanagerType DEFULT
6 Unlock Success
7 SECP256k1 key create
8 Base58! = zBoekah8ZZAFPuystRhsKSi1biBY2TMzxSy4JcopqVoj
9 HEX! = 0351aeb61260dd8b4c2090a470a52bcdc0470f40c68c637ceaaf8cdca334a096f6
- -i: 키 인덱스
- 향후 이 키를 참조할 때 사용할 이름
- --keytype: 키 종류
- 0: ECC 키쌍
- 1: RSA 키쌍
키 목록 확인
1 | > omni-cli.bat keymanager list -p
2 |
3 | Enter value for --keymanagerpass (keymanager password):
4 | Command: keymanger->list
5 | keymanagerType DEFULT
6 | Unlock Success
7 | Key Size: 2
8 | Index1-KeyID:omni.sp
9 | Index1-PublicKey:zBoekah8ZZAFPuystRhsKSi1biBY2TMzxSy4JcopqVoj
10| Index2-KeyID:omni.sp.rsa
11| Index2-PublicKey:
| 2TuPVgMCHJy5atawrsADEzjP7MCVbyyCA89UW6Wvjp9HrBayS3H4kT7RvSwrmodxQXyi
| vW2R9wPXs166oTT27GirNbmpCPUGMofAhXv265oCwwGkDLpvR1NW23fjv9uEb8r6bJr4TcKxE6jGTnJ9GAEKn
| zDwFvrHoypnoneMfhdToPdmL5W3YAs7ojXKHCzL54ULoSyUndy5M3njgW1gffAbtMwMN5sBtbHhnPwyMNZcG3
| DHb2epW4w2C9zYfgNQYfcVXeWeHC7VpgV32ZUJk3HLZMH3WaAYA52rSwmHVmn7NrLYsAmb34nWgpUSDK2tU2P
| wMjFmADGWNbr99gVXYujCYDKLrzvNU5J3ogFd6HkqPkJNiQvn7CxPTJ1v1774XASKgv8B7L8bENbNnU
DID Document 생성
DID Document를 생성하고 서명용 ECC 공개키를 추가한다.
1 | > omni-cli.bat did2 create -i omni.sp --keymethod 3 -s sp.did
| --controller did:omn:3UGo7s2S3gC7doT7Ud3uo3rRJnab -p
2 |
3 | Enter value for --keymanagerpass (keymanager password):
4 | new did create call
5 | Command: v2->create
6 | keymanagerType DEFULT
7 | {
8 | "authentication": [
9 | {
10| "id": "did:kr:mobileid:43eiB4Qorv2hV93Bg7eKHdkUAYHZ#omni.sp"
11| }
12| ],
13| "controller": "did:omn:3UGo7s2S3gC7doT7Ud3uo3rRJnab",
14| "id": "did:kr:mobileid:43eiB4Qorv2hV93Bg7eKHdkUAYHZ",
15| "proof": {
16| "created": "2021-11-23T20:35:37",
17| "creator": "did:kr:mobileid:43eiB4Qorv2hV93Bg7eKHdkUAYHZ#omni.sp",
18| "nonce": "99933519f4f50ff1111292b9234d1641ccc0f643",
19| "signatureValue": "3rbzFqkcYRQkjbwtPFhb9VvekhwVja7amzm4pNqqXqHGBV5tZUVM8
| rB8KYyFoCKpyv6tSPUtRcZZvaV8HUtf9VcWT",
20| "type": "Secp256k1VerificationKey2018"
21| },
22| "updated": "2021-11-23T20:35:37", "verificationMethod": [
23| {
24| "controller": "did:omn:3UGo7s2S3gC7doT7Ud3uo3rRJnab",
| "expirationDate": "2021-12-03T23:59:59",
25| "id": "did:kr:mobileid:43eiB4Qorv2hV93Bg7eKHdkUAYHZ#omni.sp",
| "publicKeyBase58": "zBoekah8ZZAFPuystRhsKSi1biBY2TMzxSy4JcopqVoj",
| "status": "valid",
26| "type": "Secp256k1VerificationKey2018"
27| }
28| ]
29| }
30| DidDocument Save: sp.did
- -i
- 서명용 ECC 키 인덱스
- --keymethod
- 3으로 고정
- -s
- 생성할 DID Document 파일명
- 원하는 파일명으로 생성 가능
- --controller
- DID Document 수정 권한을 가진 DID id
- 개발환경에서는 did:omn:3UGo7s2S3gC7doT7Ud3uo3rRJnab로 고정
DID Document에 RSA 공개키 추가
Wallet에 있는 암호용 RSA 공개키를 DID Document에 추가한다.
1 | > omni-cli.bat did2 addkey -i omni.sp.rsa --keymethod 4 -f sp.did -p
2 |
3 | Enter value for --keymanagerpass (keymanager password):
4 | DID addkey Call......
5 | Command: v2->addkey
6 | keymanagerType DEFULT
7 | Unlock Success
8 | {
9 | "authentication": [
10| {
11| "id": "did:kr:mobileid:43eiB4Qorv2hV93Bg7eKHdkUAYHZ#omni.sp"
12| }
13| ],
14| "controller": "did:omn:3UGo7s2S3gC7doT7Ud3uo3rRJnab",
15| "id": "did:kr:mobileid:43eiB4Qorv2hV93Bg7eKHdkUAYHZ",
16| "keyAgreement": [
17| {
18| "controller": "did:kr:mobileid:43eiB4Qorv2hV93Bg7eKHdkUAYHZ",
19| "id": "did:kr:mobileid:43eiB4Qorv2hV93Bg7eKHdkUAYHZ#omni.sp.rsa",
20| "publicKeyBase58": "2TuPVgMCHJy5atawrsADEzjP7MCVbyyCA89UW6Wvjp9HrBayS3H4kT7RvSw
21| rmodxQXyivW2R9wPXs166oTT27GirNbmpCPUGMofAhXv265oCwwGkDLpvR1NW23fjv9uEb8r6bJr4TcKxE6jG
| TnJ9GAEKnzDwFvrHoypnoneMfhdToPdmL5W3YAs7ojXKHCzL54ULoSyUndy5M3njgW1gffAbtMwMN5sBtbHhn
| PwyMNZcG3DHb2epW4w2C9zYfgNQYfcVXeWeHC7VpgV32ZUJk3HLZMH3WaAYA52rSwmHVmn7NrLYsAmb34nWgp
| USDK2tU2PwMjFmADGWNbr99gVXYujCYDKLrzvNU5J3ogFd6HkqPkJNiQvn7CxPTJ1v1774XASKgv8B7L8bENb NnU",
22| "status": "valid",
23| "type": "RSAEncryptionKey"
24| }
25| ],
26| "proof": {
27| "created": "2021-11-23T21:04:10",
28| "creator": "did:kr:mobileid:43eiB4Qorv2hV93Bg7eKHdkUAYHZ#omni.sp",
29| "nonce": "5c25cd7a5e703adb07889e32543fe782d5c5dd20",
30| "signatureValue": "3rA4HzUDuN1FMBxeFgsNb9z3TPqSzDTSo91TYWpQvJc6w3HNauvT1Y7TjoSJQu
31| 7MNsByyGirWsv9BNTtxHEw7y9Ag",
32| "type": "Secp256k1VerificationKey2018"
33| },
34| "updated": "2021-11-23T21:04:10", "verificationMethod": [
35| {
36| "controller": "did:omn:3UGo7s2S3gC7doT7Ud3uo3rRJnab",
37| "expirationDate": "2021-12-03T23:59:59",
38| "id": "did:kr:mobileid:43eiB4Qorv2hV93Bg7eKHdkUAYHZ#omni.sp",
39| "publicKeyBase58": "zBoekah8ZZAFPuystRhsKSi1biBY2TMzxSy4JcopqVoj",
40| "status": "valid",
41| "type": "Secp256k1VerificationKey2018"
42| }
43| ]
44| }
45| DidDocument Save: sp.did
46|
- -i
- 암호화용 RSA 키 인덱스
- --keymethod
- 4로 고정
- -f
- DID Document 파일명