В данной реализации файловой системы ext2_crypt в стандартной программе mkfs была сделана дополнительная поддиректория e2crfsprogs-1.12, в которой реализованы все средства, необходимые для создания файловой системы такого типа.
Код, воплощающий в жизнь способ запроса пароля, находится в файле
misk/mke2crfs.c 1 в функции main(...).
Выглядит он следующим образом:
/*
* Getting the password ...
*/
passwd = getpass("Enter password: ");
if(!passwd) {
fprintf(stderr,"Warning: your filesystem will not be crypted\n");
}
/*
* Putting the password into the superblock...
*/
while(*passwd != '\0')
fs->password_key += *(passwd++);
Тот факт, что для расположения этого кода была выбрана именно функция main(...), обусловлен тем, что, в отличии от большинства подходящих для размещения кода других функций, эта функция вызывается только однажды с процессе выполнения программы, следовательно, пароль будет спрошен только один раз, что, в свою очередь, и подразумевалось в постановке исходной задачи.
Что касается шифрования суперблока, то оно осуществляется в файле lib/ext2_crypt_fs/closefs.c в функции ext2_crypt_fs_flush(...). Именно в этой функции происходит запись заполненного суперблока на диск, шифрование же происходит перед самым записыванием.