A little explanation of what the patch does; most of the code in this patch already existed. I extracted the in-line code from "luks.c" that creates the crypto disk into a new cryptomount function called "grub_cryptodisk_create" that is then used by the luks module and is also avilable to the cryptomount module. I extracted the "set_passphrase" function from the "devmapper.c" committed (e7f405ab) in the "peter/devmapper" branch so that I could use it in cryptomount to hash a manually entered passphrase. I then wrote some additional options and a small block of code to implement plain mode using the above.