What algorithms exist for reverse protein folding? Are there any algorithms already in existence for reverse protein folding/docking (e.g. taking a desired surface map/docking profile and generating DNA which will produce a protein to fold into it?)

Protein folding seems straightforward (though computationally intensive) and protein docking is likewise straightforward, but thus far I haven't come across any protein unfolding algorithms, though I might just be searching for the wrong keywords.

Any advice in this area?
The researchers behind FoldIt have the occasional design challenges that use human game players to help design proteins to fit a structure. 

However, even with a known protein sequence there's still a lot of labwork involved in trying to find a good working DNA sequence. Just generating the DNA sequence is a difficult task due to redundancy in the genetic code (i.e. 64 codons for 20 amino acids + stop signals). When that is combined with cell-specific tRNA frequencies that can influence the timing of amino acid incorporation (and therefore how a protein folds as it is created), creating a sequence that reliably fits a shape ends up being quite difficult.