#!/usr/bin/perl -w # Sample password prompt program. Demonstration of how to interface with # encfs's --extpass option. Note that encfs's extpass interface was chosen to # work with existing password prompt programs, like ssh-askpass. # # The external password program is expected to somehow prompt for the password # and return the password on stdout. Encfs also provides some extra # information which is stored in environment variables. # # Quick Start: The only necessary part of this script for encfs operation is # the final part which prints the password to stdout. # # Encfs records some environment variables with useful information: # "encfs_root" holds a path to the raw encrypted data. # "encfs_stdout" holds a file descriptor number which will display data to # standard output (because standard output is used for the password). # "encfs_stderr" holds a file descriptor number which for standard error.. use strict; use IO::Handle; # find out where we can send data to display to the user (assuming encfs was # started in a terminal!) my $realOut = $ENV{"encfs_stdout"} || fileno(STDOUT); #my $realErr = $ENV{"encfs_stderr"} || fileno(STDERR); #my $rootDir = $ENV{"encfs_root"} || "[unknown]"; #system("xmessage realOut=$realOut, err=$realErr"); # for grins, show all encfs related environment variables to encfs's standard # output my $io = new IO::Handle; if($io->fdopen($realOut, "w")) { while (my ($key,$value) = each %ENV) { $io->print("$key=$value\n") if($key=~/encfs/); } } $io->close(); ## XXX XXX - This is the only part necessary for encfs to be happy. # the functional part -- print the encfs password to stdout print "test\n";