diff --git a/libblkid/xgetpass.c b/libblkid/xgetpass.c
new file mode 100644
index 0000000..ba20894
--- /dev/null
+++ b/libblkid/xgetpass.c
@@ -0,0 +1,46 @@
+/*
+ * A function to read the passphrase either from the terminal or from
+ * an open file descriptor.
+ *
+ * Public domain.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+
+#include "c.h"
+#include "xgetpass.h"
+
+char *xgetpass(int pfd, const char *prompt)
+{
+	char *pass = NULL;
+	int len = 0, i;
+
+        if (pfd < 0) /* terminal */
+		return getpass(prompt);
+
+	for (i=0; ; i++) {
+		if (i >= len-1) {
+			char *tmppass = pass;
+			len += 128;
+
+			pass = realloc(tmppass, len);
+			if (!pass) {
+				pass = tmppass; /* the old buffer hasn't changed */
+				break;
+			}
+		}
+		if (pass && (read(pfd, pass + i, 1) != 1 ||
+			     pass[i] == '\n' || pass[i] == 0))
+			break;
+	}
+
+	if (pass)
+		pass[i] = '\0';
+	return pass;
+}
+
