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
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 | } |