Validate Password on RPC CreateWallet Request (#9848)

Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
This commit is contained in:
Raul Jordan
2021-11-02 11:20:43 -04:00
committed by GitHub
parent 4c18d291f4
commit 2e45fada34
2 changed files with 29 additions and 0 deletions

View File

@@ -62,6 +62,9 @@ func (s *Server) CreateWallet(ctx context.Context, req *pb.CreateWalletRequest)
},
}, nil
}
if err := prompt.ValidatePasswordInput(req.WalletPassword); err != nil {
return nil, status.Errorf(codes.InvalidArgument, "Password too weak: %v", err)
}
if req.Keymanager == pb.KeymanagerKind_IMPORTED {
_, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
WalletCfg: &wallet.Config{

View File

@@ -80,6 +80,32 @@ func TestServer_CreateWallet_Imported(t *testing.T) {
require.NoError(t, err)
}
func TestServer_CreateWallet_Imported_PasswordTooWeak(t *testing.T) {
localWalletDir := setupWalletDir(t)
defaultWalletPath = localWalletDir
ctx := context.Background()
s := &Server{
walletInitializedFeed: new(event.Feed),
walletDir: defaultWalletPath,
}
req := &pb.CreateWalletRequest{
Keymanager: pb.KeymanagerKind_IMPORTED,
WalletPassword: "", // Weak password, empty string
}
// We delete the directory at defaultWalletPath as CreateWallet will return an error if it tries to create a wallet
// where a directory already exists
require.NoError(t, os.RemoveAll(defaultWalletPath))
_, err := s.CreateWallet(ctx, req)
require.ErrorContains(t, "Password too weak", err)
req = &pb.CreateWalletRequest{
Keymanager: pb.KeymanagerKind_IMPORTED,
WalletPassword: "a", // Weak password, too short
}
_, err = s.CreateWallet(ctx, req)
require.ErrorContains(t, "Password too weak", err)
}
func TestServer_RecoverWallet_Derived(t *testing.T) {
localWalletDir := setupWalletDir(t)
ctx := context.Background()