Viewing is open to everyone. Downloading and starring need a GitHub sign-in. Sign in with GitHub

safe-actions-v1.json

v0.1.0-build.85 Latest Commit ede38f5

Size
11 KB
Lines
215
Language
json
SHA-256
5c4990851dff…
View on GitHub

Sign in with GitHub to download. Each download is recorded with your GitHub username.

1{
2 "schema": 1,
3 "description": "Safe Action envelopes from an independent implementation, with the verdict a conforming reader must reach. expect: ok, integrity (bad signature), expired (out of time or too long-lived), invalid (malformed).",
4 "vectors": [
5 {
6 "name": "valid same-device action",
7 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifYin3GJXz9pBQbvVqH4mYNCUodLn-HjjmjzRjXmRlNufZtu-DYituFwmXxa-Hg4_igIYNE2hSgaJ8Z5nr6BdRQA",
8 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
9 "now": 1794000000,
10 "max_lifetime": 600,
11 "expect": "ok",
12 "fields": {
13 "scope": 0,
14 "issuer": "citeory.com",
15 "app": "com.viadere",
16 "action": "open.library",
17 "key_id": "2026-11",
18 "request_id": "r_8f3K2pQ7xZ",
19 "issued_at": 1793999970,
20 "expires_at": 1794000090,
21 "params": "{\"item\":\"apa-7\"}"
22 }
23 },
24 {
25 "name": "valid cross-device sign-in, no params",
26 "payload": "ckey-action:1:AQELY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUOc2lnbmluLnJlcXVlc3QHMjAyNi0xMRJzZXNzLTQxZmQwYTliZTJjNzQAAAAAau5EYgAAAABq7kTaAAACHa8IJgHKEekWl1IdGliWpiUHh2XxNxnxhSm2S6cTYMkSroRnqeoR2B1OOzpEervNy2wJgYYKO5vXooio3S0L",
27 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
28 "now": 1794000000,
29 "max_lifetime": 600,
30 "expect": "ok",
31 "fields": {
32 "scope": 1,
33 "issuer": "citeory.com",
34 "app": "com.viadere",
35 "action": "signin.request",
36 "key_id": "2026-11",
37 "request_id": "sess-41fd0a9be2c74",
38 "issued_at": 1793999970,
39 "expires_at": 1794000090,
40 "params": ""
41 }
42 },
43 {
44 "name": "signed by a different key",
45 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifRcUEq3OLdOYH_aQw6IwV6C2n0cPc17jT-tPM6xDcjpDIYpu4wx5TenxpeFDvjFjBideoMfHT67ZOSH71pYNVA0",
46 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
47 "now": 1794000000,
48 "max_lifetime": 600,
49 "expect": "integrity"
50 },
51 {
52 "name": "action name changed after signing",
53 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMbnBlbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifYin3GJXz9pBQbvVqH4mYNCUodLn-HjjmjzRjXmRlNufZtu-DYituFwmXxa-Hg4_igIYNE2hSgaJ8Z5nr6BdRQA",
54 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
55 "now": 1794000000,
56 "max_lifetime": 600,
57 "expect": "integrity"
58 },
59 {
60 "name": "receiving app changed after signing",
61 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmYMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifYin3GJXz9pBQbvVqH4mYNCUodLn-HjjmjzRjXmRlNufZtu-DYituFwmXxa-Hg4_igIYNE2hSgaJ8Z5nr6BdRQA",
62 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
63 "now": 1794000000,
64 "max_lifetime": 600,
65 "expect": "integrity"
66 },
67 {
68 "name": "expired",
69 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifYin3GJXz9pBQbvVqH4mYNCUodLn-HjjmjzRjXmRlNufZtu-DYituFwmXxa-Hg4_igIYNE2hSgaJ8Z5nr6BdRQA",
70 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
71 "now": 1794000091,
72 "max_lifetime": 600,
73 "expect": "expired"
74 },
75 {
76 "name": "valid for longer than the app allows",
77 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5SkAAQeyJpdGVtIjoiYXBhLTcifTKTROd_zuzaD1T1ZAdd7t5573KyV7vUtr2r-5zwWpLaQNOJO2rRuWrBnU1PkFV6skebiOpqUy5uRoRr0TcDlwA",
78 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
79 "now": 1794000000,
80 "max_lifetime": 600,
81 "expect": "expired"
82 },
83 {
84 "name": "issued in the future beyond clock tolerance",
85 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRawAAAAAau5GEAAQeyJpdGVtIjoiYXBhLTcifSq0kkXXokfIAK8JJeaJqTX6-DGFmGlr44SS32ZoxpuR5VIjJjjyJg84dJOusCzPjy2lNdQxHit2dicnNJg2ngE",
86 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
87 "now": 1794000000,
88 "max_lifetime": 600,
89 "expect": "expired"
90 },
91 {
92 "name": "within clock tolerance",
93 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruROQAAAAAau5FSAAQeyJpdGVtIjoiYXBhLTcifT7Zf5gadvrMrBg3coy9Aq1ngYj-hYIziW7Bg-zMHtsuOSUcAa8MyOWnW96yasvxX1jz6s9Qbuh_GMjpZSWTOAE",
94 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
95 "now": 1794000000,
96 "max_lifetime": 600,
97 "expect": "ok",
98 "fields": {
99 "scope": 0,
100 "issuer": "citeory.com",
101 "app": "com.viadere",
102 "action": "open.library",
103 "key_id": "2026-11",
104 "request_id": "r_8f3K2pQ7xZ",
105 "issued_at": 1794000100,
106 "expires_at": 1794000200,
107 "params": "{\"item\":\"apa-7\"}"
108 }
109 },
110 {
111 "name": "expires before it is issued",
112 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRIAAAAAAau5EfwAQeyJpdGVtIjoiYXBhLTciffZlrEin6_YuNg3Zwgy9_tNh0RTvlQNrAv7aIGTEvn3vG65KuAVjp89YyF8EcHwNkD6u4NQQ4eKpgvTBYvWO9QY",
113 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
114 "now": 1794000000,
115 "max_lifetime": 600,
116 "expect": "expired"
117 },
118 {
119 "name": "not a Safe Action",
120 "payload": "https://citeory.com/",
121 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
122 "now": 1794000000,
123 "max_lifetime": 600,
124 "expect": "invalid"
125 },
126 {
127 "name": "wrong version prefix",
128 "payload": "ckey-action:2:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifYin3GJXz9pBQbvVqH4mYNCUodLn-HjjmjzRjXmRlNufZtu-DYituFwmXxa-Hg4_igIYNE2hSgaJ8Z5nr6BdRQA",
129 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
130 "now": 1794000000,
131 "max_lifetime": 600,
132 "expect": "invalid"
133 },
134 {
135 "name": "not base64url",
136 "payload": "ckey-action:1:abc+/def",
137 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
138 "now": 1794000000,
139 "max_lifetime": 600,
140 "expect": "invalid"
141 },
142 {
143 "name": "non-canonical base64url tail",
144 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifYin3GJXz9pBQbvVqH4mYNCUodLn-HjjmjzRjXmRlNufZtu-DYituFwmXxa-Hg4_igIYNE2hSgaJ8Z5nr6BdRQB",
145 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
146 "now": 1794000000,
147 "max_lifetime": 600,
148 "expect": "invalid_or_integrity"
149 },
150 {
151 "name": "upper-case issuer",
152 "payload": "ckey-action:1:AQALQ2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifbC5642suTO16XVGUn7yIPyNOAZLYeKXcKDuC2gLtVv8x4oLZ6vFuQa9WuQoOdroUg_F2Uwsj-yojLYeujN4pQg",
153 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
154 "now": 1794000000,
155 "max_lifetime": 600,
156 "expect": "invalid"
157 },
158 {
159 "name": "issuer without a dot",
160 "payload": "ckey-action:1:AQAJbG9jYWxob3N0C2NvbS52aWFkZXJlDG9wZW4ubGlicmFyeQcyMDI2LTExDHJfOGYzSzJwUTd4WgAAAABq7kRiAAAAAGruRNoAEHsiaXRlbSI6ImFwYS03In3yqB6s_H7O1jVNNisnTtVQcQ7YEo0DJaQCd8mWXW0u33kfzTufVO4Ht35NgxqP2BHthzSl4Qh39B1OGmWsO7wG",
161 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
162 "now": 1794000000,
163 "max_lifetime": 600,
164 "expect": "invalid"
165 },
166 {
167 "name": "request ID too short",
168 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEDYWJjAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifUa6CQInHvHwJUKa748Et4_W0I7EhyeUyKuBghtcSbEiC4E0JTLl0MgAsqNNSo1EEAkacZhzBFPhVEXnjyhEagA",
169 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
170 "now": 1794000000,
171 "max_lifetime": 600,
172 "expect": "invalid"
173 },
174 {
175 "name": "unknown scope",
176 "payload": "ckey-action:1:AQILY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifUFNnfvTV1IJ78YxsCznB7O5NzIT7kYX7b0SwfupgNMUYtNFLeu7gVxIyFYhZlxjIZav_dKHubHXia77wwkZlA8",
177 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
178 "now": 1794000000,
179 "max_lifetime": 600,
180 "expect": "invalid"
181 },
182 {
183 "name": "unsupported envelope version",
184 "payload": "ckey-action:1:AgALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifTphcQ1pBNG-ViwhmntunbvGfYJg-1_LFmmwYBChc8DPOhO3CO9mMPLh1Zn95lL6AlLRUljwt-WK1O3dHG1kWQE",
185 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
186 "now": 1794000000,
187 "max_lifetime": 600,
188 "expect": "invalid"
189 },
190 {
191 "name": "extra byte after the signature",
192 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifYin3GJXz9pBQbvVqH4mYNCUodLn-HjjmjzRjXmRlNufZtu-DYituFwmXxa-Hg4_igIYNE2hSgaJ8Z5nr6BdRQAA",
193 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
194 "now": 1794000000,
195 "max_lifetime": 600,
196 "expect": "invalid"
197 },
198 {
199 "name": "truncated",
200 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5Bw",
201 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
202 "now": 1794000000,
203 "max_lifetime": 600,
204 "expect": "invalid"
205 },
206 {
207 "name": "non-canonical signature scalar (S + L)",
208 "payload": "ckey-action:1:AQALY2l0ZW9yeS5jb20LY29tLnZpYWRlcmUMb3Blbi5saWJyYXJ5BzIwMjYtMTEMcl84ZjNLMnBRN3haAAAAAGruRGIAAAAAau5E2gAQeyJpdGVtIjoiYXBhLTcifYin3GJXz9pBQbvVqH4mYNCUodLn-HjjmjzRjXmRlNufU6-0aqIQy7T8-w1h_QcenwIYNE2hSgaJ8Z5nr6BdRRA",
209 "public_key": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
210 "now": 1794000000,
211 "max_lifetime": 600,
212 "expect": "integrity"
213 }
214 ]
215}