1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* apps/speed.c -*- mode:C; c-file-style: "eay" -*- */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com).
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL.
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to.  The following conditions
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA,
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed.
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used.
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package.
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    documentation and/or other materials provided with the distribution.
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    must display the following acknowledgement:
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes cryptographic software written by
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     Eric Young (eay@cryptsoft.com)"
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    The word 'cryptographic' can be left out if the rouines from the library
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    being used are not cryptographic related :-).
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the apps directory (application code) you must include an acknowledgement:
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE.
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed.  i.e. this code cannot simply be
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.]
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ====================================================================
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Portions of the attached software ("Contribution") are developed by
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The Contribution is licensed pursuant to the OpenSSL open source
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * license provided above.
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The ECDH and ECDSA speed test software is originally written by
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Sumit Gupta of Sun Microsystems Laboratories.
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* most of this code has been pilfered from my libdes speed.c program */
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SPEED
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef SECONDS
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define SECONDS		3
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define RSA_SECONDS	10
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DSA_SECONDS	10
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ECDSA_SECONDS   10
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ECDH_SECONDS    10
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 11-Sep-92 Andrew Daviel   Support for Silicon Graphics IRIX added */
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 06-Apr-92 Luke Brennan    Support for VMS and add extra signal calls */
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef PROG
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PROG speed_main
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdio.h>
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdlib.h>
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <string.h>
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <math.h>
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "apps.h"
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_NO_STDIO
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define APPS_WIN16
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/crypto.h>
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/rand.h>
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/err.h>
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/evp.h>
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/objects.h>
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_SYS_MSDOS)
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include OPENSSL_UNISTD
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_SYS_NETWARE
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <signal.h>
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
111392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if defined(_WIN32) || defined(__CYGWIN__)
112221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#include <windows.h>
113392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# if defined(__CYGWIN__) && !defined(_WIN32)
114392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom  /* <windows.h> should define _WIN32, which normally is mutually
115392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom   * exclusive with __CYGWIN__, but if it didn't... */
116392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#  define _WIN32
117392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom  /* this is done because Cygwin alarm() fails sometimes. */
118392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom# endif
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/bn.h>
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DES
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/des.h>
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/aes.h>
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/camellia.h>
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD2
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/md2.h>
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MDC2
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/mdc2.h>
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD4
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/md4.h>
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD5
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/md5.h>
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_HMAC
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/hmac.h>
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/evp.h>
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/sha.h>
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RIPEMD
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/ripemd.h>
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
153221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_WHIRLPOOL
154221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#include <openssl/whrlpool.h>
155221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC4
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/rc4.h>
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC5
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/rc5.h>
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC2
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/rc2.h>
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_IDEA
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/idea.h>
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SEED
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/seed.h>
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_BF
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/blowfish.h>
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAST
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/cast.h>
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/rsa.h>
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "./testrsa.h"
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/x509.h>
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/dsa.h>
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "./testdsa.h"
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/ecdsa.h>
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/ecdh.h>
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
192392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include <openssl/modes.h>
193392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
194392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef OPENSSL_FIPS
195392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef OPENSSL_DOING_MAKEDEPEND
196392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#undef AES_set_encrypt_key
197392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#undef AES_set_decrypt_key
198392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#undef DES_set_key_unchecked
199392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
200392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define BF_set_key	private_BF_set_key
201392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define CAST_set_key	private_CAST_set_key
202392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define idea_set_encrypt_key	private_idea_set_encrypt_key
203392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define SEED_set_key	private_SEED_set_key
204392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define RC2_set_key	private_RC2_set_key
205392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define RC4_set_key	private_RC4_set_key
206392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define DES_set_key_unchecked	private_DES_set_key_unchecked
207392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define AES_set_encrypt_key	private_AES_set_encrypt_key
208392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define AES_set_decrypt_key	private_AES_set_decrypt_key
209392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define Camellia_set_key	private_Camellia_set_key
210392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
212221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef HAVE_FORK
213221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_NETWARE)
214221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#  define HAVE_FORK 0
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# else
216221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#  define HAVE_FORK 1
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
220221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#if HAVE_FORK
221221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#undef NO_FORK
22298d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#else
223221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define NO_FORK
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef BUFSIZE
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BUFSIZE	((long)1024*8+1)
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint run=0;
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int mr=0;
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int usertime=1;
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic double Time_F(int s);
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic void print_message(const char *s,long num,int length);
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic void pkey_print_message(const char *str, const char *str2,
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long num, int bits, int sec);
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic void print_result(int alg,int run_no,int count,double time_used);
23898d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#ifndef NO_FORK
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int do_multi(int multi);
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
242392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define ALGOR_NUM	30
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define SIZE_NUM	5
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define RSA_NUM		4
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DSA_NUM		3
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define EC_NUM       16
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define MAX_ECDH_SIZE 256
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic const char *names[ALGOR_NUM]={
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  "md2","mdc2","md4","md5","hmac(md5)","sha1","rmd160","rc4",
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  "des cbc","des ede3","idea cbc","seed cbc",
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  "rc2 cbc","rc5-32/12 cbc","blowfish cbc","cast cbc",
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  "aes-128 cbc","aes-192 cbc","aes-256 cbc",
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  "camellia-128 cbc","camellia-192 cbc","camellia-256 cbc",
256221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom  "evp","sha256","sha512","whirlpool",
25704ef91b390dfcc6125913e2f2af502d23d7a5112Brian Carlstrom  "aes-128 ige","aes-192 ige","aes-256 ige","ghash" };
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic double results[ALGOR_NUM][SIZE_NUM];
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int lengths[SIZE_NUM]={16,64,256,1024,8*1024};
26098d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#ifndef OPENSSL_NO_RSA
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic double rsa_results[RSA_NUM][2];
26298d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#endif
26398d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#ifndef OPENSSL_NO_DSA
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic double dsa_results[DSA_NUM][2];
26598d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#endif
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic double ecdsa_results[EC_NUM][2];
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic double ecdh_results[EC_NUM][1];
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_NO_DSA) && !(defined(OPENSSL_NO_ECDSA) && defined(OPENSSL_NO_ECDH))
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic const char rnd_seed[] = "string to make the random number generator think it has entropy";
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int rnd_fake = 0;
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef SIGALRM
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(__STDC__) || defined(sgi) || defined(_AIX)
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define SIGRETTYPE void
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define SIGRETTYPE int
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic SIGRETTYPE sig_done(int sig);
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic SIGRETTYPE sig_done(int sig)
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	signal(SIGALRM,sig_done);
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	run=0;
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef LINT
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sig=sig;
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define START	0
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STOP	1
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
299221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#if defined(_WIN32)
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
301392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if !defined(SIGALRM)
30204ef91b390dfcc6125913e2f2af502d23d7a5112Brian Carlstrom# define SIGALRM
303392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
304221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromstatic unsigned int lapse,schlock;
305392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromstatic void alarm_win32(unsigned int secs) { lapse = secs*1000; }
306392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define alarm alarm_win32
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
308221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromstatic DWORD WINAPI sleepy(VOID *arg)
309221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
310221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	schlock = 1;
311221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	Sleep(lapse);
312221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	run = 0;
313221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	return 0;
314221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	}
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic double Time_F(int s)
317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
318221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (s == START)
319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
320221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		HANDLE	thr;
321221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		schlock = 0;
322221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		thr = CreateThread(NULL,4096,sleepy,NULL,0,NULL);
323221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		if (thr==NULL)
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
325221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			DWORD ret=GetLastError();
326221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			BIO_printf(bio_err,"unable to CreateThread (%d)",ret);
327221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ExitProcess(ret);
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
329221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		CloseHandle(thr);		/* detach the thread	*/
330221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		while (!schlock) Sleep(0);	/* scheduler spinlock	*/
331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
333221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	return app_tminterval(s,usertime);
334221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	}
335221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#else
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
337221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromstatic double Time_F(int s)
338221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{
339221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	return app_tminterval(s,usertime);
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
341221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic const int KDF1_SHA1_len = 20;
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic void *KDF1_SHA1(const void *in, size_t inlen, void *out, size_t *outlen)
347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (*outlen < SHA_DIGEST_LENGTH)
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return NULL;
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		*outlen = SHA_DIGEST_LENGTH;
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return SHA1(in, inlen, out);
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return NULL;
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif	/* OPENSSL_NO_SHA */
357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif	/* OPENSSL_NO_ECDH */
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint MAIN(int, char **);
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint MAIN(int argc, char **argv)
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char *buf=NULL,*buf2=NULL;
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int mret=1;
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long count=0,save_count=0;
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int i,j,k;
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_NO_RSA) || !defined(OPENSSL_NO_DSA)
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long rsa_count;
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned rsa_num;
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char md[EVP_MAX_MD_SIZE];
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD2
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char md2[MD2_DIGEST_LENGTH];
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MDC2
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char mdc2[MDC2_DIGEST_LENGTH];
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD4
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char md4[MD4_DIGEST_LENGTH];
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD5
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char md5[MD5_DIGEST_LENGTH];
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char hmac[MD5_DIGEST_LENGTH];
388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA
390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char sha[SHA_DIGEST_LENGTH];
391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA256
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char sha256[SHA256_DIGEST_LENGTH];
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA512
395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char sha512[SHA512_DIGEST_LENGTH];
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
398221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_WHIRLPOOL
399221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	unsigned char whirlpool[WHIRLPOOL_DIGEST_LENGTH];
400221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RIPEMD
402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char rmd160[RIPEMD160_DIGEST_LENGTH];
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC4
405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	RC4_KEY rc4_ks;
406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC5
408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	RC5_32_KEY rc5_ks;
409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC2
411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	RC2_KEY rc2_ks;
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_IDEA
414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	IDEA_KEY_SCHEDULE idea_ks;
415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SEED
417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SEED_KEY_SCHEDULE seed_ks;
418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_BF
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BF_KEY bf_ks;
421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAST
423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	CAST_KEY cast_ks;
424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static const unsigned char key16[16]=
426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,
427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static const unsigned char key24[24]=
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static const unsigned char key32[32]=
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,0x56};
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static const unsigned char ckey24[24]=
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,
442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static const unsigned char ckey32[32]=
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,
448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,0x56};
449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define MAX_BLOCK_SIZE 128
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define MAX_BLOCK_SIZE 64
454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char DES_iv[8];
456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char iv[2*MAX_BLOCK_SIZE/8];
457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DES
458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_key_schedule sch;
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_key_schedule sch2;
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_key_schedule sch3;
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	AES_KEY aes_ks1, aes_ks2, aes_ks3;
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	CAMELLIA_KEY camellia_ks1, camellia_ks2, camellia_ks3;
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_MD2		0
472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_MDC2		1
473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_MD4		2
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_MD5		3
475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_HMAC		4
476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_SHA1		5
477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define D_RMD160	6
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_RC4		7
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_CBC_DES	8
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_EDE3_DES	9
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_CBC_IDEA	10
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_CBC_SEED	11
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_CBC_RC2	12
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_CBC_RC5	13
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_CBC_BF	14
486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	D_CBC_CAST	15
487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define D_CBC_128_AES	16
488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define D_CBC_192_AES	17
489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define D_CBC_256_AES	18
490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define D_CBC_128_CML   19
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define D_CBC_192_CML   20
492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define D_CBC_256_CML   21
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define D_EVP		22
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define D_SHA256	23
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define D_SHA512	24
496221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define D_WHIRLPOOL	25
497221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define D_IGE_128_AES   26
498221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define D_IGE_192_AES   27
499221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#define D_IGE_256_AES   28
500392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define D_GHASH		29
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	double d=0.0;
502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long c[ALGOR_NUM][SIZE_NUM];
503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	R_DSA_512	0
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	R_DSA_1024	1
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	R_DSA_2048	2
506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	R_RSA_512	0
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	R_RSA_1024	1
508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	R_RSA_2048	2
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	R_RSA_4096	3
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_P160    0
512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_P192    1
513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_P224    2
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_P256    3
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_P384    4
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_P521    5
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_K163    6
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_K233    7
519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_K283    8
520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_K409    9
521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_K571    10
522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_B163    11
523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_B233    12
524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_B283    13
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_B409    14
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define R_EC_B571    15
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	RSA *rsa_key[RSA_NUM];
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long rsa_c[RSA_NUM][2];
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static unsigned int rsa_bits[RSA_NUM]={512,1024,2048,4096};
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static unsigned char *rsa_data[RSA_NUM]=
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{test512,test1024,test2048,test4096};
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static int rsa_data_length[RSA_NUM]={
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		sizeof(test512),sizeof(test1024),
536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		sizeof(test2048),sizeof(test4096)};
537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DSA *dsa_key[DSA_NUM];
540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long dsa_c[DSA_NUM][2];
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static unsigned int dsa_bits[DSA_NUM]={512,1024,2048};
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_EC
544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* We only test over the following curves as they are representative,
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * To add tests over more curves, simply add the curve NID
546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * and curve name to the following arrays and increase the
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * EC_NUM value accordingly.
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 */
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static unsigned int test_curves[EC_NUM] =
550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Prime Curves */
552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_secp160r1,
553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_X9_62_prime192v1,
554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_secp224r1,
555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_X9_62_prime256v1,
556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_secp384r1,
557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_secp521r1,
558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Binary Curves */
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_sect163k1,
560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_sect233k1,
561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_sect283k1,
562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_sect409k1,
563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_sect571k1,
564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_sect163r2,
565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_sect233r1,
566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_sect283r1,
567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_sect409r1,
568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	NID_sect571r1
569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static const char * test_curves_names[EC_NUM] =
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Prime Curves */
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"secp160r1",
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistp192",
575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistp224",
576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistp256",
577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistp384",
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistp521",
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Binary Curves */
580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistk163",
581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistk233",
582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistk283",
583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistk409",
584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistk571",
585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistb163",
586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistb233",
587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistb283",
588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistb409",
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"nistb571"
590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static int test_curves_bits[EC_NUM] =
592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        {
593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        160, 192, 224, 256, 384, 521,
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        163, 233, 283, 409, 571,
595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        163, 233, 283, 409, 571
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        };
597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char ecdsasig[256];
602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned int ecdsasiglen;
603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	EC_KEY *ecdsa[EC_NUM];
604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long ecdsa_c[EC_NUM][2];
605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	EC_KEY *ecdh_a[EC_NUM], *ecdh_b[EC_NUM];
609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char secret_a[MAX_ECDH_SIZE], secret_b[MAX_ECDH_SIZE];
610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int secret_size_a, secret_size_b;
611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int ecdh_checks = 0;
612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int secret_idx = 0;
613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long ecdh_c[EC_NUM][2];
614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int rsa_doit[RSA_NUM];
617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int dsa_doit[DSA_NUM];
618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int ecdsa_doit[EC_NUM];
620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        int ecdh_doit[EC_NUM];
623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int doit[ALGOR_NUM];
625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int pr_header=0;
626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	const EVP_CIPHER *evp_cipher=NULL;
627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	const EVP_MD *evp_md=NULL;
628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int decrypt=0;
62998d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#ifndef NO_FORK
630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int multi=0;
631656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
633656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef TIMES
634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	usertime=-1;
635656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	apps_startup();
638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(results, 0, sizeof(results));
639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(dsa_key,0,sizeof(dsa_key));
641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<EC_NUM; i++) ecdsa[i] = NULL;
644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<EC_NUM; i++)
647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_a[i] = NULL;
649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_b[i] = NULL;
650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (bio_err == NULL)
655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((bio_err=BIO_new(BIO_s_file())) != NULL)
656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (!load_config(bio_err, NULL))
659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		goto end;
660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(rsa_key,0,sizeof(rsa_key));
663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<RSA_NUM; i++)
664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		rsa_key[i]=NULL;
665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((buf=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL)
668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		BIO_printf(bio_err,"out of memory\n");
670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		goto end;
671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((buf2=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL)
673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		BIO_printf(bio_err,"out of memory\n");
675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		goto end;
676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(c,0,sizeof(c));
679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(DES_iv,0,sizeof(DES_iv));
680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(iv,0,sizeof(iv));
681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<ALGOR_NUM; i++)
683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		doit[i]=0;
684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<RSA_NUM; i++)
685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		rsa_doit[i]=0;
686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<DSA_NUM; i++)
687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		dsa_doit[i]=0;
688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
689656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<EC_NUM; i++)
690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdsa_doit[i]=0;
691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<EC_NUM; i++)
694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_doit[i]=0;
695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	j=0;
699656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	argc--;
700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	argv++;
701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	while (argc)
702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if	((argc > 0) && (strcmp(*argv,"-elapsed") == 0))
704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			usertime = 0;
706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j--;	/* Otherwise, -elapsed gets confused with
707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   an algorithm. */
708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
709656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if	((argc > 0) && (strcmp(*argv,"-evp") == 0))
710656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			argc--;
712656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			argv++;
713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if(argc == 0)
714656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
715656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err,"no EVP given\n");
716656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				goto end;
717656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
718656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			evp_cipher=EVP_get_cipherbyname(*argv);
719656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if(!evp_cipher)
720656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
721656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				evp_md=EVP_get_digestbyname(*argv);
722656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
723656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if(!evp_cipher && !evp_md)
724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err,"%s is an unknown cipher or digest\n",*argv);
726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				goto end;
727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			doit[D_EVP]=1;
729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (argc > 0 && !strcmp(*argv,"-decrypt"))
731656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			decrypt=1;
733656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j--;	/* Otherwise, -elapsed gets confused with
734656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   an algorithm. */
735656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ENGINE
737656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if	((argc > 0) && (strcmp(*argv,"-engine") == 0))
738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			argc--;
740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			argv++;
741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if(argc == 0)
742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err,"no engine given\n");
744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				goto end;
745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
74643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom                        setup_engine(bio_err, *argv, 0);
747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			/* j will be increased again further down.  We just
748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			   don't want speed to confuse an engine with an
749656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			   algorithm, especially when none is given (which
750656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			   means all of them should be run) */
751656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j--;
752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
753656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
75498d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#ifndef NO_FORK
755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if	((argc > 0) && (strcmp(*argv,"-multi") == 0))
756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			argc--;
758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			argv++;
759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if(argc == 0)
760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err,"no multi count given\n");
762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				goto end;
763656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
764656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			multi=atoi(argv[0]);
765656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if(multi <= 0)
766656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			    {
767656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err,"bad multi count\n");
768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				goto end;
769656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j--;	/* Otherwise, -mr gets confused with
771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   an algorithm. */
772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (argc > 0 && !strcmp(*argv,"-mr"))
775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			mr=1;
777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j--;	/* Otherwise, -mr gets confused with
778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   an algorithm. */
779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD2
782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if	(strcmp(*argv,"md2") == 0) doit[D_MD2]=1;
783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MDC2
786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"mdc2") == 0) doit[D_MDC2]=1;
787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD4
790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"md4") == 0) doit[D_MD4]=1;
791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD5
794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"md5") == 0) doit[D_MD5]=1;
795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
797656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD5
798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"hmac") == 0) doit[D_HMAC]=1;
799656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA
802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"sha1") == 0) doit[D_SHA1]=1;
803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"sha") == 0)	doit[D_SHA1]=1,
805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							doit[D_SHA256]=1,
806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							doit[D_SHA512]=1;
807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA256
809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"sha256") == 0) doit[D_SHA256]=1;
810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA512
813656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"sha512") == 0) doit[D_SHA512]=1;
814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
815656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
816656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
817221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_WHIRLPOOL
818221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			if (strcmp(*argv,"whirlpool") == 0) doit[D_WHIRLPOOL]=1;
819221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		else
820221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RIPEMD
822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"ripemd") == 0) doit[D_RMD160]=1;
823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"rmd160") == 0) doit[D_RMD160]=1;
825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"ripemd160") == 0) doit[D_RMD160]=1;
827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC4
830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"rc4") == 0) doit[D_RC4]=1;
831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
832656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
833656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DES
834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"des-cbc") == 0) doit[D_CBC_DES]=1;
835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else	if (strcmp(*argv,"des-ede3") == 0) doit[D_EDE3_DES]=1;
836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
838656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
839656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"aes-128-cbc") == 0) doit[D_CBC_128_AES]=1;
840656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else	if (strcmp(*argv,"aes-192-cbc") == 0) doit[D_CBC_192_AES]=1;
841656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else	if (strcmp(*argv,"aes-256-cbc") == 0) doit[D_CBC_256_AES]=1;
842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else    if (strcmp(*argv,"aes-128-ige") == 0) doit[D_IGE_128_AES]=1;
843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else	if (strcmp(*argv,"aes-192-ige") == 0) doit[D_IGE_192_AES]=1;
844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else	if (strcmp(*argv,"aes-256-ige") == 0) doit[D_IGE_256_AES]=1;
845656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                else
846656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
848656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"camellia-128-cbc") == 0) doit[D_CBC_128_CML]=1;
849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else    if (strcmp(*argv,"camellia-192-cbc") == 0) doit[D_CBC_192_CML]=1;
850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else    if (strcmp(*argv,"camellia-256-cbc") == 0) doit[D_CBC_256_CML]=1;
851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
853656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 0 /* was: #ifdef RSAref */
855656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"rsaref") == 0)
856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
857656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			RSA_set_default_openssl_method(RSA_PKCS1_RSAref());
858656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j--;
859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
861656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
862656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef RSA_NULL
863656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"openssl") == 0)
864656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
865656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			RSA_set_default_method(RSA_PKCS1_SSLeay());
866656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j--;
867656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
868656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
869656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
870656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* !OPENSSL_NO_RSA */
871656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     if (strcmp(*argv,"dsa512") == 0) dsa_doit[R_DSA_512]=2;
872656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"dsa1024") == 0) dsa_doit[R_DSA_1024]=2;
873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"dsa2048") == 0) dsa_doit[R_DSA_2048]=2;
874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"rsa512") == 0) rsa_doit[R_RSA_512]=2;
875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"rsa1024") == 0) rsa_doit[R_RSA_1024]=2;
876656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"rsa2048") == 0) rsa_doit[R_RSA_2048]=2;
877656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"rsa4096") == 0) rsa_doit[R_RSA_4096]=2;
878656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
879656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC2
880656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     if (strcmp(*argv,"rc2-cbc") == 0) doit[D_CBC_RC2]=1;
881656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"rc2") == 0) doit[D_CBC_RC2]=1;
882656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
883656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
884656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC5
885656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     if (strcmp(*argv,"rc5-cbc") == 0) doit[D_CBC_RC5]=1;
886656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"rc5") == 0) doit[D_CBC_RC5]=1;
887656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_IDEA
890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     if (strcmp(*argv,"idea-cbc") == 0) doit[D_CBC_IDEA]=1;
891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"idea") == 0) doit[D_CBC_IDEA]=1;
892656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
893656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
894656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SEED
895656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     if (strcmp(*argv,"seed-cbc") == 0) doit[D_CBC_SEED]=1;
896656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"seed") == 0) doit[D_CBC_SEED]=1;
897656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
898656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
899656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_BF
900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     if (strcmp(*argv,"bf-cbc") == 0) doit[D_CBC_BF]=1;
901656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"blowfish") == 0) doit[D_CBC_BF]=1;
902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"bf") == 0) doit[D_CBC_BF]=1;
903656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAST
906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     if (strcmp(*argv,"cast-cbc") == 0) doit[D_CBC_CAST]=1;
907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"cast") == 0) doit[D_CBC_CAST]=1;
908656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"cast5") == 0) doit[D_CBC_CAST]=1;
909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
910656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DES
912656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"des") == 0)
913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
914656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			doit[D_CBC_DES]=1;
915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			doit[D_EDE3_DES]=1;
916656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
917656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
918656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
919656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"aes") == 0)
921656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
922656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			doit[D_CBC_128_AES]=1;
923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			doit[D_CBC_192_AES]=1;
924656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			doit[D_CBC_256_AES]=1;
925656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
926392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		else if (strcmp(*argv,"ghash") == 0)
927392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			{
928392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			doit[D_GHASH]=1;
929392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			}
930656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
931656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
932656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
933656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"camellia") == 0)
934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			doit[D_CBC_128_CML]=1;
936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			doit[D_CBC_192_CML]=1;
937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			doit[D_CBC_256_CML]=1;
938656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"rsa") == 0)
943656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
944656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_doit[R_RSA_512]=1;
945656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_doit[R_RSA_1024]=1;
946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_doit[R_RSA_2048]=1;
947656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_doit[R_RSA_4096]=1;
948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
949656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
950656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
951656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (strcmp(*argv,"dsa") == 0)
953656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
954656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			dsa_doit[R_DSA_512]=1;
955656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			dsa_doit[R_DSA_1024]=1;
956656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			dsa_doit[R_DSA_2048]=1;
957656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
958656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
959656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
960656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     if (strcmp(*argv,"ecdsap160") == 0) ecdsa_doit[R_EC_P160]=2;
962656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsap192") == 0) ecdsa_doit[R_EC_P192]=2;
963656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsap224") == 0) ecdsa_doit[R_EC_P224]=2;
964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsap256") == 0) ecdsa_doit[R_EC_P256]=2;
965656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsap384") == 0) ecdsa_doit[R_EC_P384]=2;
966656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsap521") == 0) ecdsa_doit[R_EC_P521]=2;
967656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsak163") == 0) ecdsa_doit[R_EC_K163]=2;
968656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsak233") == 0) ecdsa_doit[R_EC_K233]=2;
969656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsak283") == 0) ecdsa_doit[R_EC_K283]=2;
970656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsak409") == 0) ecdsa_doit[R_EC_K409]=2;
971656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsak571") == 0) ecdsa_doit[R_EC_K571]=2;
972656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsab163") == 0) ecdsa_doit[R_EC_B163]=2;
973656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsab233") == 0) ecdsa_doit[R_EC_B233]=2;
974656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsab283") == 0) ecdsa_doit[R_EC_B283]=2;
975656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsab409") == 0) ecdsa_doit[R_EC_B409]=2;
976656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsab571") == 0) ecdsa_doit[R_EC_B571]=2;
977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdsa") == 0)
978656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
979656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (i=0; i < EC_NUM; i++)
980656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_doit[i]=1;
981656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
982656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
983656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
984656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
985656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     if (strcmp(*argv,"ecdhp160") == 0) ecdh_doit[R_EC_P160]=2;
986656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhp192") == 0) ecdh_doit[R_EC_P192]=2;
987656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhp224") == 0) ecdh_doit[R_EC_P224]=2;
988656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhp256") == 0) ecdh_doit[R_EC_P256]=2;
989656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhp384") == 0) ecdh_doit[R_EC_P384]=2;
990656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhp521") == 0) ecdh_doit[R_EC_P521]=2;
991656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhk163") == 0) ecdh_doit[R_EC_K163]=2;
992656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhk233") == 0) ecdh_doit[R_EC_K233]=2;
993656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhk283") == 0) ecdh_doit[R_EC_K283]=2;
994656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhk409") == 0) ecdh_doit[R_EC_K409]=2;
995656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhk571") == 0) ecdh_doit[R_EC_K571]=2;
996656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhb163") == 0) ecdh_doit[R_EC_B163]=2;
997656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhb233") == 0) ecdh_doit[R_EC_B233]=2;
998656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhb283") == 0) ecdh_doit[R_EC_B283]=2;
999656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhb409") == 0) ecdh_doit[R_EC_B409]=2;
1000656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdhb571") == 0) ecdh_doit[R_EC_B571]=2;
1001656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else if (strcmp(*argv,"ecdh") == 0)
1002656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1003656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (i=0; i < EC_NUM; i++)
1004656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_doit[i]=1;
1005656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1006656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
1007656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1008656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1009656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"Error: bad option or value\n");
1010656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"\n");
1011656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"Available values:\n");
1012656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD2
1013656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"md2      ");
1014656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1015656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MDC2
1016656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"mdc2     ");
1017656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1018656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD4
1019656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"md4      ");
1020656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1021656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD5
1022656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"md5      ");
1023656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_HMAC
1024656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"hmac     ");
1025656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1026656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1027656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA1
1028656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"sha1     ");
1029656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1030656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA256
1031656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"sha256   ");
1032656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1033656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA512
1034656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"sha512   ");
1035656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1036221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_WHIRLPOOL
1037221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			BIO_printf(bio_err,"whirlpool");
1038221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
1039656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RIPEMD160
1040656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"rmd160");
1041656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1042656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_NO_MD2) || !defined(OPENSSL_NO_MDC2) || \
1043656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    !defined(OPENSSL_NO_MD4) || !defined(OPENSSL_NO_MD5) || \
1044221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom    !defined(OPENSSL_NO_SHA1) || !defined(OPENSSL_NO_RIPEMD160) || \
1045221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom    !defined(OPENSSL_NO_WHIRLPOOL)
1046656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"\n");
1047656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1048656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1049656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_IDEA
1050656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"idea-cbc ");
1051656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1052656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SEED
1053656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"seed-cbc ");
1054656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1055656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC2
1056656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"rc2-cbc  ");
1057656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1058656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC5
1059656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"rc5-cbc  ");
1060656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1061656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_BF
1062656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"bf-cbc");
1063656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1064656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_NO_IDEA) || !defined(OPENSSL_NO_SEED) || !defined(OPENSSL_NO_RC2) || \
1065656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    !defined(OPENSSL_NO_BF) || !defined(OPENSSL_NO_RC5)
1066656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"\n");
1067656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1068656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DES
1069656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"des-cbc  des-ede3 ");
1070656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1071656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
1072656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"aes-128-cbc aes-192-cbc aes-256-cbc ");
1073656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"aes-128-ige aes-192-ige aes-256-ige ");
1074656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1075656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
1076656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"\n");
1077656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"camellia-128-cbc camellia-192-cbc camellia-256-cbc ");
1078656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1079656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC4
1080656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"rc4");
1081656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1082656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"\n");
1083656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1084656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
1085656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"rsa512   rsa1024  rsa2048  rsa4096\n");
1086656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1087656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1088656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
1089656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"dsa512   dsa1024  dsa2048\n");
1090656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1091656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
1092656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"ecdsap160 ecdsap192 ecdsap224 ecdsap256 ecdsap384 ecdsap521\n");
1093656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"ecdsak163 ecdsak233 ecdsak283 ecdsak409 ecdsak571\n");
1094656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"ecdsab163 ecdsab233 ecdsab283 ecdsab409 ecdsab571\n");
1095656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"ecdsa\n");
1096656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1097656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
1098656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"ecdhp160  ecdhp192  ecdhp224  ecdhp256  ecdhp384  ecdhp521\n");
1099656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"ecdhk163  ecdhk233  ecdhk283  ecdhk409  ecdhk571\n");
1100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"ecdhb163  ecdhb233  ecdhb283  ecdhb409  ecdhb571\n");
1101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"ecdh\n");
1102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_IDEA
1105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"idea     ");
1106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SEED
1108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"seed     ");
1109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC2
1111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"rc2      ");
1112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DES
1114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"des      ");
1115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
1117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"aes      ");
1118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
1120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"camellia ");
1121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
1123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"rsa      ");
1124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_BF
1126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"blowfish");
1127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_NO_IDEA) || !defined(OPENSSL_NO_SEED) || \
1129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    !defined(OPENSSL_NO_RC2) || !defined(OPENSSL_NO_DES) || \
1130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    !defined(OPENSSL_NO_RSA) || !defined(OPENSSL_NO_BF) || \
1131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    !defined(OPENSSL_NO_AES) || !defined(OPENSSL_NO_CAMELLIA)
1132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"\n");
1133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"\n");
1136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"Available options:\n");
1137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(TIMES) || defined(USE_TOD)
1138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"-elapsed        measure time in real time instead of CPU user time.\n");
1139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ENGINE
1141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"-engine e       use engine e, possibly a hardware device.\n");
1142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"-evp e          use EVP e.\n");
1144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"-decrypt        time decryption instead of encryption (only EVP).\n");
1145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"-mr             produce machine readable output.\n");
114698d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#ifndef NO_FORK
1147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"-multi n        run n benchmarks in parallel.\n");
1148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			goto end;
1150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		argc--;
1152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		argv++;
1153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		j++;
1154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
115698d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#ifndef NO_FORK
1157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if(multi && do_multi(multi))
1158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		goto show_res;
1159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (j == 0)
1162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<ALGOR_NUM; i++)
1164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (i != D_EVP)
1166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				doit[i]=1;
1167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<RSA_NUM; i++)
1169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_doit[i]=1;
1170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<DSA_NUM; i++)
1171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			dsa_doit[i]=1;
1172221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_ECDSA
1173221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		for (i=0; i<EC_NUM; i++)
1174221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ecdsa_doit[i]=1;
1175221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
1176221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_ECDH
1177221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		for (i=0; i<EC_NUM; i++)
1178221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			ecdh_doit[i]=1;
1179221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
1180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<ALGOR_NUM; i++)
1182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (doit[i]) pr_header++;
1183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (usertime == 0 && !mr)
1185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		BIO_printf(bio_err,"You have chosen to measure elapsed time instead of user CPU time.\n");
1186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
1188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<RSA_NUM; i++)
1189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		const unsigned char *p;
1191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		p=rsa_data[i];
1193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		rsa_key[i]=d2i_RSAPrivateKey(NULL,&p,rsa_data_length[i]);
1194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (rsa_key[i] == NULL)
1195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"internal error loading RSA key number %d\n",i);
1197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			goto end;
1198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 0
1200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
1201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,mr ? "+RK:%d:"
1203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   : "Loaded RSA key, %d bit modulus and e= 0x",
1204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   BN_num_bits(rsa_key[i]->n));
1205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BN_print(bio_err,rsa_key[i]->e);
1206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"\n");
1207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
1213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dsa_key[0]=get_dsa512();
1214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dsa_key[1]=get_dsa1024();
1215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dsa_key[2]=get_dsa2048();
1216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DES
1219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_unchecked(&key,&sch);
1220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_unchecked(&key2,&sch2);
1221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_unchecked(&key3,&sch3);
1222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
1224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	AES_set_encrypt_key(key16,128,&aes_ks1);
1225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	AES_set_encrypt_key(key24,192,&aes_ks2);
1226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	AES_set_encrypt_key(key32,256,&aes_ks3);
1227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
1229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	Camellia_set_key(key16,128,&camellia_ks1);
1230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	Camellia_set_key(ckey24,192,&camellia_ks2);
1231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	Camellia_set_key(ckey32,256,&camellia_ks3);
1232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_IDEA
1234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	idea_set_encrypt_key(key16,&idea_ks);
1235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SEED
1237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	SEED_set_key(key16,&seed_ks);
1238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC4
1240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	RC4_set_key(&rc4_ks,16,key16);
1241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC2
1243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	RC2_set_key(&rc2_ks,16,key16,128);
1244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC5
1246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	RC5_32_set_key(&rc5_ks,16,key16,12);
1247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_BF
1249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BF_set_key(&bf_ks,16,key16);
1250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAST
1252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	CAST_set_key(&cast_ks,16,key16);
1253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
1255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	memset(rsa_c,0,sizeof(rsa_c));
1256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef SIGALRM
1258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DES
1259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIO_printf(bio_err,"First we calculate the approximate speed ...\n");
1260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	count=10;
1261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	do	{
1262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		long it;
1263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		count*=2;
1264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		Time_F(START);
1265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (it=count; it; it--)
1266976a034585c7e8ff9dda5ebe032f399b78887f70Brian Carlstrom			DES_ecb_encrypt((DES_cblock *)buf,
1267976a034585c7e8ff9dda5ebe032f399b78887f70Brian Carlstrom				(DES_cblock *)buf,
1268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				&sch,DES_ENCRYPT);
1269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		d=Time_F(STOP);
1270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		} while (d <3);
1271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	save_count=count;
1272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_MD2][0]=count/10;
1273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_MDC2][0]=count/10;
1274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_MD4][0]=count;
1275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_MD5][0]=count;
1276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_HMAC][0]=count;
1277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_SHA1][0]=count;
1278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_RMD160][0]=count;
1279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_RC4][0]=count*5;
1280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_DES][0]=count;
1281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_EDE3_DES][0]=count/3;
1282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_IDEA][0]=count;
1283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_SEED][0]=count;
1284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_RC2][0]=count;
1285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_RC5][0]=count;
1286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_BF][0]=count;
1287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_CAST][0]=count;
1288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_128_AES][0]=count;
1289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_192_AES][0]=count;
1290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_256_AES][0]=count;
1291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_128_CML][0]=count;
1292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_192_CML][0]=count;
1293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_CBC_256_CML][0]=count;
1294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_SHA256][0]=count;
1295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_SHA512][0]=count;
1296221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	c[D_WHIRLPOOL][0]=count;
1297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_IGE_128_AES][0]=count;
1298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_IGE_192_AES][0]=count;
1299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	c[D_IGE_256_AES][0]=count;
1300392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	c[D_GHASH][0]=count;
1301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=1; i<SIZE_NUM; i++)
1303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_MD2][i]=c[D_MD2][0]*4*lengths[0]/lengths[i];
1305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_MDC2][i]=c[D_MDC2][0]*4*lengths[0]/lengths[i];
1306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_MD4][i]=c[D_MD4][0]*4*lengths[0]/lengths[i];
1307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_MD5][i]=c[D_MD5][0]*4*lengths[0]/lengths[i];
1308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_HMAC][i]=c[D_HMAC][0]*4*lengths[0]/lengths[i];
1309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_SHA1][i]=c[D_SHA1][0]*4*lengths[0]/lengths[i];
1310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_RMD160][i]=c[D_RMD160][0]*4*lengths[0]/lengths[i];
1311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_SHA256][i]=c[D_SHA256][0]*4*lengths[0]/lengths[i];
1312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_SHA512][i]=c[D_SHA512][0]*4*lengths[0]/lengths[i];
1313221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		c[D_WHIRLPOOL][i]=c[D_WHIRLPOOL][0]*4*lengths[0]/lengths[i];
1314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=1; i<SIZE_NUM; i++)
1316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		long l0,l1;
1318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		l0=(long)lengths[i-1];
1320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		l1=(long)lengths[i];
1321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_RC4][i]=c[D_RC4][i-1]*l0/l1;
1322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_DES][i]=c[D_CBC_DES][i-1]*l0/l1;
1323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_EDE3_DES][i]=c[D_EDE3_DES][i-1]*l0/l1;
1324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_IDEA][i]=c[D_CBC_IDEA][i-1]*l0/l1;
1325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_SEED][i]=c[D_CBC_SEED][i-1]*l0/l1;
1326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_RC2][i]=c[D_CBC_RC2][i-1]*l0/l1;
1327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_RC5][i]=c[D_CBC_RC5][i-1]*l0/l1;
1328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_BF][i]=c[D_CBC_BF][i-1]*l0/l1;
1329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_CAST][i]=c[D_CBC_CAST][i-1]*l0/l1;
1330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_128_AES][i]=c[D_CBC_128_AES][i-1]*l0/l1;
1331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_192_AES][i]=c[D_CBC_192_AES][i-1]*l0/l1;
1332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_256_AES][i]=c[D_CBC_256_AES][i-1]*l0/l1;
1333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 		c[D_CBC_128_CML][i]=c[D_CBC_128_CML][i-1]*l0/l1;
1334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_192_CML][i]=c[D_CBC_192_CML][i-1]*l0/l1;
1335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_CBC_256_CML][i]=c[D_CBC_256_CML][i-1]*l0/l1;
1336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_IGE_128_AES][i]=c[D_IGE_128_AES][i-1]*l0/l1;
1337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_IGE_192_AES][i]=c[D_IGE_192_AES][i-1]*l0/l1;
1338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		c[D_IGE_256_AES][i]=c[D_IGE_256_AES][i-1]*l0/l1;
1339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
1341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rsa_c[R_RSA_512][0]=count/2000;
1342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rsa_c[R_RSA_512][1]=count/400;
1343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=1; i<RSA_NUM; i++)
1344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		rsa_c[i][0]=rsa_c[i-1][0]/8;
1346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		rsa_c[i][1]=rsa_c[i-1][1]/4;
1347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((rsa_doit[i] <= 1) && (rsa_c[i][0] == 0))
1348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_doit[i]=0;
1349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
1350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (rsa_c[i][0] == 0)
1352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_c[i][0]=1;
1354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_c[i][1]=20;
1355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
1356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
1361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dsa_c[R_DSA_512][0]=count/1000;
1362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dsa_c[R_DSA_512][1]=count/1000/2;
1363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=1; i<DSA_NUM; i++)
1364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		dsa_c[i][0]=dsa_c[i-1][0]/4;
1366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		dsa_c[i][1]=dsa_c[i-1][1]/4;
1367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((dsa_doit[i] <= 1) && (dsa_c[i][0] == 0))
1368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			dsa_doit[i]=0;
1369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
1370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (dsa_c[i] == 0)
1372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				dsa_c[i][0]=1;
1374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				dsa_c[i][1]=1;
1375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
1376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
1381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdsa_c[R_EC_P160][0]=count/1000;
1382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdsa_c[R_EC_P160][1]=count/1000/2;
1383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=R_EC_P192; i<=R_EC_P521; i++)
1384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdsa_c[i][0]=ecdsa_c[i-1][0]/2;
1386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdsa_c[i][1]=ecdsa_c[i-1][1]/2;
1387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((ecdsa_doit[i] <= 1) && (ecdsa_c[i][0] == 0))
1388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ecdsa_doit[i]=0;
1389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
1390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (ecdsa_c[i] == 0)
1392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_c[i][0]=1;
1394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_c[i][1]=1;
1395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
1396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdsa_c[R_EC_K163][0]=count/1000;
1399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdsa_c[R_EC_K163][1]=count/1000/2;
1400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=R_EC_K233; i<=R_EC_K571; i++)
1401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdsa_c[i][0]=ecdsa_c[i-1][0]/2;
1403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdsa_c[i][1]=ecdsa_c[i-1][1]/2;
1404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((ecdsa_doit[i] <= 1) && (ecdsa_c[i][0] == 0))
1405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ecdsa_doit[i]=0;
1406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
1407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (ecdsa_c[i] == 0)
1409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_c[i][0]=1;
1411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_c[i][1]=1;
1412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
1413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdsa_c[R_EC_B163][0]=count/1000;
1416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdsa_c[R_EC_B163][1]=count/1000/2;
1417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=R_EC_B233; i<=R_EC_B571; i++)
1418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdsa_c[i][0]=ecdsa_c[i-1][0]/2;
1420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdsa_c[i][1]=ecdsa_c[i-1][1]/2;
1421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((ecdsa_doit[i] <= 1) && (ecdsa_c[i][0] == 0))
1422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ecdsa_doit[i]=0;
1423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
1424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (ecdsa_c[i] == 0)
1426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_c[i][0]=1;
1428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_c[i][1]=1;
1429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
1430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
1435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdh_c[R_EC_P160][0]=count/1000;
1436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdh_c[R_EC_P160][1]=count/1000;
1437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=R_EC_P192; i<=R_EC_P521; i++)
1438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_c[i][0]=ecdh_c[i-1][0]/2;
1440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_c[i][1]=ecdh_c[i-1][1]/2;
1441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((ecdh_doit[i] <= 1) && (ecdh_c[i][0] == 0))
1442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ecdh_doit[i]=0;
1443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
1444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (ecdh_c[i] == 0)
1446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_c[i][0]=1;
1448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_c[i][1]=1;
1449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
1450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdh_c[R_EC_K163][0]=count/1000;
1453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdh_c[R_EC_K163][1]=count/1000;
1454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=R_EC_K233; i<=R_EC_K571; i++)
1455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_c[i][0]=ecdh_c[i-1][0]/2;
1457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_c[i][1]=ecdh_c[i-1][1]/2;
1458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((ecdh_doit[i] <= 1) && (ecdh_c[i][0] == 0))
1459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ecdh_doit[i]=0;
1460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
1461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (ecdh_c[i] == 0)
1463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_c[i][0]=1;
1465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_c[i][1]=1;
1466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
1467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdh_c[R_EC_B163][0]=count/1000;
1470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ecdh_c[R_EC_B163][1]=count/1000;
1471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=R_EC_B233; i<=R_EC_B571; i++)
1472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_c[i][0]=ecdh_c[i-1][0]/2;
1474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_c[i][1]=ecdh_c[i-1][1]/2;
1475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((ecdh_doit[i] <= 1) && (ecdh_c[i][0] == 0))
1476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ecdh_doit[i]=0;
1477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
1478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (ecdh_c[i] == 0)
1480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_c[i][0]=1;
1482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_c[i][1]=1;
1483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
1484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COND(d)	(count < (d))
1489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COUNT(d) (d)
1490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
1491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* not worth fixing */
1492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# error "You cannot disable DES on systems without SIGALRM."
1493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* OPENSSL_NO_DES */
1494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
1495392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#define COND(c)	(run && count<0x7fffffff)
1496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COUNT(d) (count)
1497221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef _WIN32
1498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	signal(SIGALRM,sig_done);
1499221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
1500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* SIGALRM */
1501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD2
1503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_MD2])
1504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_MD2],c[D_MD2][j],lengths[j]);
1508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_MD2][j]); count++)
1510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EVP_Digest(buf,(unsigned long)lengths[j],&(md2[0]),NULL,EVP_md2(),NULL);
1511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_MD2,j,count,d);
1513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MDC2
1517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_MDC2])
1518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_MDC2],c[D_MDC2][j],lengths[j]);
1522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_MDC2][j]); count++)
1524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EVP_Digest(buf,(unsigned long)lengths[j],&(mdc2[0]),NULL,EVP_mdc2(),NULL);
1525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_MDC2,j,count,d);
1527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD4
1532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_MD4])
1533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_MD4],c[D_MD4][j],lengths[j]);
1537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_MD4][j]); count++)
1539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EVP_Digest(&(buf[0]),(unsigned long)lengths[j],&(md4[0]),NULL,EVP_md4(),NULL);
1540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_MD4,j,count,d);
1542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD5
1547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_MD5])
1548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_MD5],c[D_MD5][j],lengths[j]);
1552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_MD5][j]); count++)
1554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EVP_Digest(&(buf[0]),(unsigned long)lengths[j],&(md5[0]),NULL,EVP_get_digestbyname("md5"),NULL);
1555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_MD5,j,count,d);
1557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_NO_MD5) && !defined(OPENSSL_NO_HMAC)
1562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_HMAC])
1563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		HMAC_CTX hctx;
1565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		HMAC_CTX_init(&hctx);
1567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		HMAC_Init_ex(&hctx,(unsigned char *)"This is a key...",
1568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			16,EVP_md5(), NULL);
1569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_HMAC],c[D_HMAC][j],lengths[j]);
1573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_HMAC][j]); count++)
1575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				HMAC_Init_ex(&hctx,NULL,0,NULL,NULL);
1577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				HMAC_Update(&hctx,buf,lengths[j]);
1578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				HMAC_Final(&hctx,&(hmac[0]),NULL);
1579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
1580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_HMAC,j,count,d);
1582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		HMAC_CTX_cleanup(&hctx);
1584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA
1587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_SHA1])
1588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_SHA1],c[D_SHA1][j],lengths[j]);
1592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_SHA1][j]); count++)
1594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EVP_Digest(buf,(unsigned long)lengths[j],&(sha[0]),NULL,EVP_sha1(),NULL);
1595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_SHA1,j,count,d);
1597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA256
1601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_SHA256])
1602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_SHA256],c[D_SHA256][j],lengths[j]);
1606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_SHA256][j]); count++)
1608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SHA256(buf,lengths[j],sha256);
1609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_SHA256,j,count,d);
1611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SHA512
1616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_SHA512])
1617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_SHA512],c[D_SHA512][j],lengths[j]);
1621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_SHA512][j]); count++)
1623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SHA512(buf,lengths[j],sha512);
1624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_SHA512,j,count,d);
1626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1629221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
1630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1631221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_WHIRLPOOL
1632221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (doit[D_WHIRLPOOL])
1633221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		{
1634221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		for (j=0; j<SIZE_NUM; j++)
1635221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			{
1636221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			print_message(names[D_WHIRLPOOL],c[D_WHIRLPOOL][j],lengths[j]);
1637221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			Time_F(START);
1638221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			for (count=0,run=1; COND(c[D_WHIRLPOOL][j]); count++)
1639221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom				WHIRLPOOL(buf,lengths[j],whirlpool);
1640221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			d=Time_F(STOP);
1641221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			print_result(D_WHIRLPOOL,j,count,d);
1642221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			}
1643221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		}
1644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1645221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RIPEMD
1647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_RMD160])
1648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_RMD160],c[D_RMD160][j],lengths[j]);
1652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_RMD160][j]); count++)
1654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EVP_Digest(buf,(unsigned long)lengths[j],&(rmd160[0]),NULL,EVP_ripemd160(),NULL);
1655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_RMD160,j,count,d);
1657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC4
1661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_RC4])
1662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_RC4],c[D_RC4][j],lengths[j]);
1666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_RC4][j]); count++)
1668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				RC4(&rc4_ks,(unsigned int)lengths[j],
1669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					buf,buf);
1670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_RC4,j,count,d);
1672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DES
1676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_DES])
1677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_DES],c[D_CBC_DES][j],lengths[j]);
1681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_DES][j]); count++)
1683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				DES_ncbc_encrypt(buf,buf,lengths[j],&sch,
1684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						 &DES_iv,DES_ENCRYPT);
1685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_DES,j,count,d);
1687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1689656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_EDE3_DES])
1691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_EDE3_DES],c[D_EDE3_DES][j],lengths[j]);
1695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_EDE3_DES][j]); count++)
1697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				DES_ede3_cbc_encrypt(buf,buf,lengths[j],
1698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						     &sch,&sch2,&sch3,
1699656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						     &DES_iv,DES_ENCRYPT);
1700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_EDE3_DES,j,count,d);
1702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
1706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_128_AES])
1707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1709656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1710656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_128_AES],c[D_CBC_128_AES][j],lengths[j]);
1711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1712656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_128_AES][j]); count++)
1713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				AES_cbc_encrypt(buf,buf,
1714656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&aes_ks1,
1715656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,AES_ENCRYPT);
1716656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1717656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_128_AES,j,count,d);
1718656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1719656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1720656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_192_AES])
1721656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1722656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1723656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_192_AES],c[D_CBC_192_AES][j],lengths[j]);
1725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_192_AES][j]); count++)
1727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				AES_cbc_encrypt(buf,buf,
1728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&aes_ks2,
1729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,AES_ENCRYPT);
1730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1731656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_192_AES,j,count,d);
1732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1733656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1734656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_256_AES])
1735656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1737656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_256_AES],c[D_CBC_256_AES][j],lengths[j]);
1739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_256_AES][j]); count++)
1741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				AES_cbc_encrypt(buf,buf,
1742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&aes_ks3,
1743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,AES_ENCRYPT);
1744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_256_AES,j,count,d);
1746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1749656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 0 /* ANDROID */
1750656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_IGE_128_AES])
1751656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1753656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1754656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_IGE_128_AES],c[D_IGE_128_AES][j],lengths[j]);
1755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_IGE_128_AES][j]); count++)
1757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				AES_ige_encrypt(buf,buf2,
1758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&aes_ks1,
1759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,AES_ENCRYPT);
1760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_IGE_128_AES,j,count,d);
1762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1763656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1764656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_IGE_192_AES])
1765656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1766656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1767656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_IGE_192_AES],c[D_IGE_192_AES][j],lengths[j]);
1769656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_IGE_192_AES][j]); count++)
1771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				AES_ige_encrypt(buf,buf2,
1772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&aes_ks2,
1773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,AES_ENCRYPT);
1774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_IGE_192_AES,j,count,d);
1776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_IGE_256_AES])
1779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_IGE_256_AES],c[D_IGE_256_AES][j],lengths[j]);
1783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_IGE_256_AES][j]); count++)
1785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				AES_ige_encrypt(buf,buf2,
1786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&aes_ks3,
1787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,AES_ENCRYPT);
1788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_IGE_256_AES,j,count,d);
1790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1792392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	if (doit[D_GHASH])
1793392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		{
1794392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		GCM128_CONTEXT *ctx = CRYPTO_gcm128_new(&aes_ks1,(block128_f)AES_encrypt);
1795392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		CRYPTO_gcm128_setiv (ctx,(unsigned char *)"0123456789ab",12);
1796221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1797392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		for (j=0; j<SIZE_NUM; j++)
1798392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			{
1799392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			print_message(names[D_GHASH],c[D_GHASH][j],lengths[j]);
1800392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			Time_F(START);
1801392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			for (count=0,run=1; COND(c[D_GHASH][j]); count++)
1802392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom				CRYPTO_gcm128_aad(ctx,buf,lengths[j]);
1803392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			d=Time_F(STOP);
1804392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			print_result(D_GHASH,j,count,d);
1805392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			}
1806392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		CRYPTO_gcm128_release(ctx);
1807392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		}
1808221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
1809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAMELLIA
1812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_128_CML])
1813656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1815656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1816656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_128_CML],c[D_CBC_128_CML][j],lengths[j]);
1817656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_128_CML][j]); count++)
1819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				Camellia_cbc_encrypt(buf,buf,
1820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				        (unsigned long)lengths[j],&camellia_ks1,
1821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				        iv,CAMELLIA_ENCRYPT);
1822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_128_CML,j,count,d);
1824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_192_CML])
1827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_192_CML],c[D_CBC_192_CML][j],lengths[j]);
1831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1832656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_192_CML][j]); count++)
1833656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				Camellia_cbc_encrypt(buf,buf,
1834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				        (unsigned long)lengths[j],&camellia_ks2,
1835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				        iv,CAMELLIA_ENCRYPT);
1836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_192_CML,j,count,d);
1838656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1839656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1840656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_256_CML])
1841656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_256_CML],c[D_CBC_256_CML][j],lengths[j]);
1845656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1846656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_256_CML][j]); count++)
1847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				Camellia_cbc_encrypt(buf,buf,
1848656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				        (unsigned long)lengths[j],&camellia_ks3,
1849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				        iv,CAMELLIA_ENCRYPT);
1850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_256_CML,j,count,d);
1852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1853656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1855656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_IDEA
1857656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_IDEA])
1858656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1861656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_IDEA],c[D_CBC_IDEA][j],lengths[j]);
1862656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1863656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_IDEA][j]); count++)
1864656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				idea_cbc_encrypt(buf,buf,
1865656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&idea_ks,
1866656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,IDEA_ENCRYPT);
1867656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1868656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_IDEA,j,count,d);
1869656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1870656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1871656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1872656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_SEED
1873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_SEED])
1874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1876656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1877656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_SEED],c[D_CBC_SEED][j],lengths[j]);
1878656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1879656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_SEED][j]); count++)
1880656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				SEED_cbc_encrypt(buf,buf,
1881656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&seed_ks,iv,1);
1882656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1883656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_SEED,j,count,d);
1884656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1885656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1886656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1887656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC2
1888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_RC2])
1889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1892656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_RC2],c[D_CBC_RC2][j],lengths[j]);
1893656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1894656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_RC2][j]); count++)
1895656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				RC2_cbc_encrypt(buf,buf,
1896656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&rc2_ks,
1897656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,RC2_ENCRYPT);
1898656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1899656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_RC2,j,count,d);
1900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1901656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1903656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC5
1904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_RC5])
1905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1908656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_RC5],c[D_CBC_RC5][j],lengths[j]);
1909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1910656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_RC5][j]); count++)
1911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				RC5_32_cbc_encrypt(buf,buf,
1912656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&rc5_ks,
1913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,RC5_ENCRYPT);
1914656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_RC5,j,count,d);
1916656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1917656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1918656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1919656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_BF
1920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_BF])
1921656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1922656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1924656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_BF],c[D_CBC_BF][j],lengths[j]);
1925656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1926656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_BF][j]); count++)
1927656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BF_cbc_encrypt(buf,buf,
1928656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&bf_ks,
1929656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,BF_ENCRYPT);
1930656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1931656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_BF,j,count,d);
1932656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1933656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_CAST
1936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_CBC_CAST])
1937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1938656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_message(names[D_CBC_CAST],c[D_CBC_CAST][j],lengths[j]);
1941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
1942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(c[D_CBC_CAST][j]); count++)
1943656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				CAST_cbc_encrypt(buf,buf,
1944656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					(unsigned long)lengths[j],&cast_ks,
1945656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					iv,CAST_ENCRYPT);
1946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
1947656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_CBC_CAST,j,count,d);
1948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
1949656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
1950656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
1951656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (doit[D_EVP])
1953656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
1954656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
1955656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
1956656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (evp_cipher)
1957656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1958656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EVP_CIPHER_CTX ctx;
1959656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int outl;
1960656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				names[D_EVP]=OBJ_nid2ln(evp_cipher->nid);
1962656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				/* -O3 -fschedule-insns messes up an
1963656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				 * optimization here!  names[D_EVP]
1964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				 * somehow becomes NULL */
1965656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				print_message(names[D_EVP],save_count,
1966656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					lengths[j]);
1967656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1968656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EVP_CIPHER_CTX_init(&ctx);
1969656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(decrypt)
1970656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					EVP_DecryptInit_ex(&ctx,evp_cipher,NULL,key16,iv);
1971656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
1972656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					EVP_EncryptInit_ex(&ctx,evp_cipher,NULL,key16,iv);
1973656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EVP_CIPHER_CTX_set_padding(&ctx, 0);
1974656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1975656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				Time_F(START);
1976656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(decrypt)
1977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					for (count=0,run=1; COND(save_count*4*lengths[0]/lengths[j]); count++)
1978656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						EVP_DecryptUpdate(&ctx,buf,&outl,buf,lengths[j]);
1979656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
1980656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					for (count=0,run=1; COND(save_count*4*lengths[0]/lengths[j]); count++)
1981656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						EVP_EncryptUpdate(&ctx,buf,&outl,buf,lengths[j]);
1982656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(decrypt)
1983656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					EVP_DecryptFinal_ex(&ctx,buf,&outl);
1984656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
1985656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					EVP_EncryptFinal_ex(&ctx,buf,&outl);
1986656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=Time_F(STOP);
1987656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				EVP_CIPHER_CTX_cleanup(&ctx);
1988656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
1989656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (evp_md)
1990656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
1991656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				names[D_EVP]=OBJ_nid2ln(evp_md->type);
1992656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				print_message(names[D_EVP],save_count,
1993656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					lengths[j]);
1994656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1995656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				Time_F(START);
1996656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				for (count=0,run=1; COND(save_count*4*lengths[0]/lengths[j]); count++)
1997656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					EVP_Digest(buf,lengths[j],&(md[0]),NULL,evp_md,NULL);
1998656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1999656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=Time_F(STOP);
2000656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2001656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print_result(D_EVP,j,count,d);
2002656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2003656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2004656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2005656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	RAND_pseudo_bytes(buf,36);
2006656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
2007656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (j=0; j<RSA_NUM; j++)
2008656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2009656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		int ret;
2010656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!rsa_doit[j]) continue;
2011656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=RSA_sign(NID_md5_sha1, buf,36, buf2, &rsa_num, rsa_key[j]);
2012656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ret == 0)
2013656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2014656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"RSA sign failure.  No RSA sign will be done.\n");
2015656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ERR_print_errors(bio_err);
2016656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_count=1;
2017656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2018656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2019656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2020656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			pkey_print_message("private","rsa",
2021656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_c[j][0],rsa_bits[j],
2022656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				RSA_SECONDS);
2023656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*			RSA_blinding_on(rsa_key[j],NULL); */
2024656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
2025656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(rsa_c[j][0]); count++)
2026656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2027656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ret=RSA_sign(NID_md5_sha1, buf,36, buf2,
2028656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					&rsa_num, rsa_key[j]);
2029656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if (ret == 0)
2030656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2031656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					BIO_printf(bio_err,
2032656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						"RSA sign failure\n");
2033656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ERR_print_errors(bio_err);
2034656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					count=1;
2035656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					break;
2036656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2037656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2038656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
2039656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,mr ? "+R1:%ld:%d:%.2f\n"
2040656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   : "%ld %d bit private RSA's in %.2fs\n",
2041656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   count,rsa_bits[j],d);
2042656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_results[j][0]=d/(double)count;
2043656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_count=count;
2044656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2045656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2046656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 1
2047656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=RSA_verify(NID_md5_sha1, buf,36, buf2, rsa_num, rsa_key[j]);
2048656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ret <= 0)
2049656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2050656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"RSA verify failure.  No RSA verify will be done.\n");
2051656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ERR_print_errors(bio_err);
2052656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_doit[j] = 0;
2053656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2054656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2055656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2056656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			pkey_print_message("public","rsa",
2057656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_c[j][1],rsa_bits[j],
2058656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				RSA_SECONDS);
2059656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
2060656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(rsa_c[j][1]); count++)
2061656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2062656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ret=RSA_verify(NID_md5_sha1, buf,36, buf2,
2063656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					rsa_num, rsa_key[j]);
2064656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if (ret <= 0)
2065656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2066656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					BIO_printf(bio_err,
2067656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						"RSA verify failure\n");
2068656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ERR_print_errors(bio_err);
2069656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					count=1;
2070656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					break;
2071656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2072656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2073656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
2074656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,mr ? "+R2:%ld:%d:%.2f\n"
2075656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   : "%ld %d bit public RSA's in %.2fs\n",
2076656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   count,rsa_bits[j],d);
2077656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_results[j][1]=d/(double)count;
2078656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2079656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2080656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2081656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (rsa_count <= 1)
2082656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2083656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			/* if longer than 10s, don't do any more */
2084656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (j++; j<RSA_NUM; j++)
2085656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_doit[j]=0;
2086656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2087656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2088656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2089656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2090656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	RAND_pseudo_bytes(buf,20);
2091656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
2092656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (RAND_status() != 1)
2093656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2094656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		RAND_seed(rnd_seed, sizeof rnd_seed);
2095656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		rnd_fake = 1;
2096656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2097656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (j=0; j<DSA_NUM; j++)
2098656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2099656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		unsigned int kk;
2100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		int ret;
2101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!dsa_doit[j]) continue;
2103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*		DSA_generate_key(dsa_key[j]); */
2104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*		DSA_sign_setup(dsa_key[j],NULL); */
2105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=DSA_sign(EVP_PKEY_DSA,buf,20,buf2,
2106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			&kk,dsa_key[j]);
2107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ret == 0)
2108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"DSA sign failure.  No DSA sign will be done.\n");
2110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ERR_print_errors(bio_err);
2111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_count=1;
2112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			pkey_print_message("sign","dsa",
2116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				dsa_c[j][0],dsa_bits[j],
2117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				DSA_SECONDS);
2118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
2119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(dsa_c[j][0]); count++)
2120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ret=DSA_sign(EVP_PKEY_DSA,buf,20,buf2,
2122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					&kk,dsa_key[j]);
2123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if (ret == 0)
2124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					BIO_printf(bio_err,
2126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						"DSA sign failure\n");
2127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ERR_print_errors(bio_err);
2128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					count=1;
2129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					break;
2130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
2133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,mr ? "+R3:%ld:%d:%.2f\n"
2134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   : "%ld %d bit DSA signs in %.2fs\n",
2135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   count,dsa_bits[j],d);
2136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			dsa_results[j][0]=d/(double)count;
2137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_count=count;
2138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=DSA_verify(EVP_PKEY_DSA,buf,20,buf2,
2141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			kk,dsa_key[j]);
2142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ret <= 0)
2143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"DSA verify failure.  No DSA verify will be done.\n");
2145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ERR_print_errors(bio_err);
2146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			dsa_doit[j] = 0;
2147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			pkey_print_message("verify","dsa",
2151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				dsa_c[j][1],dsa_bits[j],
2152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				DSA_SECONDS);
2153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			Time_F(START);
2154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (count=0,run=1; COND(dsa_c[j][1]); count++)
2155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ret=DSA_verify(EVP_PKEY_DSA,buf,20,buf2,
2157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					kk,dsa_key[j]);
2158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if (ret <= 0)
2159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					BIO_printf(bio_err,
2161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						"DSA verify failure\n");
2162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ERR_print_errors(bio_err);
2163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					count=1;
2164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					break;
2165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			d=Time_F(STOP);
2168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,mr ? "+R4:%ld:%d:%.2f\n"
2169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   : "%ld %d bit DSA verify in %.2fs\n",
2170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   count,dsa_bits[j],d);
2171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			dsa_results[j][1]=d/(double)count;
2172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (rsa_count <= 1)
2175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			/* if longer than 10s, don't do any more */
2177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (j++; j<DSA_NUM; j++)
2178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				dsa_doit[j]=0;
2179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (rnd_fake) RAND_cleanup();
2182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
2185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (RAND_status() != 1)
2186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		RAND_seed(rnd_seed, sizeof rnd_seed);
2188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		rnd_fake = 1;
2189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (j=0; j<EC_NUM; j++)
2191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		int ret;
2193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!ecdsa_doit[j]) continue; /* Ignore Curve */
2195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdsa[j] = EC_KEY_new_by_curve_name(test_curves[j]);
2196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ecdsa[j] == NULL)
2197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"ECDSA failure.\n");
2199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ERR_print_errors(bio_err);
2200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_count=1;
2201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 1
2205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			EC_KEY_precompute_mult(ecdsa[j], NULL);
2206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			/* Perform ECDSA signature test */
2208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			EC_KEY_generate_key(ecdsa[j]);
2209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ret = ECDSA_sign(0, buf, 20, ecdsasig,
2210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				&ecdsasiglen, ecdsa[j]);
2211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (ret == 0)
2212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err,"ECDSA sign failure.  No ECDSA sign will be done.\n");
2214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ERR_print_errors(bio_err);
2215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_count=1;
2216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else
2218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				pkey_print_message("sign","ecdsa",
2220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdsa_c[j][0],
2221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					test_curves_bits[j],
2222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ECDSA_SECONDS);
2223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				Time_F(START);
2225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				for (count=0,run=1; COND(ecdsa_c[j][0]);
2226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					count++)
2227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ret=ECDSA_sign(0, buf, 20,
2229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						ecdsasig, &ecdsasiglen,
2230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						ecdsa[j]);
2231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					if (ret == 0)
2232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						{
2233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						BIO_printf(bio_err, "ECDSA sign failure\n");
2234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						ERR_print_errors(bio_err);
2235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						count=1;
2236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						break;
2237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						}
2238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=Time_F(STOP);
2240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err, mr ? "+R5:%ld:%d:%.2f\n" :
2242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					"%ld %d bit ECDSA signs in %.2fs \n",
2243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					count, test_curves_bits[j], d);
2244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_results[j][0]=d/(double)count;
2245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_count=count;
2246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			/* Perform ECDSA verification test */
2249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ret=ECDSA_verify(0, buf, 20, ecdsasig,
2250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsasiglen, ecdsa[j]);
2251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (ret != 1)
2252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err,"ECDSA verify failure.  No ECDSA verify will be done.\n");
2254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ERR_print_errors(bio_err);
2255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_doit[j] = 0;
2256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else
2258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				pkey_print_message("verify","ecdsa",
2260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_c[j][1],
2261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				test_curves_bits[j],
2262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ECDSA_SECONDS);
2263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				Time_F(START);
2264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				for (count=0,run=1; COND(ecdsa_c[j][1]); count++)
2265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ret=ECDSA_verify(0, buf, 20, ecdsasig, ecdsasiglen, ecdsa[j]);
2267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					if (ret != 1)
2268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						{
2269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						BIO_printf(bio_err, "ECDSA verify failure\n");
2270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						ERR_print_errors(bio_err);
2271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						count=1;
2272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						break;
2273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						}
2274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=Time_F(STOP);
2276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err, mr? "+R6:%ld:%d:%.2f\n"
2277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						: "%ld %d bit ECDSA verify in %.2fs\n",
2278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				count, test_curves_bits[j], d);
2279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_results[j][1]=d/(double)count;
2280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (rsa_count <= 1)
2283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				/* if longer than 10s, don't do any more */
2285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				for (j++; j<EC_NUM; j++)
2286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_doit[j]=0;
2287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (rnd_fake) RAND_cleanup();
2291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
2294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (RAND_status() != 1)
2295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		RAND_seed(rnd_seed, sizeof rnd_seed);
2297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		rnd_fake = 1;
2298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (j=0; j<EC_NUM; j++)
2300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!ecdh_doit[j]) continue;
2302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_a[j] = EC_KEY_new_by_curve_name(test_curves[j]);
2303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ecdh_b[j] = EC_KEY_new_by_curve_name(test_curves[j]);
2304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ((ecdh_a[j] == NULL) || (ecdh_b[j] == NULL))
2305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			BIO_printf(bio_err,"ECDH failure.\n");
2307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ERR_print_errors(bio_err);
2308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			rsa_count=1;
2309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			/* generate two ECDH key pairs */
2313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (!EC_KEY_generate_key(ecdh_a[j]) ||
2314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				!EC_KEY_generate_key(ecdh_b[j]))
2315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err,"ECDH key generation failure.\n");
2317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ERR_print_errors(bio_err);
2318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_count=1;
2319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else
2321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				/* If field size is not more than 24 octets, then use SHA-1 hash of result;
2323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				 * otherwise, use result (see section 4.8 of draft-ietf-tls-ecc-03.txt).
2324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				 */
2325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int field_size, outlen;
2326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				void *(*kdf)(const void *in, size_t inlen, void *out, size_t *xoutlen);
2327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				field_size = EC_GROUP_get_degree(EC_KEY_get0_group(ecdh_a[j]));
2328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if (field_size <= 24 * 8)
2329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					outlen = KDF1_SHA1_len;
2331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					kdf = KDF1_SHA1;
2332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					outlen = (field_size+7)/8;
2336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					kdf = NULL;
2337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				secret_size_a = ECDH_compute_key(secret_a, outlen,
2339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					EC_KEY_get0_public_key(ecdh_b[j]),
2340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdh_a[j], kdf);
2341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				secret_size_b = ECDH_compute_key(secret_b, outlen,
2342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					EC_KEY_get0_public_key(ecdh_a[j]),
2343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdh_b[j], kdf);
2344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if (secret_size_a != secret_size_b)
2345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdh_checks = 0;
2346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdh_checks = 1;
2348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				for (secret_idx = 0;
2350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				    (secret_idx < secret_size_a)
2351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					&& (ecdh_checks == 1);
2352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				    secret_idx++)
2353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					if (secret_a[secret_idx] != secret_b[secret_idx])
2355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdh_checks = 0;
2356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if (ecdh_checks == 0)
2359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					BIO_printf(bio_err,"ECDH computations don't match.\n");
2361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ERR_print_errors(bio_err);
2362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					rsa_count=1;
2363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				pkey_print_message("","ecdh",
2366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_c[j][0],
2367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				test_curves_bits[j],
2368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ECDH_SECONDS);
2369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				Time_F(START);
2370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				for (count=0,run=1; COND(ecdh_c[j][0]); count++)
2371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					{
2372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ECDH_compute_key(secret_a, outlen,
2373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					EC_KEY_get0_public_key(ecdh_b[j]),
2374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdh_a[j], kdf);
2375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					}
2376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=Time_F(STOP);
2377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				BIO_printf(bio_err, mr ? "+R7:%ld:%d:%.2f\n" :"%ld %d-bit ECDH ops in %.2fs\n",
2378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				count, test_curves_bits[j], d);
2379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_results[j][0]=d/(double)count;
2380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_count=count;
2381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (rsa_count <= 1)
2386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			/* if longer than 10s, don't do any more */
2388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			for (j++; j<EC_NUM; j++)
2389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			ecdh_doit[j]=0;
2390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (rnd_fake) RAND_cleanup();
2393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
239498d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#ifndef NO_FORK
2395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectshow_res:
2396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if(!mr)
2398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		fprintf(stdout,"%s\n",SSLeay_version(SSLEAY_VERSION));
2400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        fprintf(stdout,"%s\n",SSLeay_version(SSLEAY_BUILT_ON));
2401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("options:");
2402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("%s ",BN_options());
2403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_MD2
2404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("%s ",MD2_options());
2405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RC4
2407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("%s ",RC4_options());
2408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DES
2410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("%s ",DES_options());
2411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_AES
2413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("%s ",AES_options());
2414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_IDEA
2416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("%s ",idea_options());
2417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_BF
2419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("%s ",BF_options());
2420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		fprintf(stdout,"\n%s\n",SSLeay_version(SSLEAY_CFLAGS));
2422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (pr_header)
2425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if(mr)
2427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"+H");
2428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"The 'numbers' are in 1000s of bytes per second processed.\n");
2431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"type        ");
2432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0;  j<SIZE_NUM; j++)
2434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,mr ? ":%d" : "%7d bytes",lengths[j]);
2435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		fprintf(stdout,"\n");
2436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (k=0; k<ALGOR_NUM; k++)
2439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!doit[k]) continue;
2441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if(mr)
2442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"+F:%d:%s",k,names[k]);
2443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"%-13s",names[k]);
2445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (j=0; j<SIZE_NUM; j++)
2446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (results[k][j] > 10000 && !mr)
2448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				fprintf(stdout," %11.2fk",results[k][j]/1e3);
2449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else
2450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				fprintf(stdout,mr ? ":%.2f" : " %11.2f ",results[k][j]);
2451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		fprintf(stdout,"\n");
2453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
2455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	j=1;
2456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (k=0; k<RSA_NUM; k++)
2457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!rsa_doit[k]) continue;
2459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (j && !mr)
2460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("%18ssign    verify    sign/s verify/s\n"," ");
2462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j=0;
2463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if(mr)
2465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"+F2:%u:%u:%f:%f\n",
2466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				k,rsa_bits[k],rsa_results[k][0],
2467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_results[k][1]);
2468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"rsa %4u bits %8.6fs %8.6fs %8.1f %8.1f\n",
2470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				rsa_bits[k],rsa_results[k][0],rsa_results[k][1],
2471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				1.0/rsa_results[k][0],1.0/rsa_results[k][1]);
2472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
2475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	j=1;
2476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (k=0; k<DSA_NUM; k++)
2477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!dsa_doit[k]) continue;
2479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (j && !mr)
2480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("%18ssign    verify    sign/s verify/s\n"," ");
2482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j=0;
2483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if(mr)
2485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"+F3:%u:%u:%f:%f\n",
2486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				k,dsa_bits[k],dsa_results[k][0],dsa_results[k][1]);
2487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"dsa %4u bits %8.6fs %8.6fs %8.1f %8.1f\n",
2489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				dsa_bits[k],dsa_results[k][0],dsa_results[k][1],
2490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				1.0/dsa_results[k][0],1.0/dsa_results[k][1]);
2491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
2494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	j=1;
2495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (k=0; k<EC_NUM; k++)
2496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!ecdsa_doit[k]) continue;
2498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (j && !mr)
2499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("%30ssign    verify    sign/s verify/s\n"," ");
2501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j=0;
2502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (mr)
2505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"+F4:%u:%u:%f:%f\n",
2506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				k, test_curves_bits[k],
2507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_results[k][0],ecdsa_results[k][1]);
2508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,
2510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				"%4u bit ecdsa (%s) %8.4fs %8.4fs %8.1f %8.1f\n",
2511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				test_curves_bits[k],
2512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				test_curves_names[k],
2513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdsa_results[k][0],ecdsa_results[k][1],
2514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				1.0/ecdsa_results[k][0],1.0/ecdsa_results[k][1]);
2515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
2520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	j=1;
2521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (k=0; k<EC_NUM; k++)
2522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (!ecdh_doit[k]) continue;
2524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (j && !mr)
2525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("%30sop      op/s\n"," ");
2527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			j=0;
2528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (mr)
2530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"+F5:%u:%u:%f:%f\n",
2531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				k, test_curves_bits[k],
2532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_results[k][0], 1.0/ecdh_results[k][0]);
2533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fprintf(stdout,"%4u bit ecdh (%s) %8.4fs %8.1f\n",
2536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				test_curves_bits[k],
2537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				test_curves_names[k],
2538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				ecdh_results[k][0], 1.0/ecdh_results[k][0]);
2539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mret=0;
2543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectend:
2545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ERR_print_errors(bio_err);
2546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (buf != NULL) OPENSSL_free(buf);
2547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (buf2 != NULL) OPENSSL_free(buf2);
2548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_RSA
2549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<RSA_NUM; i++)
2550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (rsa_key[i] != NULL)
2551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			RSA_free(rsa_key[i]);
2552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DSA
2554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<DSA_NUM; i++)
2555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (dsa_key[i] != NULL)
2556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			DSA_free(dsa_key[i]);
2557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
2560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<EC_NUM; i++)
2561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ecdsa[i] != NULL)
2562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			EC_KEY_free(ecdsa[i]);
2563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
2565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<EC_NUM; i++)
2566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
2567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ecdh_a[i] != NULL)
2568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			EC_KEY_free(ecdh_a[i]);
2569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (ecdh_b[i] != NULL)
2570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			EC_KEY_free(ecdh_b[i]);
2571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	apps_shutdown();
2575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_EXIT(mret);
2576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic void print_message(const char *s, long num, int length)
2579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
2580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef SIGALRM
2581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIO_printf(bio_err,mr ? "+DT:%s:%d:%d\n"
2582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		   : "Doing %s for %ds on %d size blocks: ",s,SECONDS,length);
2583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	(void)BIO_flush(bio_err);
2584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	alarm(SECONDS);
2585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
2586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIO_printf(bio_err,mr ? "+DN:%s:%ld:%d\n"
2587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		   : "Doing %s %ld times on %d size blocks: ",s,num,length);
2588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	(void)BIO_flush(bio_err);
2589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef LINT
2591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	num=num;
2592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic void pkey_print_message(const char *str, const char *str2, long num,
2596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int bits, int tm)
2597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
2598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef SIGALRM
2599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIO_printf(bio_err,mr ? "+DTP:%d:%s:%s:%d\n"
2600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			   : "Doing %d bit %s %s's for %ds: ",bits,str,str2,tm);
2601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	(void)BIO_flush(bio_err);
2602392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	alarm(tm);
2603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
2604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIO_printf(bio_err,mr ? "+DNP:%ld:%d:%s:%s\n"
2605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			   : "Doing %ld %d bit %s %s's: ",num,bits,str,str2);
2606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	(void)BIO_flush(bio_err);
2607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef LINT
2609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	num=num;
2610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic void print_result(int alg,int run_no,int count,double time_used)
2614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
2615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIO_printf(bio_err,mr ? "+R:%d:%s:%f\n"
2616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		   : "%d %s's in %.2fs\n",count,names[alg],time_used);
2617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	results[alg][run_no]=((double)count)/time_used*lengths[run_no];
2618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
262098d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom#ifndef NO_FORK
2621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic char *sstrsep(char **string, const char *delim)
2622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    {
2623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    char isdelim[256];
2624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    char *token = *string;
2625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    if (**string == 0)
2627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        return NULL;
2628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    memset(isdelim, 0, sizeof isdelim);
2630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    isdelim[0] = 1;
2631656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    while (*delim)
2633656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        {
2634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        isdelim[(unsigned char)(*delim)] = 1;
2635656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        delim++;
2636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        }
2637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    while (!isdelim[(unsigned char)(**string)])
2639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        {
2640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        (*string)++;
2641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        }
2642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    if (**string)
2644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        {
2645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        **string = 0;
2646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        (*string)++;
2647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        }
2648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    return token;
2650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    }
2651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int do_multi(int multi)
2653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
2654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int n;
2655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int fd[2];
2656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int *fds;
2657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static char sep[]=":";
2658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fds=malloc(multi*sizeof *fds);
2660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for(n=0 ; n < multi ; ++n)
2661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2662392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		if (pipe(fd) == -1)
2663392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			{
2664392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			fprintf(stderr, "pipe failure\n");
2665392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			exit(1);
2666392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			}
2667e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu		fflush(stdout);
2668e45f106cb6b47af1f21efe76e933bdea2f5dd1caNagendra Modadugu		fflush(stderr);
2669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if(fork())
2670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			close(fd[1]);
2672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			fds[n]=fd[0];
2673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
2675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			close(fd[0]);
2677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			close(1);
2678392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom			if (dup(fd[1]) == -1)
2679392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom				{
2680392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom				fprintf(stderr, "dup failed\n");
2681392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom				exit(1);
2682392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom				}
2683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			close(fd[1]);
2684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			mr=1;
2685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			usertime=0;
2686221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			free(fds);
2687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			return 0;
2688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2689656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("Forked child %d\n",n);
2690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* for now, assume the pipe is long enough to take all the output */
2693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for(n=0 ; n < multi ; ++n)
2694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
2695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		FILE *f;
2696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		char buf[1024];
2697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		char *p;
2698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2699656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		f=fdopen(fds[n],"r");
2700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		while(fgets(buf,sizeof buf,f))
2701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
2702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			p=strchr(buf,'\n');
2703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if(p)
2704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				*p='\0';
2705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if(buf[0] != '+')
2706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				fprintf(stderr,"Don't understand line '%s' from child %d\n",
2708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project						buf,n);
2709656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				continue;
2710656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			printf("Got: %s from %d\n",buf,n);
2712656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if(!strncmp(buf,"+F:",3))
2713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2714656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int alg;
2715656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int j;
2716656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2717656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				p=buf+3;
2718656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				alg=atoi(sstrsep(&p,sep));
2719656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				sstrsep(&p,sep);
2720656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				for(j=0 ; j < SIZE_NUM ; ++j)
2721656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					results[alg][j]+=atof(sstrsep(&p,sep));
2722656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2723656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else if(!strncmp(buf,"+F2:",4))
2724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int k;
2726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				double d;
2727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				p=buf+4;
2729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				k=atoi(sstrsep(&p,sep));
2730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				sstrsep(&p,sep);
2731656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=atof(sstrsep(&p,sep));
2733656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(n)
2734656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					rsa_results[k][0]=1/(1/rsa_results[k][0]+1/d);
2735656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					rsa_results[k][0]=d;
2737656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=atof(sstrsep(&p,sep));
2739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(n)
2740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					rsa_results[k][1]=1/(1/rsa_results[k][1]+1/d);
2741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					rsa_results[k][1]=d;
2743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else if(!strncmp(buf,"+F2:",4))
2745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int k;
2747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				double d;
2748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2749656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				p=buf+4;
2750656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				k=atoi(sstrsep(&p,sep));
2751656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				sstrsep(&p,sep);
2752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2753656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=atof(sstrsep(&p,sep));
2754656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(n)
2755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					rsa_results[k][0]=1/(1/rsa_results[k][0]+1/d);
2756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					rsa_results[k][0]=d;
2758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=atof(sstrsep(&p,sep));
2760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(n)
2761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					rsa_results[k][1]=1/(1/rsa_results[k][1]+1/d);
2762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2763656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					rsa_results[k][1]=d;
2764656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2765ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom#ifndef OPENSSL_NO_DSA
2766656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else if(!strncmp(buf,"+F3:",4))
2767656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int k;
2769656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				double d;
2770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				p=buf+4;
2772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				k=atoi(sstrsep(&p,sep));
2773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				sstrsep(&p,sep);
2774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=atof(sstrsep(&p,sep));
2776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(n)
2777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					dsa_results[k][0]=1/(1/dsa_results[k][0]+1/d);
2778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					dsa_results[k][0]=d;
2780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=atof(sstrsep(&p,sep));
2782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(n)
2783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					dsa_results[k][1]=1/(1/dsa_results[k][1]+1/d);
2784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					dsa_results[k][1]=d;
2786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2787ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom#endif
2788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDSA
2789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else if(!strncmp(buf,"+F4:",4))
2790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int k;
2792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				double d;
2793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				p=buf+4;
2795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				k=atoi(sstrsep(&p,sep));
2796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				sstrsep(&p,sep);
2797656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=atof(sstrsep(&p,sep));
2799656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(n)
2800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdsa_results[k][0]=1/(1/ecdsa_results[k][0]+1/d);
2801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdsa_results[k][0]=d;
2803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=atof(sstrsep(&p,sep));
2805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(n)
2806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdsa_results[k][1]=1/(1/ecdsa_results[k][1]+1/d);
2807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdsa_results[k][1]=d;
2809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_ECDH
2813656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else if(!strncmp(buf,"+F5:",4))
2814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2815656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int k;
2816656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				double d;
2817656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				p=buf+4;
2819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				k=atoi(sstrsep(&p,sep));
2820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				sstrsep(&p,sep);
2821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				d=atof(sstrsep(&p,sep));
2823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				if(n)
2824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdh_results[k][0]=1/(1/ecdh_results[k][0]+1/d);
2825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				else
2826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project					ecdh_results[k][0]=d;
2827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else if(!strncmp(buf,"+H:",3))
2832656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
2833656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
2834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			else
2835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				fprintf(stderr,"Unknown type '%s' from child %d\n",buf,n);
2836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
2837221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
2838221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		fclose(f);
2839656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
2840221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	free(fds);
2841656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return 1;
2842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
2843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
2845