code: func GenerateKeypair(ctx context.Context, c *cli.Context) error {
  	if err := initCrypto(); err != nil {
  		return action.ExitError(ctx, action.ExitUnknown, err, "failed to init XC")
  	}
  
  	name := c.String("name")
  	email := c.String("email")
  	pw := c.String("passphrase")
  
  	if name == "" {
  		var err error
  		name, err = termio.AskForString(ctx, "What is your full name?", "")
  		if err != nil || name == "" {
  			return action.ExitError(ctx, action.ExitNoName, err, "please provide a name")
  		}
  	}
  	if email == "" {
  		var err error
  		email, err = termio.AskForString(ctx, "What is your email?", "")
  		if err != nil || email == "" {
  			return action.ExitError(ctx, action.ExitNoName, err, "please provide an email")
  		}
  	}
  	if pw == "" {
  		var err error
  		pw, err = termio.AskForPassword(ctx, "")
  		if err != nil || pw == "" {
  			return action.ExitError(ctx, action.ExitIO, err, "failed to ask for password: %s", err)
  		}
  	}
  
  	if err := crypto.CreatePrivateKeyBatch(ctx, name, email, pw); err != nil {
  		return action.ExitError(ctx, action.ExitUnknown, err, "failed to create private key: %s", err)
  	}
  	return nil
  }
docs: // GenerateKeypair generates a new XC keypair