code: func (ks *KeyStore) SignTxWithPassphrase(a accounts.Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error) {
  	_, key, err := ks.getDecryptedKey(a, passphrase)
  	if err != nil {
  		return nil, err
  	}
  	defer zeroKey(key.PrivateKey)
  
  	// Depending on the presence of the chain ID, sign with EIP155 or homestead
  	if chainID != nil {
  		return types.SignTx(tx, types.NewEIP155Signer(chainID), key.PrivateKey)
  	}
  	return types.SignTx(tx, types.HomesteadSigner{}, key.PrivateKey)
  }
docs: // SignTxWithPassphrase signs the transaction if the private key matching the
  // given address can be decrypted with the given passphrase.