moonD4rk/HackBrowserData · error

engine kind %s is not exportable

Error message

engine kind %s is not exportable

What it means

kindToDump walks the dumpableKinds allowlist (Chromium, ChromiumYandex, ChromiumOpera) and the caller's BrowserKind is not in it, so no wire string can be produced. This guard fires when BuildDump is asked to serialize a vault whose engine kind the dump format simply does not cover — e.g. a Firefox vault reaching the Chromium-oriented dump path — not when the kind is merely unknown at parse time.

Source

Thrown at browser/keydump.go:187

func retrieversFromKeys(mk masterkey.MasterKeys) masterkey.Retrievers {
	return masterkey.Retrievers{
		V10: maybeStaticRetriever(mk.V10),
		V11: maybeStaticRetriever(mk.V11),
		V20: maybeStaticRetriever(mk.V20),
	}
}

// dumpableKinds are the engine kinds a vault may carry; kindToDump/kindFromDump translate to and from
// the wire form via BrowserKind.String(), keeping the vocabulary single-sourced in the types enum.
var dumpableKinds = []types.BrowserKind{types.Chromium, types.ChromiumYandex, types.ChromiumOpera}

func kindToDump(k types.BrowserKind) (string, error) {
	for _, dk := range dumpableKinds {
		if k == dk {
			return k.String(), nil
		}
	}
	return "", fmt.Errorf("engine kind %s is not exportable", k)
}

func kindFromDump(s string) (types.BrowserKind, error) {
	for _, k := range dumpableKinds {
		if k.String() == s {
			return k, nil
		}
	}
	return 0, fmt.Errorf("unknown engine kind %q", s)
}

View on GitHub (pinned to 0503d04d7a)

Solutions

  1. Filter vaults to dumpableKinds before calling BuildDump
  2. Extend dumpableKinds and the wire vocabulary if the new kind must be exportable
  3. Fix upstream filtering that let a non-Chromium browser kind reach kindToDump
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at browser/keydump.go:187 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of moonD4rk/HackBrowserData@0503d04d7a (2026-09-06). Data as JSON: /api/errors/d400708aaa116018. Report an issue: GitHub.