diff --git a/devices/README.md b/devices/README.md new file mode 100644 index 0000000..6a4a972 --- /dev/null +++ b/devices/README.md @@ -0,0 +1,38 @@ +# Device IDs + +The files contained in [ci](ci) and [prod](prod) directories hold identity information about witness devices. +`ci` devices are _fused_ and receieve firmware builds at each commit, and `prod` devices are _fused_ witness devices +which receive only release tagged firmware builds. + +End-users are not expected to use these files, they're just being stored here. + +## Files + +File names are based on the unique and immutable serial number assigned at time of manufacturing of the SoC +which lies at the core of the device. + +The `.pub` file contains a public key which represents the _device_ with the corresponding serial number. + +The `.witness.0` file contains a signed note, verifiable with the device's `pub` key, which commits to the +initial witness identity used by the device to cosign checkpoints. + +The body of this note is formed of 4 lines: + +1. A line with the text "ArmoredWitness ID attestation v1". +2. The ASCII encoded HEX representation of the device serial number whose witness public key is below. +3. The ASCII encoded decimal number, with no leading zeroes, representing the number of times the witness has rolled its identity. Currently this is always "0". +4. A note Verifier string representing the witness public key which will be used by this device. + +The note is signed by the _device_ key corresponding to the serial number on line 2. + +The `.bastion.0` file contains a signed note, verifiable with the device's `pub` key, which commits to the +initial bastion identity used by the device to register with bastion hosts for performing synchronous witnessing. + +The body of this note is formed of 4 lines: + +1. A line with the text "ArmoredWitness BastionID attestation v1". +2. The ASCII encoded HEX representation of the device serial number whose bastion ID is below. +3. The ASCII encoded decimal, with no leading zeroes, representing the number of times the witness has rolled its bastion identity. Currently this is always "0". +4. A 64 character ASCII HEX representation of the device's bastion ID. + +The note is signed by the _device_ key corresponding to the serial number on line 2. diff --git a/devices/ci/720A9DEAD4390330.bastion.0 b/devices/ci/720A9DEAD4390330.bastion.0 new file mode 100644 index 0000000..897b031 --- /dev/null +++ b/devices/ci/720A9DEAD4390330.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4390330 +0 +76d180a9d59ea2165ba4417d96ff26f79f938116129519ec85f2a39473c65cb9 + +— AW-ID-Attestation-720A9DEAD4390330 8IYt880nPv51OVCfSo2XlT3o3UeAANCAlFXjfEUbPepAzXaueb6m35eDCBwynOcBkYKd1WyjaQMlchS3iXC3XviCewg= diff --git a/devices/ci/720A9DEAD4390330.pub b/devices/ci/720A9DEAD4390330.pub new file mode 100644 index 0000000..5dae61b --- /dev/null +++ b/devices/ci/720A9DEAD4390330.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4390330+f0862df3+AUkbXcjaok7rTjKu7DTJ4iIqENz0tlJcnoCRR7fcWIZr diff --git a/devices/ci/720A9DEAD4390330.witness.0 b/devices/ci/720A9DEAD4390330.witness.0 new file mode 100644 index 0000000..2d87f81 --- /dev/null +++ b/devices/ci/720A9DEAD4390330.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4390330 +0 +ArmoredWitness-black-paper+2098422d+AReXvQmqY5qnUZQCsds1Pk90VuOb9a5iDaqLxHiTsW4o + +— AW-ID-Attestation-720A9DEAD4390330 8IYt879y4TIR3n6yf0o7nWBowT2S6s6psspPKJWDoU3n5bdp0+rjCjE3NFg+OWy6oj734H5n9WpSL5Sgi9WqG9Eq6QA= diff --git a/devices/ci/720A9DEAD4390A2E.pub b/devices/ci/720A9DEAD4390A2E.pub new file mode 100644 index 0000000..000aca7 --- /dev/null +++ b/devices/ci/720A9DEAD4390A2E.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4390A2E+8c757dfd+AWkrw39Z9Nff1RXLQkyEg38f/oXEWSl1Dn+FsMlfF4t2 diff --git a/devices/ci/720A9DEAD4390A2E.witness.0 b/devices/ci/720A9DEAD4390A2E.witness.0 new file mode 100644 index 0000000..c6900a5 --- /dev/null +++ b/devices/ci/720A9DEAD4390A2E.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4390A2E +0 +ArmoredWitness-still-dawn+5d4e9d88+AUEEuc7Njgqec07UfvBgunkhtk2vEsqnfrJ4BOpZtz/v + +— AW-ID-Attestation-720A9DEAD4390A2E jHV9/dRWW/sAgPlJYFcOZqLxH8DOixnwe/bH+Lzqw1AylNFZe0lc56otuEqodJqy4499ObVdftgHkHPi2M6YM8TR1g0= diff --git a/devices/ci/720A9DEAD4391F4A.bastion.0 b/devices/ci/720A9DEAD4391F4A.bastion.0 new file mode 100644 index 0000000..1ed1a54 --- /dev/null +++ b/devices/ci/720A9DEAD4391F4A.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4391F4A +0 +1decd179ab5784e3f8ee689af2d3b353ca8ce4d1e25abe8b50b9376af32233b7 + +— AW-ID-Attestation-720A9DEAD4391F4A a66jx2CwKaUkJpvPZ6okGnErXhzDm4tUlh3c5LZXhd6xA41InD/m1w48Pi4sTvb1u3xnbsWnNQDyAhe1yofho5jrcwU= diff --git a/devices/ci/720A9DEAD4391F4A.pub b/devices/ci/720A9DEAD4391F4A.pub new file mode 100644 index 0000000..c734f36 --- /dev/null +++ b/devices/ci/720A9DEAD4391F4A.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4391F4A+6baea3c7+AcRoDdbbX9p5UJzn2wWPmTqIs7S1UYAbVHwzak3ArTR4 diff --git a/devices/ci/720A9DEAD4391F4A.witness.0 b/devices/ci/720A9DEAD4391F4A.witness.0 new file mode 100644 index 0000000..6f33967 --- /dev/null +++ b/devices/ci/720A9DEAD4391F4A.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4391F4A +0 +ArmoredWitness-icy-snowflake+257719dd+AS3Cx/VuOKOlhn8XYvYOAgyLZ9Xu6UqeT7baPZ56nDp4 + +— AW-ID-Attestation-720A9DEAD4391F4A a66jx5/AoAe9Q6HB/uIVdJN3cM6VWCkjDb5FHe4STkjAzW4FK5X0+lABnIzmPAXfQ93XPyaXjWnCgrqptABzKgF47gU= diff --git a/devices/ci/720A9DEAD4392220.bastion.0 b/devices/ci/720A9DEAD4392220.bastion.0 new file mode 100644 index 0000000..61f104f --- /dev/null +++ b/devices/ci/720A9DEAD4392220.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4392220 +0 +66cea1a2e93c90692a697c4f36418f38d72287f65c842b883f3343bb0e27ab44 + +— AW-ID-Attestation-720A9DEAD4392220 T38fbYv8f3qa7KvkNvCiNLHfgPOAjHlA8E9nCwDb8ml3QLTbbXVexmH4P/tqWZCXDAEY5RuJ+gcw3NgTwDcxo+WQIwM= diff --git a/devices/ci/720A9DEAD4392220.pub b/devices/ci/720A9DEAD4392220.pub new file mode 100644 index 0000000..cd7f2b7 --- /dev/null +++ b/devices/ci/720A9DEAD4392220.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4392220+4f7f1f6d+AS0jg+HmlH50UkwdDBGRIZCon4tUsXsFIZcG54wbdxMk diff --git a/devices/ci/720A9DEAD4392220.witness.0 b/devices/ci/720A9DEAD4392220.witness.0 new file mode 100644 index 0000000..74a06e3 --- /dev/null +++ b/devices/ci/720A9DEAD4392220.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4392220 +0 +ArmoredWitness-holy-frog+e66f71d4+AfGeqx8rOiK1WIPz3bEOT7tNRHigUAFLTdvTZ9IPT8m3 + +— AW-ID-Attestation-720A9DEAD4392220 T38fbdWn1gtd8lW0PqanIy0r+bRDFeMaesjPbkW+fmeHDhByZsk4xtZe705FBxAtGdzM6r9U/4X7yG8L5UqbBfpaYAc= diff --git a/devices/ci/720A9DEAD4394411.bastion.0 b/devices/ci/720A9DEAD4394411.bastion.0 new file mode 100644 index 0000000..7fca7f9 --- /dev/null +++ b/devices/ci/720A9DEAD4394411.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4394411 +0 +60be39b9426e7777190bc89af9b568021c1610cb9067cac15a1c30f188042a52 + +— AW-ID-Attestation-720A9DEAD4394411 /IUVVay7xqucCRFt2i9ciWQzOdHleR7trqYSYWVVsLLhq6yncoCGj7zn/xGW6DBJMpebO0qRt41P8H0rxWcHP8AOCQU= diff --git a/devices/ci/720A9DEAD4394411.pub b/devices/ci/720A9DEAD4394411.pub new file mode 100644 index 0000000..777a603 --- /dev/null +++ b/devices/ci/720A9DEAD4394411.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4394411+fc851555+AdP/46yY/OP1vdTXSz3C/SDQcixHdZBakWDbR9MdwxK6 diff --git a/devices/ci/720A9DEAD4394411.witness.0 b/devices/ci/720A9DEAD4394411.witness.0 new file mode 100644 index 0000000..7bb637c --- /dev/null +++ b/devices/ci/720A9DEAD4394411.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4394411 +0 +ArmoredWitness-morning-surf+82bc63bd+AUylOFW/NW4Y3ooygtklaXswvD8NQ6ET8guBTdCcBwt3 + +— AW-ID-Attestation-720A9DEAD4394411 /IUVVd4SW1ydG0y2NstaSjTMmmzA+ozb7D7wJ078adm4Aq1+qOYNf5xJiNyoVMyojGAPVTLt6EO+tH9AhlSybTqmZw4= diff --git a/devices/ci/CA6B65D9D4992516.bastion.0 b/devices/ci/CA6B65D9D4992516.bastion.0 new file mode 100644 index 0000000..bc24dff --- /dev/null +++ b/devices/ci/CA6B65D9D4992516.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +CA6B65D9D4992516 +0 +ea8a7b22bb1a6420464bab7a01f768f120cf237bb399b46d0973109059175264 + +— AW-ID-Attestation-CA6B65D9D4992516 frjTaSoZusCJcy7VCQINdC9TGtMfpuryfMe/7bpqUMrkBy6I9IF1pv7xiNvAHwKoMjtDxI2PHvU4+aLjCX/ER8kgBAo= diff --git a/devices/ci/CA6B65D9D4992516.pub b/devices/ci/CA6B65D9D4992516.pub new file mode 100644 index 0000000..b4cbdf0 --- /dev/null +++ b/devices/ci/CA6B65D9D4992516.pub @@ -0,0 +1 @@ +AW-ID-Attestation-CA6B65D9D4992516+7eb8d369+ATWcbyKw4qQ+8s7WPwdaDpSB3RlDFw9Ja+d48z5Qsjx2 diff --git a/devices/ci/CA6B65D9D4992516.witness.0 b/devices/ci/CA6B65D9D4992516.witness.0 new file mode 100644 index 0000000..a4092d1 --- /dev/null +++ b/devices/ci/CA6B65D9D4992516.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +CA6B65D9D4992516 +0 +ArmoredWitness-wispy-snow+834b82b1+ASho7B13t7PhXoLr43ppVFCHEpTSajIybNRYMSi8XR1Q + +— AW-ID-Attestation-CA6B65D9D4992516 frjTabuAin+geejJ3AShNmeyaivFrv7J8hL+eNqJkp2YgZGQ5jZStLLTWUl/orretpYtWg5pgcgzJF2lLRIqR/bpDAg= diff --git a/devices/devices.go b/devices/devices.go new file mode 100644 index 0000000..a0d531d --- /dev/null +++ b/devices/devices.go @@ -0,0 +1,132 @@ +package devices + +import ( + "embed" + "errors" + "fmt" + "io/fs" + "log" + "strings" + + "golang.org/x/mod/sumdb/note" +) + +const ( + AttestWitnessID = "ArmoredWitness ID attestation v1" + AttestBastionID = "ArmoredWitness BastionID attestation v1" +) + +var ( + //go:embed ci/* + ci embed.FS + //go:embed prod/* + prod embed.FS + + CI map[string]Device + Prod map[string]Device +) + +func init() { + var err error + if CI, err = parseFS(ci); err != nil { + panic(err) + } + if Prod, err = parseFS(prod); err != nil { + panic(err) + } +} + +// Device represents an ArmoredWitness device and its various attested identities. +type Device struct { + ID string + BastionID string + WitnessPubkey string +} + +type entry struct { + pubKey string + attestations [][]byte +} + +func parseFS(f embed.FS) (map[string]Device, error) { + entries := make(map[string]entry) + errs := []error{} + err := fs.WalkDir(f, ".", func(path string, d fs.DirEntry, _ error) error { + if d.IsDir() { + return nil + } + + n := d.Name() + parts := strings.SplitN(n, ".", 2) + if len(parts) != 2 { + errs = append(errs, fmt.Errorf("badly named file %q", n)) + return nil + } + body, err := f.ReadFile(path) + if err != nil { + errs = append(errs, fmt.Errorf("failed to read %q: %v", n, err)) + return nil + } + e := entries[parts[0]] + if parts[1] == "pub" { + e.pubKey = string(body) + + } else { + e.attestations = append(e.attestations, body) + } + + entries[parts[0]] = e + return nil + }) + if err != nil { + return nil, err + } + + r := make(map[string]Device) + for _, v := range entries { + d, err := new(v.pubKey, v.attestations) + if err != nil { + errs = append(errs, err) + continue + } + r[d.ID] = *d + } + if len(errs) > 0 { + return nil, errors.Join(errs...) + } + return r, nil +} + +func new(attestPub string, attestations [][]byte) (*Device, error) { + v, err := note.NewVerifier(attestPub) + if err != nil { + return nil, fmt.Errorf("%s: %v", attestPub, err) + } + + d := &Device{ID: v.Name()} + + for _, a := range attestations { + n, err := note.Open(a, note.VerifierList(v)) + if err != nil { + return nil, fmt.Errorf("couldn't open %q: %v", a, err) + + } + lines := strings.Split(n.Text, "\n") + switch lines[0] { + case AttestWitnessID: + if len(lines) < 4 { + return nil, fmt.Errorf("%s: invalid ID attestation", v.Name()) + } + d.WitnessPubkey = lines[3] + case AttestBastionID: + if len(lines) < 4 { + log.Printf("%q", n.Text) + return nil, fmt.Errorf("%s: invalid bastion attestation (%d)", v.Name(), len(lines)) + } + d.BastionID = lines[3] + default: + continue + } + } + return d, nil +} diff --git a/devices/devices_test.go b/devices/devices_test.go new file mode 100644 index 0000000..4af9aa4 --- /dev/null +++ b/devices/devices_test.go @@ -0,0 +1,32 @@ +package devices + +import ( + "testing" +) + +func checkDevices(t *testing.T, d map[string]Device) { + t.Helper() + for k, v := range d { + t.Logf("Checking %v", k) + if v.ID == "" { + t.Errorf("%s: Empty ID", v.ID) + } + if k != v.ID { + t.Errorf("%s: ID mismatch: %v", k, v.ID) + } + if v.BastionID == "" { + t.Logf("%s: Warning, no BastionID present", k) + } + if v.WitnessPubkey == "" { + t.Errorf("%s: no witness pubkey present", k) + } + } +} + +func TestCIFiles(t *testing.T) { + checkDevices(t, CI) +} + +func TestProdFiles(t *testing.T) { + checkDevices(t, Prod) +} diff --git a/devices/prod/720A9DEAD4391341.bastion.0 b/devices/prod/720A9DEAD4391341.bastion.0 new file mode 100644 index 0000000..3c09fca --- /dev/null +++ b/devices/prod/720A9DEAD4391341.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4391341 +0 +c664d70dc8cd2cbe40469224c66dd705d6eb67615c406b61a2579966127d0c7e + +— AW-ID-Attestation-720A9DEAD4391341 hOrmIu4XcnE6jIUw+L+f2mu/yUQzfUbGhPSCo8dZBD1B5tUddAAXRLejdmSVZNVBFTlwz0jVwnIZ4rHV+VVqKsWqoAg= diff --git a/devices/prod/720A9DEAD4391341.pub b/devices/prod/720A9DEAD4391341.pub new file mode 100644 index 0000000..c9abf25 --- /dev/null +++ b/devices/prod/720A9DEAD4391341.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4391341+84eae622+AVLSeDbG2T7RfgR2vHHC6aq4XhOWHY/hBkZUQWm+tIFK diff --git a/devices/prod/720A9DEAD4391341.witness.0 b/devices/prod/720A9DEAD4391341.witness.0 new file mode 100644 index 0000000..8385761 --- /dev/null +++ b/devices/prod/720A9DEAD4391341.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4391341 +0 +ArmoredWitness-weathered-rain+ea3d386d+AWLblKp5JuiyrgRh6ev2nNJ5XAd+sc/mM2D2HW/b4d5S + +— AW-ID-Attestation-720A9DEAD4391341 hOrmIm8IGhDrnCh4lLaavKD4x95IaDVauhIlF5ccDSXJvQAbVd2j1oZLoYrz2OmqGCgwMEStZUUlLjKzWrighEFcSgk= diff --git a/devices/prod/720A9DEAD4391509.bastion.0 b/devices/prod/720A9DEAD4391509.bastion.0 new file mode 100644 index 0000000..2dd9390 --- /dev/null +++ b/devices/prod/720A9DEAD4391509.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4391509 +0 +395c4b740cfbb722a66cbb1790bb9e70100e35518c8101b3dacf579765e4d220 + +— AW-ID-Attestation-720A9DEAD4391509 ALzFbKBPm1aHu2HqXzAnhLJH/01xHZn3J+TuJ6ZvMpvDqCK5ARYP2AgKSOeCjNY6YqjIkccwdE/IcvENvNL6qoVMAA4= diff --git a/devices/prod/720A9DEAD4391509.pub b/devices/prod/720A9DEAD4391509.pub new file mode 100644 index 0000000..3a71a7f --- /dev/null +++ b/devices/prod/720A9DEAD4391509.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4391509+00bcc56c+AZyGm+7xCplZpYIqJZQACgEazyMhCkIF6PfAG8hrFmiB diff --git a/devices/prod/720A9DEAD4391509.witness.0 b/devices/prod/720A9DEAD4391509.witness.0 new file mode 100644 index 0000000..a4353ba --- /dev/null +++ b/devices/prod/720A9DEAD4391509.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4391509 +0 +ArmoredWitness-wispy-wood+90626287+AUVvZZ4LDvpljjooleJ3WnxnVK4J1YQiQbtgPWSVFwaP + +— AW-ID-Attestation-720A9DEAD4391509 ALzFbOpnWaaHImNvFUZuEiQwFWa9tJFcyqtFTsmB2zLniT3onPs43XWUTJidTq8DS7qqTmfWk2IHZTTD6sJ2WbGmHwU= diff --git a/devices/prod/720A9DEAD4391737.bastion.0 b/devices/prod/720A9DEAD4391737.bastion.0 new file mode 100644 index 0000000..dcf74af --- /dev/null +++ b/devices/prod/720A9DEAD4391737.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4391737 +0 +2867895f07dfc47299cf7d2ced88ed5230a822a7f62d54f8402d6daf11520131 + +— AW-ID-Attestation-720A9DEAD4391737 LwCAcXIiJinSPvqCOqODTY6L1w9krYI0MHgzkt2ccTbeYZ1bFUVj8Rg5ZDNaKAv3DqzcC64jrB3pqswNQAV/PsSs0wM= diff --git a/devices/prod/720A9DEAD4391737.pub b/devices/prod/720A9DEAD4391737.pub new file mode 100644 index 0000000..d007172 --- /dev/null +++ b/devices/prod/720A9DEAD4391737.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4391737+2f008071+ARa8g49Anj+op8IBReuNLXJtkjGoB2WzOb5ytUaOEheH diff --git a/devices/prod/720A9DEAD4391737.witness.0 b/devices/prod/720A9DEAD4391737.witness.0 new file mode 100644 index 0000000..3e8a79f --- /dev/null +++ b/devices/prod/720A9DEAD4391737.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4391737 +0 +ArmoredWitness-small-breeze+7b3ada3a+AQAWYpUjfGGPQiWOgt6sLWap0P9rVOe+Ofu2uNZbO4FD + +— AW-ID-Attestation-720A9DEAD4391737 LwCAcSPENAsE+KSQpeGr9Z/N3vWgeE5h7LWQLy0BDWQJj2LHZOin8Tz79a3fymhHFXPjXoDfJxZrmbbs8xARmUGm1w4= diff --git a/devices/prod/720A9DEAD4391942.pub b/devices/prod/720A9DEAD4391942.pub new file mode 100644 index 0000000..a1f0f96 --- /dev/null +++ b/devices/prod/720A9DEAD4391942.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4391942+224191fa+AaO1Uam79GmXzbYKTRfUm+MYfh8JL0DOCX/qdL8T4cpu diff --git a/devices/prod/720A9DEAD4391942.witness.0 b/devices/prod/720A9DEAD4391942.witness.0 new file mode 100644 index 0000000..77a3846 --- /dev/null +++ b/devices/prod/720A9DEAD4391942.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4391942 +0 +ArmoredWitness-quiet-wood+6a554a5d+AZtxeZvnMbFf6bVPN81vIvlJnT4zCdq8tYi/guI0hEkT + +— AW-ID-Attestation-720A9DEAD4391942 IkGR+kxNsS+pl1UOHgYRw/ExADwlfWwDktcH6FdN0pgamL47quEZSXQvCrs1EUNBQatittsOwCZ5l0ELztP203OfKAA= diff --git a/devices/prod/720A9DEAD4391E28.pub b/devices/prod/720A9DEAD4391E28.pub new file mode 100644 index 0000000..daddce4 --- /dev/null +++ b/devices/prod/720A9DEAD4391E28.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4391E28+91734bf6+AdmR700zfCueXABsCLLW7Ftt4QzMdvzd1CISVOJRr9of diff --git a/devices/prod/720A9DEAD4391E28.witness.0 b/devices/prod/720A9DEAD4391E28.witness.0 new file mode 100644 index 0000000..7e8165d --- /dev/null +++ b/devices/prod/720A9DEAD4391E28.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4391E28 +0 +ArmoredWitness-morning-darkness+2a654a97+AXugA2VGdDmLYt1wqzaaP3UKSGcDVNZveRJYJ1FKC5+9 + +— AW-ID-Attestation-720A9DEAD4391E28 kXNL9t/eFmMpUHOm3Ss8KWupXmKuR+unKL3KDlNqpN7H1HMM2yKSZjbexmsCk11NVcYLGdytNT3F/C1IhGQVZzsNOQo= diff --git a/devices/prod/720A9DEAD4392019.bastion.0 b/devices/prod/720A9DEAD4392019.bastion.0 new file mode 100644 index 0000000..8319f56 --- /dev/null +++ b/devices/prod/720A9DEAD4392019.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4392019 +0 +92c1c586ab85db6af4c27fc714c49a080366eb5e4d7f5b696eadb7e845e78362 + +— AW-ID-Attestation-720A9DEAD4392019 QxDCB3NG4KSA44JoKeBoIgtD0AfETeV8x/2hnwwjMkfmdHpuuBmAzfpsqAKdPRC1cH6QfIm30zoOa8Q4QNk4Om2zcQo= diff --git a/devices/prod/720A9DEAD4392019.pub b/devices/prod/720A9DEAD4392019.pub new file mode 100644 index 0000000..c594395 --- /dev/null +++ b/devices/prod/720A9DEAD4392019.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4392019+4310c207+AbtF3hnI4vMN0MhN5bi4NsNdtEYEwMZP8a2kTbCxatub diff --git a/devices/prod/720A9DEAD4392019.witness.0 b/devices/prod/720A9DEAD4392019.witness.0 new file mode 100644 index 0000000..d78abed --- /dev/null +++ b/devices/prod/720A9DEAD4392019.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4392019 +0 +ArmoredWitness-shy-wind+e76ed9ec+ARmL7SaHvPYPwkbq41g/KpdkKH7OZaoaqfK2sEoWKL4d + +— AW-ID-Attestation-720A9DEAD4392019 QxDCB7btq8RNb99Hce2t8DlapELVXu1Iv20UZVItsCu/PY+T9WOhr+H3UlchBjs8JmFJGTWJna/fw04ZnPTEz6bc0QA= diff --git a/devices/prod/720A9DEAD4392030.bastion.0 b/devices/prod/720A9DEAD4392030.bastion.0 new file mode 100644 index 0000000..77a76e1 --- /dev/null +++ b/devices/prod/720A9DEAD4392030.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4392030 +0 +b6d4eee9d6165e01a756bd4590ab29bc34265e2e83b580f54a19f4a458778cbc + +— AW-ID-Attestation-720A9DEAD4392030 8vMhNQ/6Xq8mDEGmtmSC0LyHWXfktbpmuaKnDnBrT+LuuFuK9YMp3eEDCyFCVv1Kg/BHxsr0voUAFSFtOHPSeo2QHwo= diff --git a/devices/prod/720A9DEAD4392030.pub b/devices/prod/720A9DEAD4392030.pub new file mode 100644 index 0000000..548eaa9 --- /dev/null +++ b/devices/prod/720A9DEAD4392030.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4392030+f2f32135+AWxEblgSRKUgSPXC8NQn68+v9UxA6sfqX+MwKqSwMLps diff --git a/devices/prod/720A9DEAD4392030.witness.0 b/devices/prod/720A9DEAD4392030.witness.0 new file mode 100644 index 0000000..f72f68d --- /dev/null +++ b/devices/prod/720A9DEAD4392030.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4392030 +0 +ArmoredWitness-hidden-river+45a41ba7+AdrpNMfMH0W6iYo9/hJl1JKmxYQF3ewUP8FvhKD1iOOl + +— AW-ID-Attestation-720A9DEAD4392030 8vMhNUA586o1pZ7ZqalEGIGp0F/s3HjcRmsavwvFjdPVGviZmNCxvuNPdP/h2orTzUwAT18fh5wX6qRivMAY7pztOwk= diff --git a/devices/prod/720A9DEAD439211E.bastion.0 b/devices/prod/720A9DEAD439211E.bastion.0 new file mode 100644 index 0000000..b190bfe --- /dev/null +++ b/devices/prod/720A9DEAD439211E.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD439211E +0 +9e18b190f219d9a9d3032d8b00807aa0c014948fb324d543057d82afa00ad15c + +— AW-ID-Attestation-720A9DEAD439211E fojp1OboK4pY0l8OgWao2l/onkwW26yhW1j/PxCQJT+jlXvJY44TEvgKtbRg/kQxJwD9h85v53HshkEB80JCZVi5jwk= diff --git a/devices/prod/720A9DEAD439211E.pub b/devices/prod/720A9DEAD439211E.pub new file mode 100644 index 0000000..4515260 --- /dev/null +++ b/devices/prod/720A9DEAD439211E.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD439211E+7e88e9d4+AWbFAVmG+o+jZfVN0DMQCTlpfiHNLH2iVMUyMcN7udRp diff --git a/devices/prod/720A9DEAD439211E.witness.0 b/devices/prod/720A9DEAD439211E.witness.0 new file mode 100644 index 0000000..599ec61 --- /dev/null +++ b/devices/prod/720A9DEAD439211E.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD439211E +0 +ArmoredWitness-autumn-wood+863571a5+AesIVCbad7gbU07JnA6YfZD0qg4B1c8xF4ISdnt9vjip + +— AW-ID-Attestation-720A9DEAD439211E fojp1B7d3fmjxvNvqVb4pDGKL3THIPvqp5poXA4jwu0DNHtu/XZsvfxcHVUwROMJFd+cXG0kgKSr0g/IPgtJjlERswU= diff --git a/devices/prod/720A9DEAD439221F.bastion.0 b/devices/prod/720A9DEAD439221F.bastion.0 new file mode 100644 index 0000000..475be62 --- /dev/null +++ b/devices/prod/720A9DEAD439221F.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD439221F +0 +6365b85463db655dd4e224bdffa3dfd49fd49c9588b800718b4483799c324f5b + +— AW-ID-Attestation-720A9DEAD439221F Nc3+sIuL6QFAxambNRlTYa5KNwKc2M+37mQaujaF//60sDEWiuFsOqJhAjgaYNTvdq4eu38K9MKkMaSwiUOrB3CKvAM= diff --git a/devices/prod/720A9DEAD439221F.pub b/devices/prod/720A9DEAD439221F.pub new file mode 100644 index 0000000..884eb36 --- /dev/null +++ b/devices/prod/720A9DEAD439221F.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD439221F+35cdfeb0+Ad/M/QF535GZOYPq5alDhVGCUAiKf+dVGn5USlwz/1FK diff --git a/devices/prod/720A9DEAD439221F.witness.0 b/devices/prod/720A9DEAD439221F.witness.0 new file mode 100644 index 0000000..8c5a5e0 --- /dev/null +++ b/devices/prod/720A9DEAD439221F.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD439221F +0 +ArmoredWitness-snowy-sound+c701f2ec+AQuFudRsy9HPp4oZsE+PxDWVODkMnYJnXonSQzIXqq1Q + +— AW-ID-Attestation-720A9DEAD439221F Nc3+sKBG0JBbqniMQugpGuKG/NSDl6GqJW9hbizqLTj2cgOaN1gJV5tCD/f/NgERtyXHQAwHyZ9+Or8FLTIN9UpmzwU= diff --git a/devices/prod/720A9DEAD439231E.bastion.0 b/devices/prod/720A9DEAD439231E.bastion.0 new file mode 100644 index 0000000..0d9e1ac --- /dev/null +++ b/devices/prod/720A9DEAD439231E.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD439231E +0 +c77fe626a6b4d53738a9a37920095ee205eb48d1717c19092c4c25efe2f2cc50 + +— AW-ID-Attestation-720A9DEAD439231E 9iFmvYTcv23WBi4YL29cabH3xhzI+7JKpD3eVK41bR/XGa6vMEmbpxb0yiqsyS53XApHLkzEZfbKIgCfI8GDfTEOyQ8= diff --git a/devices/prod/720A9DEAD439231E.pub b/devices/prod/720A9DEAD439231E.pub new file mode 100644 index 0000000..29432fd --- /dev/null +++ b/devices/prod/720A9DEAD439231E.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD439231E+f62166bd+ATAVhEr6GqYzPuU0CBN8xXW+CZ45gj0HmNjcHzttbn2k diff --git a/devices/prod/720A9DEAD439231E.witness.0 b/devices/prod/720A9DEAD439231E.witness.0 new file mode 100644 index 0000000..fda6b61 --- /dev/null +++ b/devices/prod/720A9DEAD439231E.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD439231E +0 +ArmoredWitness-throbbing-bird+13664818+AZgUml1zmzuqd3Eo9hdTHOi2VNJFAqfhUSRMxbdZdme8 + +— AW-ID-Attestation-720A9DEAD439231E 9iFmvTWlK+JQmXZidzBSAieRoxOkqhZSCrECigvwL21zBEqzBCpCQv1qTxeBTR+2PMxHwVkYGWqIpdQt52mn3wCWwAQ= diff --git a/devices/prod/720A9DEAD4392803.bastion.0 b/devices/prod/720A9DEAD4392803.bastion.0 new file mode 100644 index 0000000..1b02131 --- /dev/null +++ b/devices/prod/720A9DEAD4392803.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4392803 +0 +989bb3b71551f35503b2a89798959f1a5d6e4cad2699133b2b49e54bc2a4fa68 + +— AW-ID-Attestation-720A9DEAD4392803 0+H3GYIsb+GWFPFVyXALjXnif51uSYy9VIZ6rKl945RFtOZw4LQb22wkaeYmfsPrFpMDMqjdcyFQhD3WnwMl+RqwUQA= diff --git a/devices/prod/720A9DEAD4392803.pub b/devices/prod/720A9DEAD4392803.pub new file mode 100644 index 0000000..7aea94a --- /dev/null +++ b/devices/prod/720A9DEAD4392803.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4392803+d3e1f719+Ab7lsoclqMPQmGYUu7mxHPNWxUFji/rLXd1PR2d7m7DF diff --git a/devices/prod/720A9DEAD4392803.witness.0 b/devices/prod/720A9DEAD4392803.witness.0 new file mode 100644 index 0000000..67b2410 --- /dev/null +++ b/devices/prod/720A9DEAD4392803.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4392803 +0 +ArmoredWitness-rough-wind+ded3ae66+Aeoxk0r7hjKVjeL7N92b+ruNx5Yd6memrkxX8aHKJu73 + +— AW-ID-Attestation-720A9DEAD4392803 0+H3GW+dvvpvbu7amT0dH372l8cONJuQDp0Z4E5zPbPUc+ZnXkr+H4EP4EYeM8LzNJLoSBjvgWCfWsZvWNbYR+coPgs= diff --git a/devices/prod/720A9DEAD4392806.bastion.0 b/devices/prod/720A9DEAD4392806.bastion.0 new file mode 100644 index 0000000..cf24228 --- /dev/null +++ b/devices/prod/720A9DEAD4392806.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4392806 +0 +ff7a3001c5895b13144b68a421e13513d94c40b151e0e22d56fcceb14f802c18 + +— AW-ID-Attestation-720A9DEAD4392806 UIlUHY1WMhgGLciO8x+7PKp8JptEtKbhM5r+7c4zJjahuomBin5OFlpt37cBwN0hU17Owl4uQZbrEc+ivKLlNO8HIw4= diff --git a/devices/prod/720A9DEAD4392806.pub b/devices/prod/720A9DEAD4392806.pub new file mode 100644 index 0000000..62cf0a1 --- /dev/null +++ b/devices/prod/720A9DEAD4392806.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4392806+5089541d+ASsurZbKo6ZzdpnypKtmF95kCAtUHHL0Iv6DtHncGmY6 diff --git a/devices/prod/720A9DEAD4392806.witness.0 b/devices/prod/720A9DEAD4392806.witness.0 new file mode 100644 index 0000000..4d4fc3f --- /dev/null +++ b/devices/prod/720A9DEAD4392806.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4392806 +0 +ArmoredWitness-dry-sunset+ae83a8fa+AQPzi+erfxCBvjk6nmndWU2aGEoO7zawoatven8Fvv/D + +— AW-ID-Attestation-720A9DEAD4392806 UIlUHVhb2EJwnoHrHc51dhILXmwZwJQa/L3wb/M7/Xo7P6TvIVgyFSKX8+ppG+EnlA7nHDV4geUa4afvr+uWzGnYnAE= diff --git a/devices/prod/720A9DEAD439282C.bastion.0 b/devices/prod/720A9DEAD439282C.bastion.0 new file mode 100644 index 0000000..b1656e9 --- /dev/null +++ b/devices/prod/720A9DEAD439282C.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD439282C +0 +2777010fe71082f771ac21d700bd9f2ea55b5d8520d329a67867edcdb61e2fc2 + +— AW-ID-Attestation-720A9DEAD439282C tKLws/8+ANSLLMqzo0i5gz4sV+5dV9SKHum8q5r0ZnUrCRk6gTjx8lnY4iEme5VKnJZYAGGNE/QrQ8vUSrl073HkfQI= diff --git a/devices/prod/720A9DEAD439282C.pub b/devices/prod/720A9DEAD439282C.pub new file mode 100644 index 0000000..cfaf975 --- /dev/null +++ b/devices/prod/720A9DEAD439282C.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD439282C+b4a2f0b3+AWW66nUU/D23CeQIVDXtanEcru64PTB8c6dwuUYJzrkp diff --git a/devices/prod/720A9DEAD439282C.witness.0 b/devices/prod/720A9DEAD439282C.witness.0 new file mode 100644 index 0000000..e53de7a --- /dev/null +++ b/devices/prod/720A9DEAD439282C.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD439282C +0 +ArmoredWitness-nameless-firefly+1a0b2617+AQdRiZgMwTiPqGhsdDICiBLeMYLiV+IZRj988o1J1XPd + +— AW-ID-Attestation-720A9DEAD439282C tKLws4yssBeHOG6uCpPNHlgcR5hW8JkB73FgtuipBWTn/KCq6so0vRm72eEsfShgouEFa4t0gRpwZ+gx/lxEYZsXoAs= diff --git a/devices/prod/720A9DEAD4413E39.bastion.0 b/devices/prod/720A9DEAD4413E39.bastion.0 new file mode 100644 index 0000000..0bf230a --- /dev/null +++ b/devices/prod/720A9DEAD4413E39.bastion.0 @@ -0,0 +1,6 @@ +ArmoredWitness BastionID attestation v1 +720A9DEAD4413E39 +0 +478f82d5b9a76aa5b907f5ef52bd5a3b8f5e12353ef01ae16e9aa0d74979b9db + +— AW-ID-Attestation-720A9DEAD4413E39 I6SlY3iELXXAe8yS6qk04eIWbhN7JkxjpzBf1ZIUgxzRoeJdEXzAEC04vWL55UQfWb61ZebGmq3XAqPwIA64rRlQzgo= diff --git a/devices/prod/720A9DEAD4413E39.pub b/devices/prod/720A9DEAD4413E39.pub new file mode 100644 index 0000000..ed5a473 --- /dev/null +++ b/devices/prod/720A9DEAD4413E39.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4413E39+23a4a563+AT2M5+Bh7ZljGaXVdGyn/4n/PZpS1tTUWJBR1Lw8jinK diff --git a/devices/prod/720A9DEAD4413E39.witness.0 b/devices/prod/720A9DEAD4413E39.witness.0 new file mode 100644 index 0000000..198e544 --- /dev/null +++ b/devices/prod/720A9DEAD4413E39.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4413E39 +0 +ArmoredWitness-floral-sky+504ec40f+AekCmTmKTTnQMNqIigkj7PFnhogawSJD23PJ8M8qLYDm + +— AW-ID-Attestation-720A9DEAD4413E39 I6SlY/2LCOyqB2Rx4n13wrZRBqfRoHESgjNrqKiiL+eb0a9QEd+7y4SXFnfEG05Ln9YZfk6O/AXvzrkNGure9ly/jwA= diff --git a/devices/prod/720A9DEAD441410E.pub b/devices/prod/720A9DEAD441410E.pub new file mode 100644 index 0000000..ff911a2 --- /dev/null +++ b/devices/prod/720A9DEAD441410E.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD441410E+d01a0ced+AYyGV09MJ29TfGWBQFDAOtyPpM63eCWMzR7F1I25ls3l diff --git a/devices/prod/720A9DEAD441410E.witness.0 b/devices/prod/720A9DEAD441410E.witness.0 new file mode 100644 index 0000000..b2b600a --- /dev/null +++ b/devices/prod/720A9DEAD441410E.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD441410E +0 +ArmoredWitness-empty-dew+a41da7ec+AU3wwt3KIuMi4FAxxT2/4BJmvTrYE1FX9Op3n7MzEY8J + +— AW-ID-Attestation-720A9DEAD441410E 0BoM7ZOXYbWiCC/eQrw7DH7tXFweI+bJIhXp4NoL8Zl67CjIQiU2i6mOBwMpH0z2mcx3Ptp/ZFTdOGNz6hr+ykds9AI= diff --git a/devices/removed/720A9DEAD4413740.pub b/devices/removed/720A9DEAD4413740.pub new file mode 100644 index 0000000..6d13998 --- /dev/null +++ b/devices/removed/720A9DEAD4413740.pub @@ -0,0 +1 @@ +AW-ID-Attestation-720A9DEAD4413740+8713f705+ASLTOfI7y469IuU5O0c44oO9k32Lg+EeKTDCxCglD77v diff --git a/devices/removed/720A9DEAD4413740.witness.0 b/devices/removed/720A9DEAD4413740.witness.0 new file mode 100644 index 0000000..a650727 --- /dev/null +++ b/devices/removed/720A9DEAD4413740.witness.0 @@ -0,0 +1,6 @@ +ArmoredWitness ID attestation v1 +720A9DEAD4413740 +0 +ArmoredWitness-icy-sun+7bb3d795+AflD2IuT6uOo8vzXcY2e088bmm9hjzPVmHHVrDhfmxHF + +— AW-ID-Attestation-720A9DEAD4413740 hxP3BYLxS3BRHo20Tmk23ID4cDdRrrbYoZn8sVfmTGJ81/7ChVxOtM/Xgs+sBeSKUMI9gMf2Aaa3vHZVg7+ZEvtyeAY=