From aeded3fb37f874555ce101a959dc52fcb0f10925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Sat, 24 Dec 2022 03:11:09 +0100 Subject: [PATCH] v0.0.53 --- cryptext/passHash.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/cryptext/passHash.go b/cryptext/passHash.go index 673c74d..379b2b8 100644 --- a/cryptext/passHash.go +++ b/cryptext/passHash.go @@ -245,6 +245,35 @@ func (ph PassHash) WithTOTP(totpSecret []byte) (PassHash, error) { return "", errors.New("unknown version") } +func (ph PassHash) Change(newPlainPass string) (PassHash, error) { + version, _, _, hastotp, totpsecret, valid := ph.Data() + if !valid { + return "", errors.New("invalid PassHash") + } + + if version == 0 { + return HashPasswordV0(newPlainPass) + } + + if version == 1 { + return HashPasswordV1(newPlainPass) + } + + if version == 2 { + return HashPasswordV2(newPlainPass) + } + + if version == 3 { + return HashPasswordV3(newPlainPass, langext.Conditional(hastotp, totpsecret, nil)) + } + + if version == 4 { + return HashPasswordV4(newPlainPass, langext.Conditional(hastotp, totpsecret, nil)) + } + + return "", errors.New("unknown version") +} + func (ph PassHash) String() string { return string(ph) }