package auth import ( "encoding/hex" "strings" "testing" ) func TestSignSM2Authorization(t *testing.T) { const privHex = "8d6ee90b3c4d299ae5abd655dbc3547c110ae8aeff1de18b0df241f215f90748" sig, err := SignSM2Authorization(privHex, "1754460000:AbCdEfGh1234567890AbCdEfGh123456:{\"email\":\"a@b.c\"}") if err != nil { t.Fatalf("SignSM2Authorization: %v", err) } if len(sig) != 128 { t.Fatalf("signature length = %d, want 128 (r||s hex)", len(sig)) } if _, err := hex.DecodeString(sig); err != nil { t.Fatalf("signature is not hex: %v", err) } // Deterministic inputs must produce a stable signature across calls only if // the nonce is fixed; sm-crypto randomizes k, so just check shape + parse. if strings.TrimSpace(sig) != sig { t.Fatalf("signature contains whitespace") } } func TestSignSM2AuthorizationInvalidKey(t *testing.T) { if _, err := SignSM2Authorization("zz", "x"); err == nil { t.Fatal("expected error for invalid private key hex") } }