summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ui
diff options
context:
space:
mode:
authordjm <>2010-10-01 22:54:21 +0000
committerdjm <>2010-10-01 22:54:21 +0000
commit829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2 (patch)
treee03b9f1bd051e844b971936729e9df549a209130 /src/lib/libcrypto/ui
parente6b755d2a53d3cac7a344dfdd6bf7c951cac754c (diff)
downloadopenbsd-829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2.tar.gz
openbsd-829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2.tar.bz2
openbsd-829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2.zip
import OpenSSL-1.0.0a
Diffstat (limited to 'src/lib/libcrypto/ui')
-rw-r--r--src/lib/libcrypto/ui/ui.h4
-rw-r--r--src/lib/libcrypto/ui/ui_err.c2
-rw-r--r--src/lib/libcrypto/ui/ui_lib.c19
-rw-r--r--src/lib/libcrypto/ui/ui_openssl.c17
4 files changed, 34 insertions, 8 deletions
diff --git a/src/lib/libcrypto/ui/ui.h b/src/lib/libcrypto/ui/ui.h
index 018296412b..2b1cfa2289 100644
--- a/src/lib/libcrypto/ui/ui.h
+++ b/src/lib/libcrypto/ui/ui.h
@@ -287,8 +287,8 @@ UI_METHOD *UI_OpenSSL(void);
287/* The UI_STRING type is the data structure that contains all the needed info 287/* The UI_STRING type is the data structure that contains all the needed info
288 about a string or a prompt, including test data for a verification prompt. 288 about a string or a prompt, including test data for a verification prompt.
289*/ 289*/
290DECLARE_STACK_OF(UI_STRING)
291typedef struct ui_string_st UI_STRING; 290typedef struct ui_string_st UI_STRING;
291DECLARE_STACK_OF(UI_STRING)
292 292
293/* The different types of strings that are currently supported. 293/* The different types of strings that are currently supported.
294 This is only needed by method authors. */ 294 This is only needed by method authors. */
@@ -310,11 +310,13 @@ int UI_method_set_writer(UI_METHOD *method, int (*writer)(UI *ui, UI_STRING *uis
310int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui)); 310int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui));
311int UI_method_set_reader(UI_METHOD *method, int (*reader)(UI *ui, UI_STRING *uis)); 311int UI_method_set_reader(UI_METHOD *method, int (*reader)(UI *ui, UI_STRING *uis));
312int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui)); 312int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui));
313int UI_method_set_prompt_constructor(UI_METHOD *method, char *(*prompt_constructor)(UI* ui, const char* object_desc, const char* object_name));
313int (*UI_method_get_opener(UI_METHOD *method))(UI*); 314int (*UI_method_get_opener(UI_METHOD *method))(UI*);
314int (*UI_method_get_writer(UI_METHOD *method))(UI*,UI_STRING*); 315int (*UI_method_get_writer(UI_METHOD *method))(UI*,UI_STRING*);
315int (*UI_method_get_flusher(UI_METHOD *method))(UI*); 316int (*UI_method_get_flusher(UI_METHOD *method))(UI*);
316int (*UI_method_get_reader(UI_METHOD *method))(UI*,UI_STRING*); 317int (*UI_method_get_reader(UI_METHOD *method))(UI*,UI_STRING*);
317int (*UI_method_get_closer(UI_METHOD *method))(UI*); 318int (*UI_method_get_closer(UI_METHOD *method))(UI*);
319char* (*UI_method_get_prompt_constructor(UI_METHOD *method))(UI*, const char*, const char*);
318 320
319/* The following functions are helpers for method writers to access relevant 321/* The following functions are helpers for method writers to access relevant
320 data from a UI_STRING. */ 322 data from a UI_STRING. */
diff --git a/src/lib/libcrypto/ui/ui_err.c b/src/lib/libcrypto/ui/ui_err.c
index 786bd0dbc3..a6b96299a0 100644
--- a/src/lib/libcrypto/ui/ui_err.c
+++ b/src/lib/libcrypto/ui/ui_err.c
@@ -1,6 +1,6 @@
1/* crypto/ui/ui_err.c */ 1/* crypto/ui/ui_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
diff --git a/src/lib/libcrypto/ui/ui_lib.c b/src/lib/libcrypto/ui/ui_lib.c
index ac0100808f..a8abc27064 100644
--- a/src/lib/libcrypto/ui/ui_lib.c
+++ b/src/lib/libcrypto/ui/ui_lib.c
@@ -693,6 +693,17 @@ int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui))
693 return -1; 693 return -1;
694 } 694 }
695 695
696int UI_method_set_prompt_constructor(UI_METHOD *method, char *(*prompt_constructor)(UI* ui, const char* object_desc, const char* object_name))
697 {
698 if (method)
699 {
700 method->ui_construct_prompt = prompt_constructor;
701 return 0;
702 }
703 else
704 return -1;
705 }
706
696int (*UI_method_get_opener(UI_METHOD *method))(UI*) 707int (*UI_method_get_opener(UI_METHOD *method))(UI*)
697 { 708 {
698 if (method) 709 if (method)
@@ -733,6 +744,14 @@ int (*UI_method_get_closer(UI_METHOD *method))(UI*)
733 return NULL; 744 return NULL;
734 } 745 }
735 746
747char* (*UI_method_get_prompt_constructor(UI_METHOD *method))(UI*, const char*, const char*)
748 {
749 if (method)
750 return method->ui_construct_prompt;
751 else
752 return NULL;
753 }
754
736enum UI_string_types UI_get_string_type(UI_STRING *uis) 755enum UI_string_types UI_get_string_type(UI_STRING *uis)
737 { 756 {
738 if (!uis) 757 if (!uis)
diff --git a/src/lib/libcrypto/ui/ui_openssl.c b/src/lib/libcrypto/ui/ui_openssl.c
index ef930bf247..1bc25f48d5 100644
--- a/src/lib/libcrypto/ui/ui_openssl.c
+++ b/src/lib/libcrypto/ui/ui_openssl.c
@@ -122,7 +122,9 @@
122 * sigaction and fileno included. -pedantic would be more appropriate for 122 * sigaction and fileno included. -pedantic would be more appropriate for
123 * the intended purposes, but we can't prevent users from adding -ansi. 123 * the intended purposes, but we can't prevent users from adding -ansi.
124 */ 124 */
125#define _POSIX_C_SOURCE 1 125#ifndef _POSIX_C_SOURCE
126#define _POSIX_C_SOURCE 2
127#endif
126#include <signal.h> 128#include <signal.h>
127#include <stdio.h> 129#include <stdio.h>
128#include <string.h> 130#include <string.h>
@@ -297,7 +299,7 @@ static int is_a_tty;
297 299
298/* Declare static functions */ 300/* Declare static functions */
299#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) 301#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE)
300static void read_till_nl(FILE *); 302static int read_till_nl(FILE *);
301static void recsig(int); 303static void recsig(int);
302static void pushsig(void); 304static void pushsig(void);
303static void popsig(void); 305static void popsig(void);
@@ -390,14 +392,16 @@ static int read_string(UI *ui, UI_STRING *uis)
390 392
391#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) 393#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE)
392/* Internal functions to read a string without echoing */ 394/* Internal functions to read a string without echoing */
393static void read_till_nl(FILE *in) 395static int read_till_nl(FILE *in)
394 { 396 {
395#define SIZE 4 397#define SIZE 4
396 char buf[SIZE+1]; 398 char buf[SIZE+1];
397 399
398 do { 400 do {
399 fgets(buf,SIZE,in); 401 if (!fgets(buf,SIZE,in))
402 return 0;
400 } while (strchr(buf,'\n') == NULL); 403 } while (strchr(buf,'\n') == NULL);
404 return 1;
401 } 405 }
402 406
403static volatile sig_atomic_t intr_signal; 407static volatile sig_atomic_t intr_signal;
@@ -445,7 +449,8 @@ static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl)
445 *p='\0'; 449 *p='\0';
446 } 450 }
447 else 451 else
448 read_till_nl(tty_in); 452 if (!read_till_nl(tty_in))
453 goto error;
449 if (UI_set_result(ui, uis, result) >= 0) 454 if (UI_set_result(ui, uis, result) >= 0)
450 ok=1; 455 ok=1;
451 456
@@ -473,7 +478,7 @@ static int open_console(UI *ui)
473 CRYPTO_w_lock(CRYPTO_LOCK_UI); 478 CRYPTO_w_lock(CRYPTO_LOCK_UI);
474 is_a_tty = 1; 479 is_a_tty = 1;
475 480
476#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) 481#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS)
477 tty_in=stdin; 482 tty_in=stdin;
478 tty_out=stderr; 483 tty_out=stderr;
479#else 484#else