diff --git a/internal/testkit/testkit.go b/internal/testkit/testkit.go index 603fd15..ba03d50 100644 --- a/internal/testkit/testkit.go +++ b/internal/testkit/testkit.go @@ -90,6 +90,11 @@ func (f *TestFile) ArgsLine(args ...string) { f.TextLine(strings.Join(append([]string{"->"}, args...), " ")) } +func (f *TestFile) UnreadArgsLine() []string { + line := strings.TrimPrefix(f.UnreadLine(), "-> ") + return strings.Split(line, " ") +} + var b64 = base64.RawStdEncoding.EncodeToString func (f *TestFile) Body(body []byte) { @@ -160,6 +165,10 @@ func (f *TestFile) ScryptRecordPassphrase(passphrase string) { func (f *TestFile) ScryptNoRecordPassphrase(passphrase string, workFactor int) { salt := f.Rand(16) + f.ScryptNoRecordPassphraseWithSalt(passphrase, workFactor, salt) +} + +func (f *TestFile) ScryptNoRecordPassphraseWithSalt(passphrase string, workFactor int, salt []byte) { f.ArgsLine("scrypt", b64(salt), strconv.Itoa(workFactor)) key, err := scrypt.Key([]byte(passphrase), append([]byte("age-encryption.org/v1/scrypt"), salt...), 1< i.maxWorkFactor { return nil, fmt.Errorf("scrypt work factor too large: %v", logN) } - if logN <= 0 { + if logN <= 0 { // unreachable return nil, fmt.Errorf("invalid scrypt work factor: %v", logN) } salt = append([]byte(scryptLabel), salt...) k, err := scrypt.Key(i.password, salt, 1<