Add bambu-nfc dump parse, Key-A HKDF, and spool merge.
Parse filanfc-dump/v1 zip/JSON, Bambu 1K images, and merge stickers by tray UID. dump and mifare packages stay importable for a later common library.
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
||||
package bambunfc
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestKeysAGolden11223344(t *testing.T) {
|
||||
t.Parallel()
|
||||
uid, err := hex.DecodeString("11223344")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
want := []string{
|
||||
"0729F3B2D37A", "2027210D85E7", "D77B2E7C92BC", "29126A53A2EE",
|
||||
"E49850F62778", "9A9128B882BD", "45F69B980786", "90DD67095D6B",
|
||||
"EB994746CD69", "B4AEB23473E3", "445E850D699C", "5C9BD5BD9FD7",
|
||||
"1062AFE9F5F5", "81EE5259CF6B", "0920CEEEE2BC", "BAF630CCBFD3",
|
||||
}
|
||||
got, err := KeysA(uid)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for i, w := range want {
|
||||
if h := hex.EncodeToString(got[i][:]); h != toLower(w) {
|
||||
t.Errorf("key[%d] = %s; want %s", i, h, toLower(w))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func toLower(s string) string {
|
||||
b := []byte(s)
|
||||
for i, c := range b {
|
||||
if c >= 'A' && c <= 'F' {
|
||||
b[i] = c + ('a' - 'A')
|
||||
}
|
||||
}
|
||||
return string(b)
|
||||
}
|
||||
|
||||
func TestKeysAEmpty(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := KeysA(nil)
|
||||
if !errors.Is(err, ErrUID) {
|
||||
t.Errorf("KeysA(nil) err = %v; want ErrUID", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user