Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.4.2 to 5.11.0. - [Release notes](https://github.com/go-git/go-git/releases) - [Commits](https://github.com/go-git/go-git/compare/v5.4.2...v5.11.0) --- updated-dependencies: - dependency-name: github.com/go-git/go-git/v5 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
27 lines
847 B
Go
Generated
27 lines
847 B
Go
Generated
package s2k
|
|
|
|
// Cache stores keys derived with s2k functions from one passphrase
|
|
// to avoid recomputation if multiple items are encrypted with
|
|
// the same parameters.
|
|
type Cache map[Params][]byte
|
|
|
|
// GetOrComputeDerivedKey tries to retrieve the key
|
|
// for the given s2k parameters from the cache.
|
|
// If there is no hit, it derives the key with the s2k function from the passphrase,
|
|
// updates the cache, and returns the key.
|
|
func (c *Cache) GetOrComputeDerivedKey(passphrase []byte, params *Params, expectedKeySize int) ([]byte, error) {
|
|
key, found := (*c)[*params]
|
|
if !found || len(key) != expectedKeySize {
|
|
var err error
|
|
derivedKey := make([]byte, expectedKeySize)
|
|
s2k, err := params.Function()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
s2k(derivedKey, passphrase)
|
|
(*c)[*params] = key
|
|
return derivedKey, nil
|
|
}
|
|
return key, nil
|
|
}
|