* Add `PepperGrinder` interface with methods: * `Encrypt(dest, plaintext []byte) ([]byte, error)` * `Decrypt(dest, ciphertext []byte) ([]byte, error)` * Add `PepperGrinderAesGcm` struct with fields: * `Key []byte` * `nonce []byte` - e.g. IV * Add `Peppers []PepperGrinder` field to `Config` struct * Add `PepperVersion int` field to `Credential` struct - index to `Config.Peppers` * Update pepper keys when updating hashes
PepperGrinderinterface with methods:Encrypt(dest, plaintext []byte) ([]byte, error)Decrypt(dest, ciphertext []byte) ([]byte, error)PepperGrinderAesGcmstruct with fields:Key []bytenonce []byte- e.g. IVPeppers []PepperGrinderfield toConfigstructPepperVersion intfield toCredentialstruct - index toConfig.Peppers