Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
openssl
提交
14cfde9c
O
openssl
项目概览
btwise
/
openssl
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
14cfde9c
编写于
9月 07, 2001
作者:
U
Ulf Möller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
make engine file names unique in 8.3
上级
9cabef96
变更
13
显示空白变更内容
内联
并排
Showing
13 changed file
with
989 addition
and
119 deletion
+989
-119
crypto/engine/Makefile.ssl
crypto/engine/Makefile.ssl
+84
-89
crypto/engine/eng_all.c
crypto/engine/eng_all.c
+1
-1
crypto/engine/eng_dyn.c
crypto/engine/eng_dyn.c
+1
-1
crypto/engine/eng_err.c
crypto/engine/eng_err.c
+0
-0
crypto/engine/eng_evp.c
crypto/engine/eng_evp.c
+1
-1
crypto/engine/eng_int.h
crypto/engine/eng_int.h
+0
-0
crypto/engine/eng_lib.c
crypto/engine/eng_lib.c
+864
-0
crypto/engine/eng_list.c
crypto/engine/eng_list.c
+1
-1
crypto/engine/eng_openssl.c
crypto/engine/eng_openssl.c
+0
-0
crypto/engine/hw_openbsd_dev_crypto.c
crypto/engine/hw_openbsd_dev_crypto.c
+1
-1
crypto/rand/Makefile.ssl
crypto/rand/Makefile.ssl
+24
-15
test/Makefile.ssl
test/Makefile.ssl
+9
-9
util/libeay.num
util/libeay.num
+3
-1
未找到文件。
crypto/engine/Makefile.ssl
浏览文件 @
14cfde9c
...
...
@@ -23,12 +23,12 @@ TEST= enginetest.c
APPS
=
LIB
=
$(TOP)
/libcrypto.a
LIBSRC
=
eng
ine_err.c engine_lib.c engine_list.c engine_all.c engine
_openssl.c
\
eng
ine_dyn.c engine
_evp.c
\
LIBSRC
=
eng
_err.c eng_lib.c eng_list.c eng_all.c eng
_openssl.c
\
eng
_dyn.c eng
_evp.c
\
hw_atalla.c hw_cswift.c hw_ncipher.c hw_nuron.c hw_ubsec.c
\
hw_openbsd_dev_crypto.c
LIBOBJ
=
eng
ine_err.o engine_lib.o engine_list.o engine_all.o engine
_openssl.o
\
eng
ine_dyn.o engine
_evp.o
\
LIBOBJ
=
eng
_err.o eng_lib.o eng_list.o eng_all.o eng
_openssl.o
\
eng
_dyn.o eng
_evp.o
\
hw_atalla.o hw_cswift.o hw_ncipher.o hw_nuron.o hw_ubsec.o
\
hw_openbsd_dev_crypto.o
...
...
@@ -85,91 +85,86 @@ clean:
# DO NOT DELETE THIS LINE -- make depend depends on it.
engine_all.o
:
../../include/openssl/asn1.h ../../include/openssl/bio.h
engine_all.o
:
../../include/openssl/bn.h ../../include/openssl/crypto.h
engine_all.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
engine_all.o
:
../../include/openssl/e_os2.h ../../include/openssl/engine.h
engine_all.o
:
../../include/openssl/err.h ../../include/openssl/lhash.h
engine_all.o
:
../../include/openssl/opensslconf.h
engine_all.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
engine_all.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
engine_all.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
engine_all.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
engine_all.o
:
engine_all.c engine_int.h
engine_dyn.o
:
../../e_os.h ../../include/openssl/asn1.h
engine_dyn.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
engine_dyn.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
engine_dyn.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
engine_dyn.o
:
../../include/openssl/dso.h ../../include/openssl/e_os2.h
engine_dyn.o
:
../../include/openssl/engine.h ../../include/openssl/err.h
engine_dyn.o
:
../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
engine_dyn.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
engine_dyn.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
engine_dyn.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
engine_dyn.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
engine_dyn.o
:
../cryptlib.h engine_dyn.c engine_int.h
engine_err.o
:
../../include/openssl/asn1.h ../../include/openssl/bio.h
engine_err.o
:
../../include/openssl/bn.h ../../include/openssl/crypto.h
engine_err.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
engine_err.o
:
../../include/openssl/e_os2.h ../../include/openssl/engine.h
engine_err.o
:
../../include/openssl/err.h ../../include/openssl/lhash.h
engine_err.o
:
../../include/openssl/opensslconf.h
engine_err.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
engine_err.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
engine_err.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
engine_err.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
engine_err.o
:
engine_err.c
engine_evp.o
:
../../include/openssl/asn1.h ../../include/openssl/bio.h
engine_evp.o
:
../../include/openssl/bn.h ../../include/openssl/crypto.h
engine_evp.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
engine_evp.o
:
../../include/openssl/e_os2.h ../../include/openssl/engine.h
engine_evp.o
:
../../include/openssl/err.h ../../include/openssl/evp.h
engine_evp.o
:
../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
engine_evp.o
:
../../include/openssl/objects.h
engine_evp.o
:
../../include/openssl/opensslconf.h
engine_evp.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
engine_evp.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
engine_evp.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
engine_evp.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
engine_evp.o
:
engine_evp.c engine_int.h
engine_lib.o
:
../../e_os.h ../../include/openssl/asn1.h
engine_lib.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
engine_lib.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
engine_lib.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
engine_lib.o
:
../../include/openssl/e_os2.h ../../include/openssl/engine.h
engine_lib.o
:
../../include/openssl/err.h ../../include/openssl/lhash.h
engine_lib.o
:
../../include/openssl/opensslconf.h
engine_lib.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
engine_lib.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
engine_lib.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
engine_lib.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
engine_lib.o
:
../cryptlib.h engine_int.h engine_lib.c
engine_list.o
:
../../e_os.h ../../include/openssl/asn1.h
engine_list.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
engine_list.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
engine_list.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
engine_list.o
:
../../include/openssl/e_os2.h ../../include/openssl/engine.h
engine_list.o
:
../../include/openssl/err.h ../../include/openssl/lhash.h
engine_list.o
:
../../include/openssl/opensslconf.h
engine_list.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
engine_list.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
engine_list.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
engine_list.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
engine_list.o
:
../cryptlib.h engine_int.h engine_list.c
engine_openssl.o
:
../../e_os.h ../../include/openssl/asn1.h
engine_openssl.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
engine_openssl.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
engine_openssl.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
engine_openssl.o
:
../../include/openssl/dso.h ../../include/openssl/e_os2.h
engine_openssl.o
:
../../include/openssl/engine.h ../../include/openssl/err.h
engine_openssl.o
:
../../include/openssl/lhash.h
engine_openssl.o
:
../../include/openssl/opensslconf.h
engine_openssl.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
engine_openssl.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
engine_openssl.o
:
../../include/openssl/stack.h
engine_openssl.o
:
../../include/openssl/symhacks.h
engine_openssl.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
engine_openssl.o
:
../cryptlib.h engine_openssl.c
eng_all.o
:
../../include/openssl/asn1.h ../../include/openssl/bio.h
eng_all.o
:
../../include/openssl/bn.h ../../include/openssl/crypto.h
eng_all.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
eng_all.o
:
../../include/openssl/e_os2.h ../../include/openssl/engine.h
eng_all.o
:
../../include/openssl/err.h ../../include/openssl/lhash.h
eng_all.o
:
../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
eng_all.o
:
../../include/openssl/rand.h ../../include/openssl/rsa.h
eng_all.o
:
../../include/openssl/safestack.h ../../include/openssl/stack.h
eng_all.o
:
../../include/openssl/symhacks.h ../../include/openssl/types.h
eng_all.o
:
../../include/openssl/ui.h eng_all.c eng_int.h
eng_dyn.o
:
../../e_os.h ../../include/openssl/asn1.h
eng_dyn.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
eng_dyn.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
eng_dyn.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
eng_dyn.o
:
../../include/openssl/dso.h ../../include/openssl/e_os2.h
eng_dyn.o
:
../../include/openssl/engine.h ../../include/openssl/err.h
eng_dyn.o
:
../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
eng_dyn.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
eng_dyn.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
eng_dyn.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
eng_dyn.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
eng_dyn.o
:
../cryptlib.h eng_dyn.c eng_int.h
eng_err.o
:
../../include/openssl/asn1.h ../../include/openssl/bio.h
eng_err.o
:
../../include/openssl/bn.h ../../include/openssl/crypto.h
eng_err.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
eng_err.o
:
../../include/openssl/e_os2.h ../../include/openssl/engine.h
eng_err.o
:
../../include/openssl/err.h ../../include/openssl/lhash.h
eng_err.o
:
../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
eng_err.o
:
../../include/openssl/rand.h ../../include/openssl/rsa.h
eng_err.o
:
../../include/openssl/safestack.h ../../include/openssl/stack.h
eng_err.o
:
../../include/openssl/symhacks.h ../../include/openssl/types.h
eng_err.o
:
../../include/openssl/ui.h eng_err.c
eng_evp.o
:
../../include/openssl/asn1.h ../../include/openssl/bio.h
eng_evp.o
:
../../include/openssl/bn.h ../../include/openssl/crypto.h
eng_evp.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
eng_evp.o
:
../../include/openssl/e_os2.h ../../include/openssl/engine.h
eng_evp.o
:
../../include/openssl/err.h ../../include/openssl/evp.h
eng_evp.o
:
../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
eng_evp.o
:
../../include/openssl/objects.h ../../include/openssl/opensslconf.h
eng_evp.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
eng_evp.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
eng_evp.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
eng_evp.o
:
../../include/openssl/types.h ../../include/openssl/ui.h eng_evp.c
eng_evp.o
:
eng_int.h
eng_lib.o
:
../../e_os.h ../../include/openssl/asn1.h
eng_lib.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
eng_lib.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
eng_lib.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
eng_lib.o
:
../../include/openssl/e_os2.h ../../include/openssl/engine.h
eng_lib.o
:
../../include/openssl/err.h ../../include/openssl/lhash.h
eng_lib.o
:
../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
eng_lib.o
:
../../include/openssl/rand.h ../../include/openssl/rsa.h
eng_lib.o
:
../../include/openssl/safestack.h ../../include/openssl/stack.h
eng_lib.o
:
../../include/openssl/symhacks.h ../../include/openssl/types.h
eng_lib.o
:
../../include/openssl/ui.h ../cryptlib.h eng_int.h eng_lib.c
eng_list.o
:
../../e_os.h ../../include/openssl/asn1.h
eng_list.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
eng_list.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
eng_list.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
eng_list.o
:
../../include/openssl/e_os2.h ../../include/openssl/engine.h
eng_list.o
:
../../include/openssl/err.h ../../include/openssl/lhash.h
eng_list.o
:
../../include/openssl/opensslconf.h
eng_list.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
eng_list.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
eng_list.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
eng_list.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
eng_list.o
:
../cryptlib.h eng_int.h eng_list.c
eng_openssl.o
:
../../e_os.h ../../include/openssl/asn1.h
eng_openssl.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
eng_openssl.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
eng_openssl.o
:
../../include/openssl/dh.h ../../include/openssl/dsa.h
eng_openssl.o
:
../../include/openssl/dso.h ../../include/openssl/e_os2.h
eng_openssl.o
:
../../include/openssl/engine.h ../../include/openssl/err.h
eng_openssl.o
:
../../include/openssl/lhash.h
eng_openssl.o
:
../../include/openssl/opensslconf.h
eng_openssl.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
eng_openssl.o
:
../../include/openssl/rsa.h ../../include/openssl/safestack.h
eng_openssl.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
eng_openssl.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
eng_openssl.o
:
../cryptlib.h eng_openssl.c
hw_atalla.o
:
../../e_os.h ../../include/openssl/asn1.h
hw_atalla.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
hw_atalla.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
...
...
crypto/engine/eng
ine
_all.c
→
crypto/engine/eng_all.c
浏览文件 @
14cfde9c
...
...
@@ -58,7 +58,7 @@
#include <openssl/err.h>
#include <openssl/engine.h>
#include "eng
ine
_int.h"
#include "eng_int.h"
static
int
engine_add
(
ENGINE
*
e
)
{
...
...
crypto/engine/eng
ine
_dyn.c
→
crypto/engine/eng_dyn.c
浏览文件 @
14cfde9c
...
...
@@ -60,7 +60,7 @@
#include <stdio.h>
#include <openssl/crypto.h>
#include "cryptlib.h"
#include "eng
ine
_int.h"
#include "eng_int.h"
#include <openssl/engine.h>
#include <openssl/dso.h>
...
...
crypto/engine/eng
ine
_err.c
→
crypto/engine/eng_err.c
浏览文件 @
14cfde9c
文件已移动
crypto/engine/eng
ine
_evp.c
→
crypto/engine/eng_evp.c
浏览文件 @
14cfde9c
...
...
@@ -55,7 +55,7 @@
#include <openssl/engine.h>
#include <openssl/evp.h>
#include "eng
ine
_int.h"
#include "eng_int.h"
#include <string.h>
int
ENGINE_add_cipher
(
ENGINE
*
e
,
const
EVP_CIPHER
*
c
)
...
...
crypto/engine/eng
ine
_int.h
→
crypto/engine/eng_int.h
浏览文件 @
14cfde9c
文件已移动
crypto/engine/eng_lib.c
0 → 100644
浏览文件 @
14cfde9c
/* crypto/engine/engine_lib.c */
/* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL
* project 2000.
*/
/* ====================================================================
* Copyright (c) 1999 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* licensing@OpenSSL.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
#include <openssl/crypto.h>
#include "cryptlib.h"
#include "eng_int.h"
#include <openssl/engine.h>
/* These pointers each have their own "functional reference" when they
* are non-NULL. Similarly, when they are retrieved by a call to
* ENGINE_get_default_[RSA|DSA|...] the returned pointer is also a
* reference and the caller is responsible for freeing that when they
* are finished with it (with a call to ENGINE_finish() *NOT* just
* ENGINE_free()!!!!!!). */
#ifndef OPENSSL_NO_RSA
static
ENGINE
*
engine_def_rsa
=
NULL
;
#endif
#ifndef OPENSSL_NO_DSA
static
ENGINE
*
engine_def_dsa
=
NULL
;
#endif
#ifndef OPENSSL_NO_DH
static
ENGINE
*
engine_def_dh
=
NULL
;
#endif
static
ENGINE
*
engine_def_rand
=
NULL
;
static
ENGINE
*
engine_def_bn_mod_exp
=
NULL
;
static
ENGINE
*
engine_def_bn_mod_exp_crt
=
NULL
;
/* A static "once-only" flag used to control if/when the above were
* initialised to suitable start-up defaults. */
static
int
engine_def_flag
=
0
;
/* When querying a ENGINE-specific control command's 'description', this string
* is used if the ENGINE_CMD_DEFN has cmd_desc set to NULL. */
static
const
char
*
int_no_description
=
""
;
/* This is used in certain static utility functions to save code
* repetition for per-algorithm functions. */
typedef
enum
{
ENGINE_TYPE_RSA
,
ENGINE_TYPE_DSA
,
ENGINE_TYPE_DH
,
ENGINE_TYPE_RAND
,
ENGINE_TYPE_BN_MOD_EXP
,
ENGINE_TYPE_BN_MOD_EXP_CRT
}
ENGINE_TYPE
;
static
void
engine_def_check_util
(
ENGINE
**
def
,
ENGINE
*
val
)
{
*
def
=
val
;
val
->
struct_ref
++
;
val
->
funct_ref
++
;
engine_ref_debug
(
val
,
0
,
1
)
engine_ref_debug
(
val
,
1
,
1
)
}
/* In a slight break with convention - this static function must be
* called *outside* any locking of CRYPTO_LOCK_ENGINE. */
static
void
engine_def_check
(
void
)
{
ENGINE
*
e
;
if
(
engine_def_flag
)
return
;
e
=
ENGINE_get_first
();
if
(
e
==
NULL
)
/* The list is empty ... not much we can do! */
return
;
/* We have a structural reference, see if getting a functional
* reference is possible. This is done to cope with init errors
* in the engine - the following locked code does a bunch of
* manual "ENGINE_init"s which do *not* allow such an init
* error so this is worth doing. */
if
(
ENGINE_init
(
e
))
{
CRYPTO_w_lock
(
CRYPTO_LOCK_ENGINE
);
/* Doing another check here prevents an obvious race
* condition because the whole function itself cannot
* be locked. */
if
(
engine_def_flag
)
goto
skip_set_defaults
;
/* OK, we got a functional reference, so we get one each
* for the defaults too. */
#ifndef OPENSSL_NO_RSA
engine_def_check_util
(
&
engine_def_rsa
,
e
);
#endif
#ifndef OPENSSL_NO_DSA
engine_def_check_util
(
&
engine_def_dsa
,
e
);
#endif
#ifndef OPENSSL_NO_DH
engine_def_check_util
(
&
engine_def_dh
,
e
);
#endif
engine_def_check_util
(
&
engine_def_rand
,
e
);
engine_def_check_util
(
&
engine_def_bn_mod_exp
,
e
);
engine_def_check_util
(
&
engine_def_bn_mod_exp_crt
,
e
);
engine_def_flag
=
1
;
skip_set_defaults:
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
/* The "if" needs to be balanced out. */
ENGINE_finish
(
e
);
}
/* We need to balance out the fact we obtained a structural
* reference to begin with from ENGINE_get_first(). */
ENGINE_free
(
e
);
}
/* Initialise a engine type for use (or up its functional reference count
* if it's already in use). */
int
ENGINE_init
(
ENGINE
*
e
)
{
int
to_return
=
1
;
if
(
e
==
NULL
)
{
ENGINEerr
(
ENGINE_F_ENGINE_INIT
,
ERR_R_PASSED_NULL_PARAMETER
);
return
0
;
}
CRYPTO_w_lock
(
CRYPTO_LOCK_ENGINE
);
if
((
e
->
funct_ref
==
0
)
&&
e
->
init
)
/* This is the first functional reference and the engine
* requires initialisation so we do it now. */
to_return
=
e
->
init
(
e
);
if
(
to_return
)
{
/* OK, we return a functional reference which is also a
* structural reference. */
e
->
struct_ref
++
;
e
->
funct_ref
++
;
engine_ref_debug
(
e
,
0
,
1
)
engine_ref_debug
(
e
,
1
,
1
)
}
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
return
to_return
;
}
/* Free a functional reference to a engine type */
int
ENGINE_finish
(
ENGINE
*
e
)
{
int
to_return
=
1
;
if
(
e
==
NULL
)
{
ENGINEerr
(
ENGINE_F_ENGINE_FINISH
,
ERR_R_PASSED_NULL_PARAMETER
);
return
0
;
}
CRYPTO_w_lock
(
CRYPTO_LOCK_ENGINE
);
/* Reduce the functional reference count here so if it's the terminating
* case, we can release the lock safely and call the finish() handler
* without risk of a race. We get a race if we leave the count until
* after and something else is calling "finish" at the same time -
* there's a chance that both threads will together take the count from
* 2 to 0 without either calling finish(). */
e
->
funct_ref
--
;
engine_ref_debug
(
e
,
1
,
-
1
)
if
((
e
->
funct_ref
==
0
)
&&
e
->
finish
)
{
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
if
(
!
(
to_return
=
e
->
finish
(
e
)))
{
ENGINEerr
(
ENGINE_F_ENGINE_FINISH
,
ENGINE_R_FINISH_FAILED
);
return
0
;
}
}
else
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
#ifdef REF_CHECK
if
(
e
->
funct_ref
<
0
)
{
fprintf
(
stderr
,
"ENGINE_finish, bad functional reference count
\n
"
);
abort
();
}
#endif
/* Release the structural reference too */
if
(
!
ENGINE_free
(
e
))
{
ENGINEerr
(
ENGINE_F_ENGINE_FINISH
,
ENGINE_R_FINISH_FAILED
);
return
0
;
}
return
to_return
;
}
EVP_PKEY
*
ENGINE_load_private_key
(
ENGINE
*
e
,
const
char
*
key_id
,
UI_METHOD
*
ui_method
,
void
*
callback_data
)
{
EVP_PKEY
*
pkey
;
if
(
e
==
NULL
)
{
ENGINEerr
(
ENGINE_F_ENGINE_LOAD_PRIVATE_KEY
,
ERR_R_PASSED_NULL_PARAMETER
);
return
0
;
}
CRYPTO_w_lock
(
CRYPTO_LOCK_ENGINE
);
if
(
e
->
funct_ref
==
0
)
{
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
ENGINEerr
(
ENGINE_F_ENGINE_LOAD_PRIVATE_KEY
,
ENGINE_R_NOT_INITIALISED
);
return
0
;
}
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
if
(
!
e
->
load_privkey
)
{
ENGINEerr
(
ENGINE_F_ENGINE_LOAD_PRIVATE_KEY
,
ENGINE_R_NO_LOAD_FUNCTION
);
return
0
;
}
pkey
=
e
->
load_privkey
(
e
,
key_id
,
ui_method
,
callback_data
);
if
(
!
pkey
)
{
ENGINEerr
(
ENGINE_F_ENGINE_LOAD_PRIVATE_KEY
,
ENGINE_R_FAILED_LOADING_PRIVATE_KEY
);
return
0
;
}
return
pkey
;
}
EVP_PKEY
*
ENGINE_load_public_key
(
ENGINE
*
e
,
const
char
*
key_id
,
UI_METHOD
*
ui_method
,
void
*
callback_data
)
{
EVP_PKEY
*
pkey
;
if
(
e
==
NULL
)
{
ENGINEerr
(
ENGINE_F_ENGINE_LOAD_PUBLIC_KEY
,
ERR_R_PASSED_NULL_PARAMETER
);
return
0
;
}
CRYPTO_w_lock
(
CRYPTO_LOCK_ENGINE
);
if
(
e
->
funct_ref
==
0
)
{
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
ENGINEerr
(
ENGINE_F_ENGINE_LOAD_PUBLIC_KEY
,
ENGINE_R_NOT_INITIALISED
);
return
0
;
}
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
if
(
!
e
->
load_pubkey
)
{
ENGINEerr
(
ENGINE_F_ENGINE_LOAD_PUBLIC_KEY
,
ENGINE_R_NO_LOAD_FUNCTION
);
return
0
;
}
pkey
=
e
->
load_pubkey
(
e
,
key_id
,
ui_method
,
callback_data
);
if
(
!
pkey
)
{
ENGINEerr
(
ENGINE_F_ENGINE_LOAD_PUBLIC_KEY
,
ENGINE_R_FAILED_LOADING_PUBLIC_KEY
);
return
0
;
}
return
pkey
;
}
/* These internal functions handle 'CMD'-related control commands when the
* ENGINE in question has asked us to take care of it (ie. the ENGINE did not
* set the ENGINE_FLAGS_MANUAL_CMD_CTRL flag. */
static
int
int_ctrl_cmd_is_null
(
const
ENGINE_CMD_DEFN
*
defn
)
{
if
((
defn
->
cmd_num
==
0
)
||
(
defn
->
cmd_name
==
NULL
))
return
1
;
return
0
;
}
static
int
int_ctrl_cmd_by_name
(
const
ENGINE_CMD_DEFN
*
defn
,
const
char
*
s
)
{
int
idx
=
0
;
while
(
!
int_ctrl_cmd_is_null
(
defn
)
&&
(
strcmp
(
defn
->
cmd_name
,
s
)
!=
0
))
{
idx
++
;
defn
++
;
}
if
(
int_ctrl_cmd_is_null
(
defn
))
/* The given name wasn't found */
return
-
1
;
return
idx
;
}
static
int
int_ctrl_cmd_by_num
(
const
ENGINE_CMD_DEFN
*
defn
,
unsigned
int
num
)
{
int
idx
=
0
;
/* NB: It is stipulated that 'cmd_defn' lists are ordered by cmd_num. So
* our searches don't need to take any longer than necessary. */
while
(
!
int_ctrl_cmd_is_null
(
defn
)
&&
(
defn
->
cmd_num
<
num
))
{
idx
++
;
defn
++
;
}
if
(
defn
->
cmd_num
==
num
)
return
idx
;
/* The given cmd_num wasn't found */
return
-
1
;
}
static
int
int_ctrl_helper
(
ENGINE
*
e
,
int
cmd
,
long
i
,
void
*
p
,
void
(
*
f
)())
{
int
idx
;
char
*
s
=
(
char
*
)
p
;
/* Take care of the easy one first (eg. it requires no searches) */
if
(
cmd
==
ENGINE_CTRL_GET_FIRST_CMD_TYPE
)
{
if
((
e
->
cmd_defns
==
NULL
)
||
int_ctrl_cmd_is_null
(
e
->
cmd_defns
))
return
0
;
return
e
->
cmd_defns
->
cmd_num
;
}
/* One or two commands require that "p" be a valid string buffer */
if
((
cmd
==
ENGINE_CTRL_GET_CMD_FROM_NAME
)
||
(
cmd
==
ENGINE_CTRL_GET_NAME_FROM_CMD
)
||
(
cmd
==
ENGINE_CTRL_GET_DESC_FROM_CMD
))
{
if
(
s
==
NULL
)
{
ENGINEerr
(
ENGINE_F_INT_CTRL_HELPER
,
ERR_R_PASSED_NULL_PARAMETER
);
return
-
1
;
}
}
/* Now handle cmd_name -> cmd_num conversion */
if
(
cmd
==
ENGINE_CTRL_GET_CMD_FROM_NAME
)
{
if
((
e
->
cmd_defns
==
NULL
)
||
((
idx
=
int_ctrl_cmd_by_name
(
e
->
cmd_defns
,
s
))
<
0
))
{
ENGINEerr
(
ENGINE_F_INT_CTRL_HELPER
,
ENGINE_R_INVALID_CMD_NAME
);
return
-
1
;
}
return
e
->
cmd_defns
[
idx
].
cmd_num
;
}
/* For the rest of the commands, the 'long' argument must specify a
* valie command number - so we need to conduct a search. */
if
((
e
->
cmd_defns
==
NULL
)
||
((
idx
=
int_ctrl_cmd_by_num
(
e
->
cmd_defns
,
(
unsigned
int
)
i
))
<
0
))
{
ENGINEerr
(
ENGINE_F_INT_CTRL_HELPER
,
ENGINE_R_INVALID_CMD_NUMBER
);
return
-
1
;
}
/* Now the logic splits depending on command type */
switch
(
cmd
)
{
case
ENGINE_CTRL_GET_NEXT_CMD_TYPE
:
idx
++
;
if
(
int_ctrl_cmd_is_null
(
e
->
cmd_defns
+
idx
))
/* end-of-list */
return
0
;
else
return
e
->
cmd_defns
[
idx
].
cmd_num
;
case
ENGINE_CTRL_GET_NAME_LEN_FROM_CMD
:
return
strlen
(
e
->
cmd_defns
[
idx
].
cmd_name
);
case
ENGINE_CTRL_GET_NAME_FROM_CMD
:
return
sprintf
(
s
,
"%s"
,
e
->
cmd_defns
[
idx
].
cmd_name
);
case
ENGINE_CTRL_GET_DESC_LEN_FROM_CMD
:
if
(
e
->
cmd_defns
[
idx
].
cmd_desc
)
return
strlen
(
e
->
cmd_defns
[
idx
].
cmd_desc
);
return
strlen
(
int_no_description
);
case
ENGINE_CTRL_GET_DESC_FROM_CMD
:
if
(
e
->
cmd_defns
[
idx
].
cmd_desc
)
return
sprintf
(
s
,
"%s"
,
e
->
cmd_defns
[
idx
].
cmd_desc
);
return
sprintf
(
s
,
"%s"
,
int_no_description
);
case
ENGINE_CTRL_GET_CMD_FLAGS
:
return
e
->
cmd_defns
[
idx
].
cmd_flags
;
}
/* Shouldn't really be here ... */
ENGINEerr
(
ENGINE_F_INT_CTRL_HELPER
,
ENGINE_R_INTERNAL_LIST_ERROR
);
return
-
1
;
}
int
ENGINE_ctrl
(
ENGINE
*
e
,
int
cmd
,
long
i
,
void
*
p
,
void
(
*
f
)())
{
int
ctrl_exists
,
ref_exists
;
if
(
e
==
NULL
)
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL
,
ERR_R_PASSED_NULL_PARAMETER
);
return
0
;
}
CRYPTO_w_lock
(
CRYPTO_LOCK_ENGINE
);
ref_exists
=
((
e
->
struct_ref
>
0
)
?
1
:
0
);
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
ctrl_exists
=
((
e
->
ctrl
==
NULL
)
?
0
:
1
);
if
(
!
ref_exists
)
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL
,
ENGINE_R_NO_REFERENCE
);
return
0
;
}
/* Intercept any "root-level" commands before trying to hand them on to
* ctrl() handlers. */
switch
(
cmd
)
{
case
ENGINE_CTRL_HAS_CTRL_FUNCTION
:
return
ctrl_exists
;
case
ENGINE_CTRL_GET_FIRST_CMD_TYPE
:
case
ENGINE_CTRL_GET_NEXT_CMD_TYPE
:
case
ENGINE_CTRL_GET_CMD_FROM_NAME
:
case
ENGINE_CTRL_GET_NAME_LEN_FROM_CMD
:
case
ENGINE_CTRL_GET_NAME_FROM_CMD
:
case
ENGINE_CTRL_GET_DESC_LEN_FROM_CMD
:
case
ENGINE_CTRL_GET_DESC_FROM_CMD
:
case
ENGINE_CTRL_GET_CMD_FLAGS
:
if
(
ctrl_exists
&&
!
(
e
->
flags
&
ENGINE_FLAGS_MANUAL_CMD_CTRL
))
return
int_ctrl_helper
(
e
,
cmd
,
i
,
p
,
f
);
if
(
!
ctrl_exists
)
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL
,
ENGINE_R_NO_CONTROL_FUNCTION
);
/* For these cmd-related functions, failure is indicated
* by a -1 return value (because 0 is used as a valid
* return in some places). */
return
-
1
;
}
default:
break
;
}
/* Anything else requires a ctrl() handler to exist. */
if
(
!
ctrl_exists
)
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL
,
ENGINE_R_NO_CONTROL_FUNCTION
);
return
0
;
}
return
e
->
ctrl
(
e
,
cmd
,
i
,
p
,
f
);
}
int
ENGINE_cmd_is_executable
(
ENGINE
*
e
,
int
cmd
)
{
int
flags
;
if
((
flags
=
ENGINE_ctrl
(
e
,
ENGINE_CTRL_GET_CMD_FLAGS
,
cmd
,
NULL
,
NULL
))
<
0
)
{
ENGINEerr
(
ENGINE_F_ENGINE_CMD_IS_EXECUTABLE
,
ENGINE_R_INVALID_CMD_NUMBER
);
return
0
;
}
if
(
!
(
flags
&
ENGINE_CMD_FLAG_NO_INPUT
)
&&
!
(
flags
&
ENGINE_CMD_FLAG_NUMERIC
)
&&
!
(
flags
&
ENGINE_CMD_FLAG_STRING
))
return
0
;
return
1
;
}
int
ENGINE_ctrl_cmd
(
ENGINE
*
e
,
const
char
*
cmd_name
,
long
i
,
void
*
p
,
void
(
*
f
)(),
int
cmd_optional
)
{
int
num
;
if
((
e
==
NULL
)
||
(
cmd_name
==
NULL
))
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL_CMD_STRING
,
ERR_R_PASSED_NULL_PARAMETER
);
return
0
;
}
if
((
e
->
ctrl
==
NULL
)
||
((
num
=
ENGINE_ctrl
(
e
,
ENGINE_CTRL_GET_CMD_FROM_NAME
,
0
,
(
void
*
)
cmd_name
,
NULL
))
<=
0
))
{
/* If the command didn't *have* to be supported, we fake
* success. This allows certain settings to be specified for
* multiple ENGINEs and only require a change of ENGINE id
* (without having to selectively apply settings). Eg. changing
* from a hardware device back to the regular software ENGINE
* without editing the config file, etc. */
if
(
cmd_optional
)
{
ERR_clear_error
();
return
1
;
}
ENGINEerr
(
ENGINE_F_ENGINE_CTRL_CMD
,
ENGINE_R_INVALID_CMD_NAME
);
return
0
;
}
/* Force the result of the control command to 0 or 1, for the reasons
* mentioned before. */
if
(
ENGINE_ctrl
(
e
,
num
,
i
,
p
,
f
))
return
1
;
return
0
;
}
int
ENGINE_ctrl_cmd_string
(
ENGINE
*
e
,
const
char
*
cmd_name
,
const
char
*
arg
,
int
cmd_optional
)
{
int
num
,
flags
;
long
l
;
char
*
ptr
;
if
((
e
==
NULL
)
||
(
cmd_name
==
NULL
))
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL_CMD_STRING
,
ERR_R_PASSED_NULL_PARAMETER
);
return
0
;
}
if
((
e
->
ctrl
==
NULL
)
||
((
num
=
ENGINE_ctrl
(
e
,
ENGINE_CTRL_GET_CMD_FROM_NAME
,
0
,
(
void
*
)
cmd_name
,
NULL
))
<=
0
))
{
/* If the command didn't *have* to be supported, we fake
* success. This allows certain settings to be specified for
* multiple ENGINEs and only require a change of ENGINE id
* (without having to selectively apply settings). Eg. changing
* from a hardware device back to the regular software ENGINE
* without editing the config file, etc. */
if
(
cmd_optional
)
{
ERR_clear_error
();
return
1
;
}
ENGINEerr
(
ENGINE_F_ENGINE_CTRL_CMD_STRING
,
ENGINE_R_INVALID_CMD_NAME
);
return
0
;
}
if
(
!
ENGINE_cmd_is_executable
(
e
,
num
))
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL_CMD_STRING
,
ENGINE_R_CMD_NOT_EXECUTABLE
);
return
0
;
}
if
((
flags
=
ENGINE_ctrl
(
e
,
ENGINE_CTRL_GET_CMD_FLAGS
,
num
,
NULL
,
NULL
))
<
0
)
{
/* Shouldn't happen, given that ENGINE_cmd_is_executable()
* returned success. */
ENGINEerr
(
ENGINE_F_ENGINE_CTRL_CMD_STRING
,
ENGINE_R_INTERNAL_LIST_ERROR
);
return
0
;
}
/* If the command takes no input, there must be no input. And vice
* versa. */
if
(
flags
&
ENGINE_CMD_FLAG_NO_INPUT
)
{
if
(
arg
!=
NULL
)
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL_CMD_STRING
,
ENGINE_R_COMMAND_TAKES_NO_INPUT
);
return
0
;
}
/* We deliberately force the result of ENGINE_ctrl() to 0 or 1
* rather than returning it as "return data". This is to ensure
* usage of these commands is consistent across applications and
* that certain applications don't understand it one way, and
* others another. */
if
(
ENGINE_ctrl
(
e
,
num
,
0
,
(
void
*
)
arg
,
NULL
))
return
1
;
return
0
;
}
/* So, we require input */
if
(
arg
==
NULL
)
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL_CMD_STRING
,
ENGINE_R_COMMAND_TAKES_INPUT
);
return
0
;
}
/* If it takes string input, that's easy */
if
(
flags
&
ENGINE_CMD_FLAG_STRING
)
{
/* Same explanation as above */
if
(
ENGINE_ctrl
(
e
,
num
,
0
,
(
void
*
)
arg
,
NULL
))
return
1
;
return
0
;
}
/* If it doesn't take numeric either, then it is unsupported for use in
* a config-setting situation, which is what this function is for. This
* should never happen though, because ENGINE_cmd_is_executable() was
* used. */
if
(
!
(
flags
&
ENGINE_CMD_FLAG_NUMERIC
))
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL_CMD_STRING
,
ENGINE_R_INTERNAL_LIST_ERROR
);
return
0
;
}
l
=
strtol
(
arg
,
&
ptr
,
10
);
if
((
arg
==
ptr
)
||
(
*
ptr
!=
'\0'
))
{
ENGINEerr
(
ENGINE_F_ENGINE_CTRL_CMD_STRING
,
ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER
);
return
0
;
}
/* Force the result of the control command to 0 or 1, for the reasons
* mentioned before. */
if
(
ENGINE_ctrl
(
e
,
num
,
l
,
NULL
,
NULL
))
return
1
;
return
0
;
}
static
ENGINE
*
engine_get_default_type
(
ENGINE_TYPE
t
)
{
ENGINE
*
ret
=
NULL
;
/* engine_def_check is lean and mean and won't replace any
* prior default engines ... so we must ensure that it is always
* the first function to get to touch the default values. */
engine_def_check
();
CRYPTO_w_lock
(
CRYPTO_LOCK_ENGINE
);
switch
(
t
)
{
#ifndef OPENSSL_NO_RSA
case
ENGINE_TYPE_RSA
:
ret
=
engine_def_rsa
;
break
;
#endif
#ifndef OPENSSL_NO_DSA
case
ENGINE_TYPE_DSA
:
ret
=
engine_def_dsa
;
break
;
#endif
#ifndef OPENSSL_NO_DH
case
ENGINE_TYPE_DH
:
ret
=
engine_def_dh
;
break
;
#endif
case
ENGINE_TYPE_RAND
:
ret
=
engine_def_rand
;
break
;
case
ENGINE_TYPE_BN_MOD_EXP
:
ret
=
engine_def_bn_mod_exp
;
break
;
case
ENGINE_TYPE_BN_MOD_EXP_CRT
:
ret
=
engine_def_bn_mod_exp_crt
;
break
;
default:
break
;
}
/* Unforunately we can't do this work outside the lock with a
* call to ENGINE_init() because that would leave a race
* condition open. */
if
(
ret
)
{
ret
->
struct_ref
++
;
ret
->
funct_ref
++
;
engine_ref_debug
(
ret
,
0
,
1
)
engine_ref_debug
(
ret
,
1
,
1
)
}
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
return
ret
;
}
#ifndef OPENSSL_NO_RSA
ENGINE
*
ENGINE_get_default_RSA
(
void
)
{
return
engine_get_default_type
(
ENGINE_TYPE_RSA
);
}
#endif
#ifndef OPENSSL_NO_DSA
ENGINE
*
ENGINE_get_default_DSA
(
void
)
{
return
engine_get_default_type
(
ENGINE_TYPE_DSA
);
}
#endif
#ifndef OPENSSL_NO_DH
ENGINE
*
ENGINE_get_default_DH
(
void
)
{
return
engine_get_default_type
(
ENGINE_TYPE_DH
);
}
#endif
ENGINE
*
ENGINE_get_default_RAND
(
void
)
{
return
engine_get_default_type
(
ENGINE_TYPE_RAND
);
}
ENGINE
*
ENGINE_get_default_BN_mod_exp
(
void
)
{
return
engine_get_default_type
(
ENGINE_TYPE_BN_MOD_EXP
);
}
ENGINE
*
ENGINE_get_default_BN_mod_exp_crt
(
void
)
{
return
engine_get_default_type
(
ENGINE_TYPE_BN_MOD_EXP_CRT
);
}
static
int
engine_set_default_type
(
ENGINE_TYPE
t
,
ENGINE
*
e
)
{
ENGINE
*
old
=
NULL
;
/* engine_def_check is lean and mean and won't replace any
* prior default engines ... so we must ensure that it is always
* the first function to get to touch the default values. */
engine_def_check
();
/* Attempt to get a functional reference (we need one anyway, but
* also, 'e' may be just a structural reference being passed in so
* this call may actually be the first). */
if
(
e
&&
!
ENGINE_init
(
e
))
{
ENGINEerr
(
ENGINE_F_ENGINE_SET_DEFAULT_TYPE
,
ENGINE_R_INIT_FAILED
);
return
0
;
}
CRYPTO_w_lock
(
CRYPTO_LOCK_ENGINE
);
switch
(
t
)
{
#ifndef OPENSSL_NO_RSA
case
ENGINE_TYPE_RSA
:
old
=
engine_def_rsa
;
engine_def_rsa
=
e
;
break
;
#endif
#ifndef OPENSSL_NO_DSA
case
ENGINE_TYPE_DSA
:
old
=
engine_def_dsa
;
engine_def_dsa
=
e
;
break
;
#endif
#ifndef OPENSSL_NO_DH
case
ENGINE_TYPE_DH
:
old
=
engine_def_dh
;
engine_def_dh
=
e
;
break
;
#endif
case
ENGINE_TYPE_RAND
:
old
=
engine_def_rand
;
engine_def_rand
=
e
;
break
;
case
ENGINE_TYPE_BN_MOD_EXP
:
old
=
engine_def_bn_mod_exp
;
engine_def_bn_mod_exp
=
e
;
break
;
case
ENGINE_TYPE_BN_MOD_EXP_CRT
:
old
=
engine_def_bn_mod_exp_crt
;
engine_def_bn_mod_exp_crt
=
e
;
break
;
default:
break
;
}
CRYPTO_w_unlock
(
CRYPTO_LOCK_ENGINE
);
/* If we've replaced a previous value, then we need to remove the
* functional reference we had. */
if
(
old
&&
!
ENGINE_finish
(
old
))
{
ENGINEerr
(
ENGINE_F_ENGINE_SET_DEFAULT_TYPE
,
ENGINE_R_FINISH_FAILED
);
return
0
;
}
return
1
;
}
#ifndef OPENSSL_NO_RSA
int
ENGINE_set_default_RSA
(
ENGINE
*
e
)
{
return
engine_set_default_type
(
ENGINE_TYPE_RSA
,
e
);
}
#endif
#ifndef OPENSSL_NO_DSA
int
ENGINE_set_default_DSA
(
ENGINE
*
e
)
{
return
engine_set_default_type
(
ENGINE_TYPE_DSA
,
e
);
}
#endif
#ifndef OPENSSL_NO_DH
int
ENGINE_set_default_DH
(
ENGINE
*
e
)
{
return
engine_set_default_type
(
ENGINE_TYPE_DH
,
e
);
}
#endif
int
ENGINE_set_default_RAND
(
ENGINE
*
e
)
{
return
engine_set_default_type
(
ENGINE_TYPE_RAND
,
e
);
}
int
ENGINE_set_default_BN_mod_exp
(
ENGINE
*
e
)
{
return
engine_set_default_type
(
ENGINE_TYPE_BN_MOD_EXP
,
e
);
}
int
ENGINE_set_default_BN_mod_exp_crt
(
ENGINE
*
e
)
{
return
engine_set_default_type
(
ENGINE_TYPE_BN_MOD_EXP_CRT
,
e
);
}
int
ENGINE_set_default
(
ENGINE
*
e
,
unsigned
int
flags
)
{
#ifndef OPENSSL_NO_RSA
if
((
flags
&
ENGINE_METHOD_RSA
)
&&
e
->
rsa_meth
&&
!
ENGINE_set_default_RSA
(
e
))
return
0
;
#endif
#ifndef OPENSSL_NO_DSA
if
((
flags
&
ENGINE_METHOD_DSA
)
&&
e
->
dsa_meth
&&
!
ENGINE_set_default_DSA
(
e
))
return
0
;
#endif
#ifndef OPENSSL_NO_DH
if
((
flags
&
ENGINE_METHOD_DH
)
&&
e
->
dh_meth
&&
!
ENGINE_set_default_DH
(
e
))
return
0
;
#endif
if
((
flags
&
ENGINE_METHOD_RAND
)
&&
e
->
rand_meth
&&
!
ENGINE_set_default_RAND
(
e
))
return
0
;
if
((
flags
&
ENGINE_METHOD_BN_MOD_EXP
)
&&
e
->
bn_mod_exp
&&
!
ENGINE_set_default_BN_mod_exp
(
e
))
return
0
;
if
((
flags
&
ENGINE_METHOD_BN_MOD_EXP_CRT
)
&&
e
->
bn_mod_exp_crt
&&
!
ENGINE_set_default_BN_mod_exp_crt
(
e
))
return
0
;
return
1
;
}
int
ENGINE_clear_defaults
(
void
)
{
/* If the defaults haven't even been set yet, don't bother. Any kind of
* "cleanup" has a kind of implicit race-condition if another thread is
* trying to keep going, so we don't address that with locking. The
* first ENGINE_set_default_*** call will actually *create* a standard
* set of default ENGINEs (including init() and functional reference
* counts aplenty) before the rest of this function undoes them all. So
* save some hassle ... */
if
(
!
engine_def_flag
)
return
1
;
if
((
0
==
1
)
||
#ifndef OPENSSL_NO_RSA
!
ENGINE_set_default_RSA
(
NULL
)
||
#endif
#ifndef OPENSSL_NO_DSA
!
ENGINE_set_default_DSA
(
NULL
)
||
#endif
#ifndef OPENSSL_NO_DH
!
ENGINE_set_default_DH
(
NULL
)
||
#endif
!
ENGINE_set_default_RAND
(
NULL
)
||
!
ENGINE_set_default_BN_mod_exp
(
NULL
)
||
!
ENGINE_set_default_BN_mod_exp_crt
(
NULL
)
||
!
RAND_set_rand_method
(
NULL
))
return
0
;
return
1
;
}
crypto/engine/eng
ine
_list.c
→
crypto/engine/eng_list.c
浏览文件 @
14cfde9c
...
...
@@ -58,7 +58,7 @@
#include <openssl/crypto.h>
#include "cryptlib.h"
#include "eng
ine
_int.h"
#include "eng_int.h"
#include <openssl/engine.h>
/* The linked-list of pointers to engine types. engine_list_head
...
...
crypto/engine/eng
ine
_openssl.c
→
crypto/engine/eng_openssl.c
浏览文件 @
14cfde9c
文件已移动
crypto/engine/hw_openbsd_dev_crypto.c
浏览文件 @
14cfde9c
...
...
@@ -57,7 +57,7 @@
#include <openssl/engine.h>
#include <openssl/evp.h>
#include "eng
ine
_int.h"
#include "eng_int.h"
static
void
load_ciphers
(
ENGINE
*
e
)
{
...
...
crypto/rand/Makefile.ssl
浏览文件 @
14cfde9c
...
...
@@ -88,9 +88,9 @@ md_rand.o: ../../include/openssl/err.h ../../include/openssl/evp.h
md_rand.o
:
../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
md_rand.o
:
../../include/openssl/objects.h ../../include/openssl/opensslconf.h
md_rand.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
md_rand.o
:
../../include/openssl/safestack.h ../../include/openssl/s
ha
.h
md_rand.o
:
../../include/openssl/s
tack.h ../../include/openssl/symhack
s.h
md_rand.o
:
../../include/openssl/types.h
md_rand.c rand_lcl.h
md_rand.o
:
../../include/openssl/safestack.h ../../include/openssl/s
tack
.h
md_rand.o
:
../../include/openssl/s
ymhacks.h ../../include/openssl/type
s.h
md_rand.o
:
md_rand.c rand_lcl.h
rand_egd.o
:
../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
rand_egd.o
:
../../include/openssl/rand.h rand_egd.c
rand_err.o
:
../../include/openssl/bio.h ../../include/openssl/crypto.h
...
...
@@ -111,29 +111,38 @@ rand_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
rand_lib.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
rand_lib.o
:
../../include/openssl/types.h ../../include/openssl/ui.h
rand_lib.o
:
../cryptlib.h rand_lib.c
rand_os2.o
:
../../e_os.h ../../include/openssl/bio.h
rand_os2.o
:
../../e_os.h ../../include/openssl/asn1.h
rand_os2.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
rand_os2.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
rand_os2.o
:
../../include/openssl/e_os2.h ../../include/openssl/err.h
rand_os2.o
:
../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
rand_os2.o
:
../../include/openssl/evp.h ../../include/openssl/lhash.h
rand_os2.o
:
../../include/openssl/obj_mac.h ../../include/openssl/objects.h
rand_os2.o
:
../../include/openssl/opensslconf.h
rand_os2.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
rand_os2.o
:
../../include/openssl/safestack.h ../../include/openssl/s
ha
.h
rand_os2.o
:
../../include/openssl/s
tack.h ../../include/openssl/symhack
s.h
rand_os2.o
:
../../include/openssl/safestack.h ../../include/openssl/s
tack
.h
rand_os2.o
:
../../include/openssl/s
ymhacks.h ../../include/openssl/type
s.h
rand_os2.o
:
../cryptlib.h rand_lcl.h rand_os2.c
rand_unix.o
:
../../e_os.h ../../include/openssl/bio.h
rand_unix.o
:
../../e_os.h ../../include/openssl/asn1.h
rand_unix.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
rand_unix.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
rand_unix.o
:
../../include/openssl/e_os2.h ../../include/openssl/err.h
rand_unix.o
:
../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
rand_unix.o
:
../../include/openssl/evp.h ../../include/openssl/lhash.h
rand_unix.o
:
../../include/openssl/obj_mac.h ../../include/openssl/objects.h
rand_unix.o
:
../../include/openssl/opensslconf.h
rand_unix.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
rand_unix.o
:
../../include/openssl/safestack.h ../../include/openssl/s
ha
.h
rand_unix.o
:
../../include/openssl/s
tack.h ../../include/openssl/symhack
s.h
rand_unix.o
:
../../include/openssl/safestack.h ../../include/openssl/s
tack
.h
rand_unix.o
:
../../include/openssl/s
ymhacks.h ../../include/openssl/type
s.h
rand_unix.o
:
../cryptlib.h rand_lcl.h rand_unix.c
rand_win.o
:
../../e_os.h ../../include/openssl/bio.h
rand_win.o
:
../../e_os.h ../../include/openssl/asn1.h
rand_win.o
:
../../include/openssl/bio.h ../../include/openssl/bn.h
rand_win.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
rand_win.o
:
../../include/openssl/e_os2.h ../../include/openssl/err.h
rand_win.o
:
../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
rand_win.o
:
../../include/openssl/evp.h ../../include/openssl/lhash.h
rand_win.o
:
../../include/openssl/obj_mac.h ../../include/openssl/objects.h
rand_win.o
:
../../include/openssl/opensslconf.h
rand_win.o
:
../../include/openssl/opensslv.h ../../include/openssl/rand.h
rand_win.o
:
../../include/openssl/safestack.h ../../include/openssl/s
ha
.h
rand_win.o
:
../../include/openssl/s
tack.h ../../include/openssl/symhack
s.h
rand_win.o
:
../../include/openssl/safestack.h ../../include/openssl/s
tack
.h
rand_win.o
:
../../include/openssl/s
ymhacks.h ../../include/openssl/type
s.h
rand_win.o
:
../cryptlib.h rand_lcl.h rand_win.c
randfile.o
:
../../e_os.h ../../include/openssl/crypto.h
randfile.o
:
../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
...
...
test/Makefile.ssl
浏览文件 @
14cfde9c
...
...
@@ -402,15 +402,15 @@ ectest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
ectest.o
:
../include/openssl/stack.h ../include/openssl/symhacks.h
ectest.o
:
../include/openssl/types.h ../include/openssl/ui.h ectest.c
enginetest.o
:
../include/openssl/asn1.h ../include/openssl/bio.h
enginetest.o
:
../include/openssl/bn.h ../include/openssl/
crypto
.h
enginetest.o
:
../include/openssl/
dh.h ../include/openssl/dsa
.h
enginetest.o
:
../include/openssl/
e_os2.h ../include/openssl/engine
.h
enginetest.o
:
../include/openssl/e
rr.h ../include/openssl/lhash
.h
enginetest.o
:
../include/openssl/
opensslconf.h ../include/openssl/opensslv
.h
enginetest.o
:
../include/openssl/
rand.h ../include/openssl/rsa
.h
enginetest.o
:
../include/openssl/
safestack.h ../include/openssl/
stack.h
enginetest.o
:
../include/openssl/s
ymhacks.h ../include/openssl/type
s.h
enginetest.o
:
../include/openssl/ui.h enginetest.c
enginetest.o
:
../include/openssl/bn.h ../include/openssl/
buffer
.h
enginetest.o
:
../include/openssl/
crypto.h ../include/openssl/dh
.h
enginetest.o
:
../include/openssl/
dsa.h ../include/openssl/e_os2
.h
enginetest.o
:
../include/openssl/e
ngine.h ../include/openssl/err
.h
enginetest.o
:
../include/openssl/
lhash.h ../include/openssl/opensslconf
.h
enginetest.o
:
../include/openssl/
opensslv.h ../include/openssl/rand
.h
enginetest.o
:
../include/openssl/
rsa.h ../include/openssl/safe
stack.h
enginetest.o
:
../include/openssl/s
tack.h ../include/openssl/symhack
s.h
enginetest.o
:
../include/openssl/
types.h ../include/openssl/
ui.h enginetest.c
evp_test.o
:
../include/openssl/asn1.h ../include/openssl/bio.h
evp_test.o
:
../include/openssl/bn.h ../include/openssl/crypto.h
evp_test.o
:
../include/openssl/dh.h ../include/openssl/dsa.h
...
...
util/libeay.num
浏览文件 @
14cfde9c
...
...
@@ -2627,7 +2627,7 @@ HMAC_CTX_init 3075 EXIST::FUNCTION:HMAC
HMAC_CTX_cleanup 3076 EXIST::FUNCTION:HMAC
EVP_MD_CTX_cleanup 3077 EXIST::FUNCTION:
EVP_MD_CTX_destroy 3078 EXIST::FUNCTION:
des_release_key 3079
EXIST::FUNCTION:DES
des_release_key 3079
NOEXIST::FUNCTION:
ENGINE_load_openbsd_dev_crypto 3080 EXIST::FUNCTION:
ENGINE_add_all_evp 3081 NOEXIST::FUNCTION:
ENGINE_add_evp_cipher 3082 NOEXIST::FUNCTION:
...
...
@@ -2659,3 +2659,5 @@ CRYPTO_ex_data_new_class 3107 EXIST::FUNCTION:
CRYPTO_get_ex_data_implementation 3108 EXIST::FUNCTION:
BN_pseudo_rand_range 3109 EXIST::FUNCTION:
ERR_unload_strings 3110 EXIST::FUNCTION:
ENGINE_set_destroy_function 3111 EXIST::FUNCTION:
ENGINE_get_destroy_function 3112 EXIST::FUNCTION:
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录