@imagina-build/ias-cli 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +406 -2
  2. package/bin/ias.mjs +19 -0
  3. package/package.json +32 -5
  4. package/schema/ias.schema.json +535 -0
  5. package/shared/credentials/cms.mjs +105 -0
  6. package/shared/credentials/index.mjs +354 -0
  7. package/shared/credentials/plist.mjs +93 -0
  8. package/shared/vault/approvers-vectors.mjs +188 -0
  9. package/shared/vault/approvers.mjs +234 -0
  10. package/shared/vault/index.mjs +583 -0
  11. package/shared/vault/plaintext.mjs +115 -0
  12. package/shared/vault/test-vectors/ias-vault-2/approvers.json +2122 -0
  13. package/shared/vault/test-vectors/ias-vault-2/keys.json +43 -0
  14. package/shared/vault/test-vectors/ias-vault-2/malformed.json +1739 -0
  15. package/shared/vault/test-vectors/ias-vault-2/plaintexts.json +149 -0
  16. package/shared/vault/test-vectors/ias-vault-2/runners.json +580 -0
  17. package/shared/vault/test-vectors/ias-vault-2/sealed.json +567 -0
  18. package/shared/vault/test-vectors/ias-vault-2/tampered.json +989 -0
  19. package/shared/vault/test-vectors/keys.json +31 -0
  20. package/shared/vault/test-vectors/malformed.json +1341 -0
  21. package/shared/vault/test-vectors/sealed.json +384 -0
  22. package/shared/vault/test-vectors/tampered.json +610 -0
  23. package/shared/vault/vectors.mjs +720 -0
  24. package/src/cli.mjs +231 -0
  25. package/src/commands/apps/index.mjs +36 -0
  26. package/src/commands/auth/index.mjs +141 -0
  27. package/src/commands/build/follow.mjs +168 -0
  28. package/src/commands/build/index.mjs +110 -0
  29. package/src/commands/build/local.mjs +69 -0
  30. package/src/commands/build/profile.mjs +50 -0
  31. package/src/commands/build/source.mjs +71 -0
  32. package/src/commands/builds/index.mjs +148 -0
  33. package/src/commands/credentials/index.mjs +256 -0
  34. package/src/commands/credentials/material.mjs +159 -0
  35. package/src/commands/devices/asc.mjs +116 -0
  36. package/src/commands/devices/index.mjs +65 -0
  37. package/src/commands/devices/sync.mjs +223 -0
  38. package/src/commands/dist/index.mjs +108 -0
  39. package/src/commands/doctor/index.mjs +158 -0
  40. package/src/commands/env/index.mjs +163 -0
  41. package/src/commands/github/index.mjs +53 -0
  42. package/src/commands/init/index.mjs +224 -0
  43. package/src/commands/migrate/credentials.mjs +213 -0
  44. package/src/commands/migrate/eas-cli.mjs +153 -0
  45. package/src/commands/migrate/index.mjs +73 -0
  46. package/src/commands/migrate/numbers.mjs +85 -0
  47. package/src/commands/migrate/profiles.mjs +174 -0
  48. package/src/commands/migrate/project.mjs +249 -0
  49. package/src/commands/migrate/survey.mjs +205 -0
  50. package/src/commands/migrate/variables.mjs +183 -0
  51. package/src/commands/push/index.mjs +334 -0
  52. package/src/commands/sdk/index.mjs +81 -0
  53. package/src/commands/submit/index.mjs +85 -0
  54. package/src/commands/update/index.mjs +526 -0
  55. package/src/commands/usage/index.mjs +57 -0
  56. package/src/commands/vault/approvers.mjs +129 -0
  57. package/src/commands/vault/index.mjs +159 -0
  58. package/src/commands/vault/runners.mjs +115 -0
  59. package/src/commands/vault/team.mjs +111 -0
  60. package/src/commands/version/index.mjs +71 -0
  61. package/src/commands/webhooks/index.mjs +104 -0
  62. package/src/commands/workflows/index.mjs +88 -0
  63. package/src/config.mjs +261 -0
  64. package/src/dist.mjs +99 -0
  65. package/src/errors.mjs +158 -0
  66. package/src/http.mjs +45 -0
  67. package/src/legacy.mjs +73 -0
  68. package/src/manage.mjs +120 -0
  69. package/src/ota.mjs +122 -0
  70. package/src/output.mjs +36 -0
  71. package/src/process.mjs +45 -0
  72. package/src/schema.mjs +131 -0
  73. package/src/sdk.mjs +120 -0
  74. package/src/secret-input.mjs +27 -0
  75. package/src/secrets.mjs +37 -0
  76. package/src/shared.mjs +5 -0
  77. package/src/team-vault.mjs +152 -0
  78. package/src/token-store.mjs +93 -0
