aboutsummaryrefslogtreecommitdiffstats
path: root/src/passphrase.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2013-11-22 10:16:02 +0100
committerMattias Andrée <maandree@operamail.com>2013-11-22 10:16:02 +0100
commit5e7d3624fa967adb90504752d6ff59678a75020f (patch)
treea84d3d21c482de9f705c60e3798c66e2d04a6283 /src/passphrase.c
parentadd crypt auth module (diff)
downloadcerberus-5e7d3624fa967adb90504752d6ff59678a75020f.tar.gz
cerberus-5e7d3624fa967adb90504752d6ff59678a75020f.tar.bz2
cerberus-5e7d3624fa967adb90504752d6ff59678a75020f.tar.xz
use libpassphrase
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r--src/passphrase.c111
1 files changed, 0 insertions, 111 deletions
diff --git a/src/passphrase.c b/src/passphrase.c
deleted file mode 100644
index 599d5ff..0000000
--- a/src/passphrase.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * cerberus – Minimal login program
- *
- * Copyright © 2013 Mattias Andrée (maandree@member.fsf.org)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <termios.h>
-#include <unistd.h>
-
-#include "config.h"
-
-#include "passphrase.h"
-
-
-#define START_PASSPHRASE_LIMIT 32
-
-
-/**
- * The original TTY settings
- */
-static struct termios saved_stty;
-
-
-/**
- * Reads the passphrase from stdin
- *
- * @return The passphrase, should be `free`:ed
- */
-char* get_passphrase(void)
-{
- /* malloc and realloc returns NULL if we run out of memory,
- we will not do that under normal usecases, if we do, it
- okay to segfault on null derefencing and quit on that. */
-
- char* rc = malloc(START_PASSPHRASE_LIMIT * sizeof(char));
- long size = START_PASSPHRASE_LIMIT;
- long len = 0;
- int c;
-
- if (rc == NULL)
- {
- perror("malloc");
- sleep(ERROR_SLEEP);
- _exit(1);
- }
-
- /* Read password until EOF or Enter, skip all \0 as that
- is probably not a part of the passphrase (good luck typing
- that in X.org) and can be echoed into stdin by the kernel. */
- for (;;)
- {
- c = getchar();
- if ((c < 0) || (c == '\n'))
- break;
- if (c != 0)
- {
- *(rc + len++) = c;
- if (len == size)
- if ((rc = realloc(rc, (size <<= 1L) * sizeof(char))) == NULL)
- {
- perror("realloc");
- sleep(ERROR_SLEEP);
- _exit(1);
- }
- }
- }
-
- /* NUL-terminate passphrase */
- *(rc + len) = 0;
-
- printf("\n");
- return rc;
-}
-
-
-/**
- * Disable echoing and do anything else to the terminal settnings `get_passphrase` requires
- */
-void disable_echo(void)
-{
- struct termios stty;
-
- tcgetattr(STDIN_FILENO, &stty);
- saved_stty = stty;
- stty.c_lflag &= ~ECHO;
- tcsetattr(STDIN_FILENO, TCSAFLUSH, &stty);
-}
-
-
-/**
- * Undo the actions of `disable_echo`
- */
-void reenable_echo(void)
-{
- tcsetattr(STDIN_FILENO, TCSAFLUSH, &saved_stty);
-}
-