decryptPBE combines base64 decode + ASN1 PBE parse + decrypt into one call.
(encoded string, masterKey []byte)
| 23 | |
| 24 | // decryptPBE combines base64 decode + ASN1 PBE parse + decrypt into one call. |
| 25 | func decryptPBE(encoded string, masterKey []byte) ([]byte, error) { |
| 26 | raw, err := base64.StdEncoding.DecodeString(encoded) |
| 27 | if err != nil { |
| 28 | return nil, fmt.Errorf("base64 decode: %w", err) |
| 29 | } |
| 30 | pbe, err := crypto.NewASN1PBE(raw) |
| 31 | if err != nil { |
| 32 | return nil, fmt.Errorf("parse asn1 pbe: %w", err) |
| 33 | } |
| 34 | plaintext, err := pbe.Decrypt(masterKey) |
| 35 | if err != nil { |
| 36 | return nil, fmt.Errorf("decrypt: %w", err) |
| 37 | } |
| 38 | return plaintext, nil |
| 39 | } |
| 40 | |
| 41 | func extractPasswords(masterKey []byte, path string) ([]types.LoginEntry, error) { |
| 42 | data, err := os.ReadFile(path) |
no test coverage detected