diff options
| author | djm <> | 2010-10-01 22:54:21 +0000 |
|---|---|---|
| committer | djm <> | 2010-10-01 22:54:21 +0000 |
| commit | 829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2 (patch) | |
| tree | e03b9f1bd051e844b971936729e9df549a209130 /src/lib/libcrypto/ui | |
| parent | e6b755d2a53d3cac7a344dfdd6bf7c951cac754c (diff) | |
| download | openbsd-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.h | 4 | ||||
| -rw-r--r-- | src/lib/libcrypto/ui/ui_err.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/ui/ui_lib.c | 19 | ||||
| -rw-r--r-- | src/lib/libcrypto/ui/ui_openssl.c | 17 |
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 | */ |
| 290 | DECLARE_STACK_OF(UI_STRING) | ||
| 291 | typedef struct ui_string_st UI_STRING; | 290 | typedef struct ui_string_st UI_STRING; |
| 291 | DECLARE_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 | |||
| 310 | int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui)); | 310 | int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui)); |
| 311 | int UI_method_set_reader(UI_METHOD *method, int (*reader)(UI *ui, UI_STRING *uis)); | 311 | int UI_method_set_reader(UI_METHOD *method, int (*reader)(UI *ui, UI_STRING *uis)); |
| 312 | int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui)); | 312 | int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui)); |
| 313 | int UI_method_set_prompt_constructor(UI_METHOD *method, char *(*prompt_constructor)(UI* ui, const char* object_desc, const char* object_name)); | ||
| 313 | int (*UI_method_get_opener(UI_METHOD *method))(UI*); | 314 | int (*UI_method_get_opener(UI_METHOD *method))(UI*); |
| 314 | int (*UI_method_get_writer(UI_METHOD *method))(UI*,UI_STRING*); | 315 | int (*UI_method_get_writer(UI_METHOD *method))(UI*,UI_STRING*); |
| 315 | int (*UI_method_get_flusher(UI_METHOD *method))(UI*); | 316 | int (*UI_method_get_flusher(UI_METHOD *method))(UI*); |
| 316 | int (*UI_method_get_reader(UI_METHOD *method))(UI*,UI_STRING*); | 317 | int (*UI_method_get_reader(UI_METHOD *method))(UI*,UI_STRING*); |
| 317 | int (*UI_method_get_closer(UI_METHOD *method))(UI*); | 318 | int (*UI_method_get_closer(UI_METHOD *method))(UI*); |
| 319 | char* (*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 | ||
| 696 | int 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 | |||
| 696 | int (*UI_method_get_opener(UI_METHOD *method))(UI*) | 707 | int (*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 | ||
| 747 | char* (*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 | |||
| 736 | enum UI_string_types UI_get_string_type(UI_STRING *uis) | 755 | enum 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) |
| 300 | static void read_till_nl(FILE *); | 302 | static int read_till_nl(FILE *); |
| 301 | static void recsig(int); | 303 | static void recsig(int); |
| 302 | static void pushsig(void); | 304 | static void pushsig(void); |
| 303 | static void popsig(void); | 305 | static 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 */ |
| 393 | static void read_till_nl(FILE *in) | 395 | static 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 | ||
| 403 | static volatile sig_atomic_t intr_signal; | 407 | static 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 |
