Sachverhalt: A. Das Kreisgericht St. Gallen verurteilte X._ am 3. Dezember 2009 wegen schwerer Widerhandlung gegen das Betäubungsmittelgesetz zu einer Freiheitsstrafe von 3 1⁄2 Jahren. Der amtliche Verteidiger von X._ erhob gegen diesen Entscheid Berufung und die Staatsanwaltschaft des Kantons St. Gallen Anschlussberufung. Am 29. März 2010 gewährte das Sicherheits- und Justizdepartement des Kantons St. Gallen X._ für das Verfahren vor Kantonsgericht (wie schon vor erster Instanz) die amtliche Verteidigung, allerdings nur insoweit, als die Verteidigungskosten den Betrag von Fr. 5'000.-- übersteigen. Da X._ den Selbstbehalt nicht beglich, ersuchte der amtliche Verteidiger am 16. August 2010 um Entbindung von der amtlichen Verteidigung, die das Sicherheits- und Justizdepartement am 27. August 2010 genehmigte. Das Kantonsgericht St. Gallen verurteilte X._ am 30. August 2010 wegen schwerer Widerhandlung gegen das Betäubungsmittelgesetz zu einer Freiheitsstrafe von 3 1⁄2 Jahren unter Anrechnung der Untersuchungshaft von 124 Tagen. B. Am 28. Oktober 2011 reichte X._ ein Gesuch um Wiederaufnahme ein. Der Präsident des Kantonsgerichts bewilligte am 14. November 2011 die amtliche Verteidigung für das Wiederaufnahmeverfahren. Am 9. Januar 2012 wies das Kantonsgericht das Gesuch ab. C. X._ erhebt Beschwerde in Strafsachen. Er beantragt, das Urteil des Kantonsgerichts St. Gallen vom 9. Januar 2012 sei aufzuheben und die Vorinstanz anzuweisen, die Revision im Sinne von Art. 248 ff. des Strafprozessgesetzes des Kantons St. Gallen vom 1. Juli 1999 (aStP/SG) zu bewilligen. Ausserdem sei ihm für das bundesgerichtliche Verfahren die unentgeltliche Prozessführung und Verbeiständung zu bewilligen. D. Das Gesuch um aufschiebende Wirkung gemäss Art. 103 Abs. 2 lit. b BGG hat das Bundesgericht am 1. Juni 2012 abgewiesen. E. Das Kantonsgericht St. Gallen verzichtet auf eine Vernehmlassung. Die Staatsanwaltschaft des Kantons St. Gallen beantragt, die Beschwerde sei abzuweisen. F. Das Bundesgericht hat den Entscheid öffentlich beraten.