// Load decrypts the snapshot data (if a decrypter is exists) after reading it using the // wrapped snap.Snapshotter's Load function. func (s *wrappedSnap) Load() (*raftpb.Snapshot, error) { snapshot, err := s.Snapshotter.Load() if err != nil { return nil, err } snapshot.Data, err = encryption.Decrypt(snapshot.Data, s.decrypter) if err != nil { return nil, err } return snapshot, nil }
// ReadAll wraps the wal.WAL.ReadAll() function, but it first checks to see if the // metadata indicates that the entries are encryptd, and if so, decrypts them. func (w *wrappedWAL) ReadAll() ([]byte, raftpb.HardState, []raftpb.Entry, error) { metadata, state, ents, err := w.WAL.ReadAll() if err != nil { return metadata, state, ents, err } for i, ent := range ents { ents[i].Data, err = encryption.Decrypt(ent.Data, w.decrypter) if err != nil { return nil, raftpb.HardState{}, nil, err } } return metadata, state, ents, nil }
func decodePEMHeaderValue(headerValue string, kek []byte) ([]byte, error) { var decrypter encryption.Decrypter = encryption.NoopCrypter if kek != nil { _, decrypter = encryption.Defaults(kek) } valueBytes, err := base64.StdEncoding.DecodeString(headerValue) if err != nil { return nil, err } result, err := encryption.Decrypt(valueBytes, decrypter) if err != nil { return nil, ca.ErrInvalidKEK{Wrapped: err} } return result, nil }