diff options
| author | Arne Schwabe <arne@rfc2549.org> | 2012-04-16 19:21:14 +0200 | 
|---|---|---|
| committer | Arne Schwabe <arne@rfc2549.org> | 2012-04-16 19:21:14 +0200 | 
| commit | 3e4d8f433239c40311037616b1b8833a06651ae0 (patch) | |
| tree | 98ab7fce0d011d34677b0beb762d389cb5c39199 /openssl/crypto/ui/ui_locl.h | |
Initial import
Diffstat (limited to 'openssl/crypto/ui/ui_locl.h')
| -rw-r--r-- | openssl/crypto/ui/ui_locl.h | 153 | 
1 files changed, 153 insertions, 0 deletions
| diff --git a/openssl/crypto/ui/ui_locl.h b/openssl/crypto/ui/ui_locl.h new file mode 100644 index 00000000..aa4a5563 --- /dev/null +++ b/openssl/crypto/ui/ui_locl.h @@ -0,0 +1,153 @@ +/* crypto/ui/ui.h -*- mode:C; c-file-style: "eay" -*- */ +/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL + * project 2001. + */ +/* ==================================================================== + * Copyright (c) 2001 The OpenSSL Project.  All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer.  + * + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in + *    the documentation and/or other materials provided with the + *    distribution. + * + * 3. All advertising materials mentioning features or use of this + *    software must display the following acknowledgment: + *    "This product includes software developed by the OpenSSL Project + *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + *    endorse or promote products derived from this software without + *    prior written permission. For written permission, please contact + *    openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + *    nor may "OpenSSL" appear in their names without prior written + *    permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + *    acknowledgment: + *    "This product includes software developed by the OpenSSL Project + *    for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com).  This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +#ifndef HEADER_UI_LOCL_H +#define HEADER_UI_LOCL_H + +#include <openssl/ui.h> +#include <openssl/crypto.h> + +#ifdef _ +#undef _ +#endif + +struct ui_method_st +	{ +	char *name; + +	/* All the functions return 1 or non-NULL for success and 0 or NULL +	   for failure */ + +	/* Open whatever channel for this, be it the console, an X window +	   or whatever. +	   This function should use the ex_data structure to save +	   intermediate data. */ +	int (*ui_open_session)(UI *ui); + +	int (*ui_write_string)(UI *ui, UI_STRING *uis); + +	/* Flush the output.  If a GUI dialog box is used, this function can +	   be used to actually display it. */ +	int (*ui_flush)(UI *ui); + +	int (*ui_read_string)(UI *ui, UI_STRING *uis); + +	int (*ui_close_session)(UI *ui); + +	/* Construct a prompt in a user-defined manner.  object_desc is a +	   textual short description of the object, for example "pass phrase", +	   and object_name is the name of the object (might be a card name or +	   a file name. +	   The returned string shall always be allocated on the heap with +	   OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). */ +	char *(*ui_construct_prompt)(UI *ui, const char *object_desc, +		const char *object_name); +	}; + +struct ui_string_st +	{ +	enum UI_string_types type; /* Input */ +	const char *out_string;	/* Input */ +	int input_flags;	/* Flags from the user */ + +	/* The following parameters are completely irrelevant for UIT_INFO, +	   and can therefore be set to 0 or NULL */ +	char *result_buf;	/* Input and Output: If not NULL, user-defined +				   with size in result_maxsize.  Otherwise, it +				   may be allocated by the UI routine, meaning +				   result_minsize is going to be overwritten.*/ +	union +		{ +		struct +			{ +			int result_minsize;	/* Input: minimum required +						   size of the result. +						*/ +			int result_maxsize;	/* Input: maximum permitted +						   size of the result */ + +			const char *test_buf;	/* Input: test string to verify +						   against */ +			} string_data; +		struct +			{ +			const char *action_desc; /* Input */ +			const char *ok_chars; /* Input */ +			const char *cancel_chars; /* Input */ +			} boolean_data; +		} _; + +#define OUT_STRING_FREEABLE 0x01 +	int flags;		/* flags for internal use */ +	}; + +struct ui_st +	{ +	const UI_METHOD *meth; +	STACK_OF(UI_STRING) *strings; /* We might want to prompt for more +					 than one thing at a time, and +					 with different echoing status.  */ +	void *user_data; +	CRYPTO_EX_DATA ex_data; + +#define UI_FLAG_REDOABLE	0x0001 +#define UI_FLAG_PRINT_ERRORS	0x0100 +	int flags; +	}; + +#endif | 
