1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
// SPDX-FileCopyrightText: 2022 Tillitis AB <tillitis.se>
// SPDX-License-Identifier: BSD-2-Clause
package tkeyutil
import (
"bytes"
"fmt"
"io"
"os"
"golang.org/x/term"
)
func InputUSS() ([]byte, error) {
fmt.Printf("Enter phrase for the USS: ")
secret, err := term.ReadPassword(int(os.Stdin.Fd()))
if err != nil {
return nil, fmt.Errorf("ReadPassword: %w", err)
}
fmt.Printf("\nRepeat the phrase: ")
ussAgain, err := term.ReadPassword(int(os.Stdin.Fd()))
if err != nil {
return nil, fmt.Errorf("ReadPassword: %w", err)
}
fmt.Printf("\n")
if bytes.Compare(secret, ussAgain) != 0 {
return nil, fmt.Errorf("phrases did not match")
}
if len(secret) == 0 {
return nil, fmt.Errorf("no phrase entered")
}
return secret, nil
}
func ReadUSS(fileUSS string) ([]byte, error) {
var secret []byte
var err error
if fileUSS == "-" {
if secret, err = io.ReadAll(os.Stdin); err != nil {
return nil, fmt.Errorf("ReadAll: %w", err)
}
} else if secret, err = os.ReadFile(fileUSS); err != nil {
return nil, fmt.Errorf("ReadFile: %w", err)
}
return secret, nil
}
|