Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
37f010e2
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
1 年多 前同步成功
通知
10
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
37f010e2
编写于
8月 10, 2011
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add provisory support for RDRAND instruction.
上级
85ec54a4
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
146 addition
and
2 deletion
+146
-2
crypto/engine/Makefile
crypto/engine/Makefile
+2
-2
crypto/engine/eng_all.c
crypto/engine/eng_all.c
+3
-0
crypto/engine/eng_rdrand.c
crypto/engine/eng_rdrand.c
+140
-0
crypto/engine/engine.h
crypto/engine/engine.h
+1
-0
未找到文件。
crypto/engine/Makefile
浏览文件 @
37f010e2
...
...
@@ -22,13 +22,13 @@ LIBSRC= eng_err.c eng_lib.c eng_list.c eng_init.c eng_ctrl.c \
tb_rsa.c tb_dsa.c tb_ecdsa.c tb_dh.c tb_ecdh.c tb_rand.c tb_store.c
\
tb_cipher.c tb_digest.c tb_pkmeth.c tb_asnmth.c
\
eng_openssl.c eng_cnf.c eng_dyn.c eng_cryptodev.c
\
eng_aesni.c eng_rsax.c
eng_aesni.c eng_rsax.c
eng_rdrand.c
LIBOBJ
=
eng_err.o eng_lib.o eng_list.o eng_init.o eng_ctrl.o
\
eng_table.o eng_pkey.o eng_fat.o eng_all.o
\
tb_rsa.o tb_dsa.o tb_ecdsa.o tb_dh.o tb_ecdh.o tb_rand.o tb_store.o
\
tb_cipher.o tb_digest.o tb_pkmeth.o tb_asnmth.o
\
eng_openssl.o eng_cnf.o eng_dyn.o eng_cryptodev.o
\
eng_aesni.o eng_rsax.o
eng_aesni.o eng_rsax.o
eng_rdrand.o
SRC
=
$(LIBSRC)
...
...
crypto/engine/eng_all.c
浏览文件 @
37f010e2
...
...
@@ -78,6 +78,9 @@ void ENGINE_load_builtin_engines(void)
#endif
#ifndef OPENSSL_NO_RSAX
ENGINE_load_rsax
();
#endif
#ifndef OPENSSL_NO_RDRAND
ENGINE_load_rdrand
();
#endif
ENGINE_load_dynamic
();
#ifndef OPENSSL_NO_STATIC_ENGINE
...
...
crypto/engine/eng_rdrand.c
0 → 100644
浏览文件 @
37f010e2
/* ====================================================================
* Copyright (c) 2011 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.
* ====================================================================
*/
#include <openssl/opensslconf.h>
#include <stdio.h>
#include <string.h>
#include <openssl/engine.h>
#if (defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
defined(__x86_64) || defined(__x86_64__) || \
defined(_M_AMD64) || defined (_M_X64)) && !defined(OPENSSL_NO_ASM)
size_t
OPENSSL_ia32_rdrand
(
void
);
static
int
get_random_bytes
(
unsigned
char
*
buf
,
size_t
num
)
{
size_t
rnd
;
while
(
num
>=
sizeof
(
size_t
))
{
if
((
rnd
=
OPENSSL_ia32_rdrand
())
==
0
)
return
0
;
*
((
size_t
*
)
buf
)
=
rnd
;
buf
+=
sizeof
(
size_t
);
num
-=
sizeof
(
size_t
);
}
if
(
num
)
{
if
((
rnd
=
OPENSSL_ia32_rdrand
())
==
0
)
return
0
;
memcpy
(
buf
,
&
rnd
,
num
);
}
return
1
;
}
static
int
random_status
(
void
)
{
return
1
;
}
static
RAND_METHOD
rdrand_meth
=
{
NULL
,
/* seed */
get_random_bytes
,
NULL
,
/* cleanup */
NULL
,
/* add */
get_random_bytes
,
random_status
,
};
static
int
rdrand_init
(
ENGINE
*
e
)
{
return
1
;
}
static
const
char
*
engine_e_rdrand_id
=
"rdrand"
;
static
const
char
*
engine_e_rdrand_name
=
"Intel RDRAND engine"
;
static
int
bind_helper
(
ENGINE
*
e
)
{
if
(
!
ENGINE_set_id
(
e
,
engine_e_rdrand_id
)
||
!
ENGINE_set_name
(
e
,
engine_e_rdrand_name
)
||
!
ENGINE_set_init_function
(
e
,
rdrand_init
)
||
!
ENGINE_set_RAND
(
e
,
&
rdrand_meth
)
)
return
0
;
return
1
;
}
static
ENGINE
*
ENGINE_rdrand
(
void
)
{
ENGINE
*
ret
=
ENGINE_new
();
if
(
!
ret
)
return
NULL
;
if
(
!
bind_helper
(
ret
))
{
ENGINE_free
(
ret
);
return
NULL
;
}
return
ret
;
}
void
ENGINE_load_rdrand
(
void
)
{
extern
OPENSSL_ia32cap_P
[];
if
(
OPENSSL_ia32cap_P
[
1
]
&
(
1
<<
(
62
-
32
)))
{
ENGINE
*
toadd
=
ENGINE_rdrand
();
if
(
!
toadd
)
return
;
ENGINE_add
(
toadd
);
ENGINE_free
(
toadd
);
ERR_clear_error
();
}
}
#else
void
ENGINE_load_rdrand
(
void
)
{}
#endif
crypto/engine/engine.h
浏览文件 @
37f010e2
...
...
@@ -353,6 +353,7 @@ void ENGINE_load_gost(void);
void
ENGINE_load_cryptodev
(
void
);
void
ENGINE_load_aesni
(
void
);
void
ENGINE_load_rsax
(
void
);
void
ENGINE_load_rdrand
(
void
);
void
ENGINE_load_builtin_engines
(
void
);
/* Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录