// Verifies consistency of a serialized HD address func ByteCheck(dbin []byte) error { // check proper length if len(dbin) != 82 { return errors.New("ByteCheck: Unexpected length") } // check for correct Public or Private Prefix vb := binary.BigEndian.Uint32(dbin[:4]) if vb != Public && vb != Private && vb != TestPublic && vb != TestPrivate { return errors.New("ByteCheck: Unexpected Prefix") } // if Public, check x coord is on curve if vb == Public || vb == TestPublic { var xy secp256k1.XY xy.ParsePubkey(dbin[45:78]) if !xy.IsValid() { return errors.New("ByteCheck: Invalid public key") } } return nil }