- make tearoff_delay_us and tearoff_enabled globals
- use tearoff_hook and remove Dbprintf in critical tearoff timing
- move initial write from MifareU_Otp_Tearoff to CmdHF14AMfuOtpTearoff and make it optional (old behavior was writing initial 00000000 when -d was not provided)
- tearoff: compare with initial write, not with previous tearoff outcome
- rephrase some messages
- track all begin and end of erase and write phases, with quite complex logic to cover multiple cases (starting in middle of erased phase, starting with write 0, ...) and report them
- check against initial write error
- repeat same timing (up to 10x) in case of write/read errors then quit
- typos
Both `hf mfdes auth` and `hf mfdes chk` now support Key Diversification for
AN10922 and as special treat, Gallagher issued cards.
For `hf mfdes auth`:
```
-d, --kdf <kdf> Key Derivation Function (KDF) (0=None, 1=AN10922, 2=Gallagher)
-i, --kdfi <kdfi> KDF input (HEX 1-31 bytes)
```
And for `hf mfdes chk`:
```
-f, --kdf <kdf> Key Derivation Function (KDF) (0=None, 1=AN10922, Gallagher)
-i, --kdfi <kdfi> KDF input (HEX 1-31 bytes)
```
Examples:
- `hf mfdes auth -a 2081f4 -m 3 -t 4 -d 2 -n 2 -k 00112233445566778899aabbccddeeff`
Will diversify the key for key `2` on AID `2081F4` for Gallagher issued cards
- `hf mfdes chk -f 1 -i 00112233 -d mfdes_default_keys`
Will read in all the default keys from the dictionary, and diversify them
using AN10922 with the input data `00112233`
- `hf mfdes chk -f 2 -d mfdes_default_keys`
Will read in all the default keys from the dictionary, and diversify them
using AN10922 but with input data generated from the card's UID, AID and
key number.
This adds two new options to `hf mfdes auth`
```
-d, --kdf <kdf> Key Derivation Function (KDF) (0=None, 1=AN10922)
-i, --kdfi <kdfi> KDF input (HEX 1-31 bytes)
```
By specifying `-d 1` and some kdf data `-i 00112233`, the key will be
diversified using AN10922.