Voting in uncontrolled environments, such as the Internet comes with a price, the price of having to trust in uncontrolled machines the collection of voter’s vote. An uncontrolled machine, e.g. the voter’s PC, may be infected with a virus or other malicious program that may try to change the voter’s vote without her knowledge. Here we present CodeVoting, a technique to create a secure communication channel to a smart card that prevents vote manipulation by the voter’s PC, while at the same time allows the use of any cryptographic voting protocol to cast the vote. Key words: Internet voting, vote manipulation