@@ -0,0 +1,384 @@
1
+ {
2
+ "format": "ias-vault-1",
3
+ "description": "Envelopes made with injected randomness: an implementation must produce the same envelope from the same inputs, and every key in keys.json must get the outcome in opens. changes are a grant (rewrap) and a revocation on top of the first case.",
4
+ "warning": "Test vectors: the keys are public. Never use them for anything else.",
5
+ "cases": [
6
+ {
7
+ "name": "text-for-recovery-and-runner-a",
8
+ "description": "A UTF-8 plaintext sealed for the recovery key and runner-a.",
9
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IG5vdCBhIHJlYWwgc2VjcmV0",
10
+ "credential": {
11
+ "id": "0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40",
12
+ "type": "ios-distribution-certificate",
13
+ "version": 1
14
+ },
15
+ "recipients": [
16
+ "recovery",
17
+ "runner-a"
18
+ ],
19
+ "random": {
20
+ "dataKey": "YWzaWVkOOB51VzCclITT0AL7jBOcb9tnUAd4oY1pteU",
21
+ "dataIv": "Hp-AoxVNmWFNSG35",
22
+ "wraps": [
23
+ {
24
+ "ephemeralPrivateKey": "bM7WB00JuyZsrJhRdBDQspuzOMebCP0c5G9jn07obt0",
25
+ "iv": "gVsaOTmFS8aLqGlS"
26
+ },
27
+ {
28
+ "ephemeralPrivateKey": "kUVRI7yC6JgdlqfY9pwxJICrtSlQILMyNryj-VCoJws",
29
+ "iv": "kJchZolDykWp1SpX"
30
+ }
31
+ ]
32
+ },
33
+ "aad": "ias-vault-1\ndata\n0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40\nios-distribution-certificate\n1",
34
+ "wraps": [
35
+ {
36
+ "kid": "gY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0",
37
+ "ephemeralPrivateKey": "bM7WB00JuyZsrJhRdBDQspuzOMebCP0c5G9jn07obt0",
38
+ "iv": "gVsaOTmFS8aLqGlS",
39
+ "sharedSecret": "QovClbfoymONopq2ax6sHmFT_hUARRPYkBFizMdL5Tc",
40
+ "hkdfSalt": "Elwq15U3Nxrb6iCJg-aWOEcfsd9DFbIIX4EgCt06qVPPjzQvJ5h52E83Gp_lCrSAum0jFnlLGQGMvH_lMrWxEg",
41
+ "wrapKey": "73EKusnDSZeiDXt8dBvIuwI3Y49wfIybJ5rjbUFhpmc",
42
+ "aad": "ias-vault-1\nwrap\n0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40\nios-distribution-certificate\n1\ngY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0"
43
+ },
44
+ {
45
+ "kid": "OHeCFPD25tPd2DRaYj34dS7DLtio-1gUq_-NYsYmqNk",
46
+ "ephemeralPrivateKey": "kUVRI7yC6JgdlqfY9pwxJICrtSlQILMyNryj-VCoJws",
47
+ "iv": "kJchZolDykWp1SpX",
48
+ "sharedSecret": "hi58ntrAdDasG6QYXXAzDFaDVdNZCJzOr1-PwheLi3o",
49
+ "hkdfSalt": "D4lqNnuzZL65zNTmyaKekxzeSwIPF9rruhZkDNxmXSwDxjW5UZFcS-hrXHMY2-UsEVynLntQ7YajZXlZ2OERSA",
50
+ "wrapKey": "-NXne312eGWcbLJApQbYBsmR-9TW0pAoyyyaVcdN4b8",
51
+ "aad": "ias-vault-1\nwrap\n0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40\nios-distribution-certificate\n1\nOHeCFPD25tPd2DRaYj34dS7DLtio-1gUq_-NYsYmqNk"
52
+ }
53
+ ],
54
+ "envelope": {
55
+ "format": "ias-vault-1",
56
+ "credential": {
57
+ "id": "0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40",
58
+ "type": "ios-distribution-certificate",
59
+ "version": 1
60
+ },
61
+ "data": {
62
+ "iv": "Hp-AoxVNmWFNSG35",
63
+ "ct": "H3bKVI3MnjfMdX1SDz9oNf7pN_Y03jHt_ttDaw42PdbwY_EyN-HXFv7PhsO55OwGFL05nenQXcUYpA"
64
+ },
65
+ "recipients": [
66
+ {
67
+ "kid": "gY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0",
68
+ "epk": "Elwq15U3Nxrb6iCJg-aWOEcfsd9DFbIIX4EgCt06qVM",
69
+ "iv": "gVsaOTmFS8aLqGlS",
70
+ "wk": "b8ao7aW61LvHQn8xzWHDjT_ocDJGHxclZta5Q2QoV-cS3_84ssTw1zizzVeNBcUF"
71
+ },
72
+ {
73
+ "kid": "OHeCFPD25tPd2DRaYj34dS7DLtio-1gUq_-NYsYmqNk",
74
+ "epk": "D4lqNnuzZL65zNTmyaKekxzeSwIPF9rruhZkDNxmXSw",
75
+ "iv": "kJchZolDykWp1SpX",
76
+ "wk": "AJZjHoXSPJnJydcBz-OiWEtyl5YKjyO1tN0G5vCrX7C6XNcQxsdydovX9zp8j9Ud"
77
+ }
78
+ ]
79
+ },
80
+ "digest": "pgN8yDYPAQ7Fi-ro0nywQprgXNMGQdDM1zgJGqItvdQ",
81
+ "opens": {
82
+ "recovery": {
83
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IG5vdCBhIHJlYWwgc2VjcmV0"
84
+ },
85
+ "runner-a": {
86
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IG5vdCBhIHJlYWwgc2VjcmV0"
87
+ },
88
+ "runner-b": {
89
+ "error": "not-a-recipient"
90
+ },
91
+ "outsider": {
92
+ "error": "not-a-recipient"
93
+ }
94
+ }
95
+ },
96
+ {
97
+ "name": "binary-for-recovery",
98
+ "description": "Every byte value once, sealed for the recovery key only, as version 3 of another credential.",
99
+ "plaintext": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w",
100
+ "credential": {
101
+ "id": "android-upload-key",
102
+ "type": "android-keystore",
103
+ "version": 3
104
+ },
105
+ "recipients": [
106
+ "recovery"
107
+ ],
108
+ "random": {
109
+ "dataKey": "Msa07yF9r2MLGLXlN4SkGzuc4w_rFrUD7CDRvdZj3No",
110
+ "dataIv": "SFZHr6FG0YVCdCzz",
111
+ "wraps": [
112
+ {
113
+ "ephemeralPrivateKey": "acKOxNVkxqzHIkAT9mUZnrScKTcG5ADv2gPwyki3VqE",
114
+ "iv": "jvlIoUtIaO-2cGmj"
115
+ }
116
+ ]
117
+ },
118
+ "aad": "ias-vault-1\ndata\nandroid-upload-key\nandroid-keystore\n3",
119
+ "wraps": [
120
+ {
121
+ "kid": "gY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0",
122
+ "ephemeralPrivateKey": "acKOxNVkxqzHIkAT9mUZnrScKTcG5ADv2gPwyki3VqE",
123
+ "iv": "jvlIoUtIaO-2cGmj",
124
+ "sharedSecret": "oqp90vNM2e5YsPfK0vrB3a9MU_ZOYqZ0nk9HzGQiOUQ",
125
+ "hkdfSalt": "Guk6Vno302kiqafqOq6SctusJnksnDV4LADm5GsB2Q3PjzQvJ5h52E83Gp_lCrSAum0jFnlLGQGMvH_lMrWxEg",
126
+ "wrapKey": "FIBM_wFlHdvaVx730UwpNQjHf2wPHyr5VOarE5XuZtY",
127
+ "aad": "ias-vault-1\nwrap\nandroid-upload-key\nandroid-keystore\n3\ngY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0"
128
+ }
129
+ ],
130
+ "envelope": {
131
+ "format": "ias-vault-1",
132
+ "credential": {
133
+ "id": "android-upload-key",
134
+ "type": "android-keystore",
135
+ "version": 3
136
+ },
137
+ "data": {
138
+ "iv": "SFZHr6FG0YVCdCzz",
139
+ "ct": "XvKASQIwIaVN0xBvLnoZmk-e3jc2zgmV6-DX2jPOQ2nhGc7x5db8sb5XArKMR5bER60MECrGAsM6kI-TtD0UyEUWnEZS6I7r0M_okvLssMBlQlr7PbFKmsK8jG6oTUKlC6g_00d_mZioGjAqDUprosm9-GZNODVftUOOkeeT33q6yzydLZDM9pYfQxgP1rxealI6Lx9rSHBjA_ORGHW-LQfbdH7e7MQMrGyy7ocIIDaCYTf1JiqfT4c_QPYHD3K__3fZ5dfGI13ZbzPMdRnUnlGa_KMybwnWPSzZZkjoXib0BuM9no1WjBcL_-hWPxqSTnsw2ZhicHa37uSLFVaVV1UhegWCLH74bDuck7ufJJw"
140
+ },
141
+ "recipients": [
142
+ {
143
+ "kid": "gY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0",
144
+ "epk": "Guk6Vno302kiqafqOq6SctusJnksnDV4LADm5GsB2Q0",
145
+ "iv": "jvlIoUtIaO-2cGmj",
146
+ "wk": "4Xe6PEwBVTezuZkoGwiyZ26nISplZhv_P8di23OqgRTfjAYtJGWofMLdVUehIN0N"
147
+ }
148
+ ]
149
+ },
150
+ "digest": "QIHonBGaSZcv59lIl-biO62fHc-AwQoXU6OkVki4HUc",
151
+ "opens": {
152
+ "recovery": {
153
+ "plaintext": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w"
154
+ },
155
+ "runner-a": {
156
+ "error": "not-a-recipient"
157
+ },
158
+ "runner-b": {
159
+ "error": "not-a-recipient"
160
+ },
161
+ "outsider": {
162
+ "error": "not-a-recipient"
163
+ }
164
+ }
165
+ },
166
+ {
167
+ "name": "same-credential-other-data-key",
168
+ "description": "The credential of the first case sealed again with another data key, for runner-a and the recovery key. Its runner-a wrap is the one moved in tampered.json (wrap-of-other-envelope).",
169
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IGFub3RoZXIgcGxhaW50ZXh0",
170
+ "credential": {
171
+ "id": "0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40",
172
+ "type": "ios-distribution-certificate",
173
+ "version": 1
174
+ },
175
+ "recipients": [
176
+ "runner-a",
177
+ "recovery"
178
+ ],
179
+ "random": {
180
+ "dataKey": "Qg0vumZryGq4AxJmIaaE1YZmBLxlFP4ewiW8MPQCzz4",
181
+ "dataIv": "51Ew6h4vp1cqM3Qd",
182
+ "wraps": [
183
+ {
184
+ "ephemeralPrivateKey": "ifXCF5vEcDlw5JbeOc9K5WHPv36hfZIBg9A9-CDynKE",
185
+ "iv": "ZkMDyCGR4fn4U327"
186
+ },
187
+ {
188
+ "ephemeralPrivateKey": "PYwVyf6IN143m0NwGDgw3Ir_h3z-SDUJNkklWKiYySU",
189
+ "iv": "ISX148qHm-A7aDqw"
190
+ }
191
+ ]
192
+ },
193
+ "aad": "ias-vault-1\ndata\n0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40\nios-distribution-certificate\n1",
194
+ "wraps": [
195
+ {
196
+ "kid": "OHeCFPD25tPd2DRaYj34dS7DLtio-1gUq_-NYsYmqNk",
197
+ "ephemeralPrivateKey": "ifXCF5vEcDlw5JbeOc9K5WHPv36hfZIBg9A9-CDynKE",
198
+ "iv": "ZkMDyCGR4fn4U327",
199
+ "sharedSecret": "UQiUF7fcUHaVKpsfbeRsVgvWLQnufVQ3JYlZqqINnBc",
200
+ "hkdfSalt": "zWtoy2Y9WhXuVvKH1lQmW6jL230r7wMkBgLKv78BhzADxjW5UZFcS-hrXHMY2-UsEVynLntQ7YajZXlZ2OERSA",
201
+ "wrapKey": "F6gfi1WYCPIT7Wx46uAup9PH2Su35POFPYvvxTrFxOM",
202
+ "aad": "ias-vault-1\nwrap\n0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40\nios-distribution-certificate\n1\nOHeCFPD25tPd2DRaYj34dS7DLtio-1gUq_-NYsYmqNk"
203
+ },
204
+ {
205
+ "kid": "gY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0",
206
+ "ephemeralPrivateKey": "PYwVyf6IN143m0NwGDgw3Ir_h3z-SDUJNkklWKiYySU",
207
+ "iv": "ISX148qHm-A7aDqw",
208
+ "sharedSecret": "UFzus5kA0EXmkgJqmfyZjtCgIeXOIXUyhzQu8NWusBk",
209
+ "hkdfSalt": "BZrX9eHn-GQ3JgtB5Ne31a0zkfjE9HCgqiZlhO_nLUbPjzQvJ5h52E83Gp_lCrSAum0jFnlLGQGMvH_lMrWxEg",
210
+ "wrapKey": "34pEPEuXjwY-CX41LZeieV6Ma3t3LTtpqjC5JOqDzfM",
211
+ "aad": "ias-vault-1\nwrap\n0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40\nios-distribution-certificate\n1\ngY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0"
212
+ }
213
+ ],
214
+ "envelope": {
215
+ "format": "ias-vault-1",
216
+ "credential": {
217
+ "id": "0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40",
218
+ "type": "ios-distribution-certificate",
219
+ "version": 1
220
+ },
221
+ "data": {
222
+ "iv": "51Ew6h4vp1cqM3Qd",
223
+ "ct": "NBW1kV5khGN67RONaqkSUPdE5tK7kaoBxE6tuq6DkoruZIxNBHTciwxxDl54Cd7KmPPPGDDCCySwHQ"
224
+ },
225
+ "recipients": [
226
+ {
227
+ "kid": "OHeCFPD25tPd2DRaYj34dS7DLtio-1gUq_-NYsYmqNk",
228
+ "epk": "zWtoy2Y9WhXuVvKH1lQmW6jL230r7wMkBgLKv78BhzA",
229
+ "iv": "ZkMDyCGR4fn4U327",
230
+ "wk": "QHIp0aCx4kc38VMSebyXGB8yBZ5dxiA7Hgf9jh_FoZKzRJ0z26N8NBcUCcbvQoI-"
231
+ },
232
+ {
233
+ "kid": "gY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0",
234
+ "epk": "BZrX9eHn-GQ3JgtB5Ne31a0zkfjE9HCgqiZlhO_nLUY",
235
+ "iv": "ISX148qHm-A7aDqw",
236
+ "wk": "1_v-t2NuvAP8hLHXqj3xAPZFQleqAio2aUTNuR1RBNaRDgm89IyFYdla4Qv302vv"
237
+ }
238
+ ]
239
+ },
240
+ "digest": "M97CmJdEgnxlXM1RtRhYeafNBhTpNj6Nq-lo8djS82Q",
241
+ "opens": {
242
+ "recovery": {
243
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IGFub3RoZXIgcGxhaW50ZXh0"
244
+ },
245
+ "runner-a": {
246
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IGFub3RoZXIgcGxhaW50ZXh0"
247
+ },
248
+ "runner-b": {
249
+ "error": "not-a-recipient"
250
+ },
251
+ "outsider": {
252
+ "error": "not-a-recipient"
253
+ }
254
+ }
255
+ }
256
+ ],
257
+ "changes": [
258
+ {
259
+ "name": "grant-runner-b",
260
+ "description": "ias vault grant: the recovery key opens the first case and wraps its data key for runner-b. runner-a is already a recipient and keeps its wrap.",
261
+ "operation": "rewrap",
262
+ "from": "text-for-recovery-and-runner-a",
263
+ "opener": "recovery",
264
+ "add": [
265
+ "runner-b",
266
+ "runner-a"
267
+ ],
268
+ "random": {
269
+ "wraps": [
270
+ {
271
+ "ephemeralPrivateKey": "0TbO2d8XEFastnCXJvFHxjt9Y4jQ-wEQO2W2oQ104H4",
272
+ "iv": "2puuuf3f6vCQyRjq"
273
+ }
274
+ ]
275
+ },
276
+ "wraps": [
277
+ {
278
+ "kid": "3ZL6nCkm1BcKR1Nd5MqK3OMzPTijlc-wKtLHjIB-5hg",
279
+ "ephemeralPrivateKey": "0TbO2d8XEFastnCXJvFHxjt9Y4jQ-wEQO2W2oQ104H4",
280
+ "iv": "2puuuf3f6vCQyRjq",
281
+ "sharedSecret": "gXAa1XD8Y4jwE7uoqX8lqvVJwtHiSr5HEz1IxItrWCk",
282
+ "hkdfSalt": "_WtawL4wS55ePjiLMn6FcPc55kKiIA3Q9ySrlSSL0j0HAHIdyhghpFL0B93o3vrq2mL-NzcnR54cNCQ58ZsXXA",
283
+ "wrapKey": "2ziWNJQ3_lBRiNfL4cYksQxJpLi458a0G66vB4tAD9U",
284
+ "aad": "ias-vault-1\nwrap\n0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40\nios-distribution-certificate\n1\n3ZL6nCkm1BcKR1Nd5MqK3OMzPTijlc-wKtLHjIB-5hg"
285
+ }
286
+ ],
287
+ "envelope": {
288
+ "format": "ias-vault-1",
289
+ "credential": {
290
+ "id": "0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40",
291
+ "type": "ios-distribution-certificate",
292
+ "version": 1
293
+ },
294
+ "data": {
295
+ "iv": "Hp-AoxVNmWFNSG35",
296
+ "ct": "H3bKVI3MnjfMdX1SDz9oNf7pN_Y03jHt_ttDaw42PdbwY_EyN-HXFv7PhsO55OwGFL05nenQXcUYpA"
297
+ },
298
+ "recipients": [
299
+ {
300
+ "kid": "gY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0",
301
+ "epk": "Elwq15U3Nxrb6iCJg-aWOEcfsd9DFbIIX4EgCt06qVM",
302
+ "iv": "gVsaOTmFS8aLqGlS",
303
+ "wk": "b8ao7aW61LvHQn8xzWHDjT_ocDJGHxclZta5Q2QoV-cS3_84ssTw1zizzVeNBcUF"
304
+ },
305
+ {
306
+ "kid": "OHeCFPD25tPd2DRaYj34dS7DLtio-1gUq_-NYsYmqNk",
307
+ "epk": "D4lqNnuzZL65zNTmyaKekxzeSwIPF9rruhZkDNxmXSw",
308
+ "iv": "kJchZolDykWp1SpX",
309
+ "wk": "AJZjHoXSPJnJydcBz-OiWEtyl5YKjyO1tN0G5vCrX7C6XNcQxsdydovX9zp8j9Ud"
310
+ },
311
+ {
312
+ "kid": "3ZL6nCkm1BcKR1Nd5MqK3OMzPTijlc-wKtLHjIB-5hg",
313
+ "epk": "_WtawL4wS55ePjiLMn6FcPc55kKiIA3Q9ySrlSSL0j0",
314
+ "iv": "2puuuf3f6vCQyRjq",
315
+ "wk": "A19EQYJ1bAfCmBH7JAzTuSMtLttMoL1AX3BzfsqkelBq3u1IFovzFSmzcb9Ar1zK"
316
+ }
317
+ ]
318
+ },
319
+ "digest": "pgN8yDYPAQ7Fi-ro0nywQprgXNMGQdDM1zgJGqItvdQ",
320
+ "opens": {
321
+ "recovery": {
322
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IG5vdCBhIHJlYWwgc2VjcmV0"
323
+ },
324
+ "runner-a": {
325
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IG5vdCBhIHJlYWwgc2VjcmV0"
326
+ },
327
+ "runner-b": {
328
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IG5vdCBhIHJlYWwgc2VjcmV0"
329
+ },
330
+ "outsider": {
331
+ "error": "not-a-recipient"
332
+ }
333
+ }
334
+ },
335
+ {
336
+ "name": "revoke-runner-a",
337
+ "description": "Revoking runner-a removes its wrap from the previous case; the data and the other wraps do not change.",
338
+ "operation": "remove",
339
+ "from": "grant-runner-b",
340
+ "remove": "runner-a",
341
+ "envelope": {
342
+ "format": "ias-vault-1",
343
+ "credential": {
344
+ "id": "0d5e6c9a-4b8f-4c1e-9a3d-2f7b8e1c6a40",
345
+ "type": "ios-distribution-certificate",
346
+ "version": 1
347
+ },
348
+ "data": {
349
+ "iv": "Hp-AoxVNmWFNSG35",
350
+ "ct": "H3bKVI3MnjfMdX1SDz9oNf7pN_Y03jHt_ttDaw42PdbwY_EyN-HXFv7PhsO55OwGFL05nenQXcUYpA"
351
+ },
352
+ "recipients": [
353
+ {
354
+ "kid": "gY6AuqT5ADs7vK-fmj9UEb5Gf6ZSdOLxT1mBWwD5hA0",
355
+ "epk": "Elwq15U3Nxrb6iCJg-aWOEcfsd9DFbIIX4EgCt06qVM",
356
+ "iv": "gVsaOTmFS8aLqGlS",
357
+ "wk": "b8ao7aW61LvHQn8xzWHDjT_ocDJGHxclZta5Q2QoV-cS3_84ssTw1zizzVeNBcUF"
358
+ },
359
+ {
360
+ "kid": "3ZL6nCkm1BcKR1Nd5MqK3OMzPTijlc-wKtLHjIB-5hg",
361
+ "epk": "_WtawL4wS55ePjiLMn6FcPc55kKiIA3Q9ySrlSSL0j0",
362
+ "iv": "2puuuf3f6vCQyRjq",
363
+ "wk": "A19EQYJ1bAfCmBH7JAzTuSMtLttMoL1AX3BzfsqkelBq3u1IFovzFSmzcb9Ar1zK"
364
+ }
365
+ ]
366
+ },
367
+ "digest": "pgN8yDYPAQ7Fi-ro0nywQprgXNMGQdDM1zgJGqItvdQ",
368
+ "opens": {
369
+ "recovery": {
370
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IG5vdCBhIHJlYWwgc2VjcmV0"
371
+ },
372
+ "runner-a": {
373
+ "error": "not-a-recipient"
374
+ },
375
+ "runner-b": {
376
+ "plaintext": "aWFzLXZhdWx0LTEgdGVzdCB2ZWN0b3I6IG5vdCBhIHJlYWwgc2VjcmV0"
377
+ },
378
+ "outsider": {
379
+ "error": "not-a-recipient"
380
+ }
381
+ }
382
+ }
383
+ ]
384
+ }