Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
openssl
提交
4a3dc3c0
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,发现更多精彩内容 >>
提交
4a3dc3c0
编写于
4月 09, 2006
作者:
D
Dr. Stephen Henson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add RSA ctrl for padding mode, add ctrl support in pkeyutl.
上级
a2318e86
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
83 addition
and
6 deletion
+83
-6
apps/apps.c
apps/apps.c
+2
-2
apps/apps.h
apps/apps.h
+1
-0
apps/pkeyutl.c
apps/pkeyutl.c
+21
-2
crypto/evp/evp.h
crypto/evp/evp.h
+3
-0
crypto/evp/pmeth_lib.c
crypto/evp/pmeth_lib.c
+2
-1
crypto/rsa/rsa.h
crypto/rsa/rsa.h
+6
-0
crypto/rsa/rsa_pmeth.c
crypto/rsa/rsa_pmeth.c
+48
-1
未找到文件。
apps/apps.c
浏览文件 @
4a3dc3c0
...
...
@@ -2304,11 +2304,11 @@ int bio_to_mem(unsigned char **out, int maxlen, BIO *in)
return
ret
;
}
int
pkey_ctrl_string
(
BIO
*
err
,
EVP_PKEY_CTX
*
ctx
,
char
*
value
)
int
pkey_ctrl_string
(
EVP_PKEY_CTX
*
ctx
,
char
*
value
)
{
int
rv
;
char
*
stmp
,
*
vtmp
=
NULL
;
stmp
=
BUF_strdup
(
value
);
int
rv
;
if
(
!
stmp
)
return
-
1
;
vtmp
=
strchr
(
stmp
,
':'
);
...
...
apps/apps.h
浏览文件 @
4a3dc3c0
...
...
@@ -286,6 +286,7 @@ int args_verify(char ***pargs, int *pargc,
int
*
badarg
,
BIO
*
err
,
X509_VERIFY_PARAM
**
pm
);
void
policies_print
(
BIO
*
out
,
X509_STORE_CTX
*
ctx
);
int
bio_to_mem
(
unsigned
char
**
out
,
int
maxlen
,
BIO
*
in
);
int
pkey_ctrl_string
(
EVP_PKEY_CTX
*
ctx
,
char
*
value
);
#define FORMAT_UNDEF 0
#define FORMAT_ASN1 1
...
...
apps/pkeyutl.c
浏览文件 @
4a3dc3c0
...
...
@@ -154,8 +154,10 @@ int MAIN(int argc, char **argv)
#ifndef OPENSSL_NO_ENGINE
else
if
(
!
strcmp
(
*
argv
,
"-engine"
))
{
if
(
--
argc
<
1
)
badarg
=
1
;
engine
=
*
(
++
argv
);
if
(
--
argc
<
1
)
badarg
=
1
;
else
engine
=
*
(
++
argv
);
}
#endif
else
if
(
!
strcmp
(
*
argv
,
"-pubin"
))
...
...
@@ -178,6 +180,23 @@ int MAIN(int argc, char **argv)
pkey_op
=
EVP_PKEY_OP_ENCRYPT
;
else
if
(
!
strcmp
(
*
argv
,
"-decrypt"
))
pkey_op
=
EVP_PKEY_OP_DECRYPT
;
else
if
(
strcmp
(
*
argv
,
"-param"
)
==
0
)
{
if
(
--
argc
<
1
)
badarg
=
1
;
if
(
!
ctx
)
{
BIO_puts
(
bio_err
,
"-param command before -inkey
\n
"
);
badarg
=
1
;
}
else
if
(
pkey_ctrl_string
(
ctx
,
*
(
++
argv
))
<=
0
)
{
BIO_puts
(
bio_err
,
"parameter setting error
\n
"
);
ERR_print_errors
(
bio_err
);
goto
end
;
}
}
else
badarg
=
1
;
if
(
badarg
)
{
...
...
crypto/evp/evp.h
浏览文件 @
4a3dc3c0
...
...
@@ -917,8 +917,11 @@ void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth,
const
EVP_PKEY_METHOD
*
EVP_PKEY_meth_find
(
int
type
,
ENGINE
*
e
);
EVP_PKEY_CTX
*
EVP_PKEY_CTX_new
(
EVP_PKEY
*
pkey
);
void
EVP_PKEY_CTX_free
(
EVP_PKEY_CTX
*
ctx
);
int
EVP_PKEY_CTX_ctrl
(
EVP_PKEY_CTX
*
ctx
,
int
keytype
,
int
optype
,
int
cmd
,
int
p1
,
void
*
p2
);
int
EVP_PKEY_CTX_ctrl_str
(
EVP_PKEY_CTX
*
ctx
,
const
char
*
type
,
const
char
*
value
);
int
EVP_PKEY_sign_init
(
EVP_PKEY_CTX
*
ctx
);
...
...
crypto/evp/pmeth_lib.c
浏览文件 @
4a3dc3c0
...
...
@@ -171,7 +171,8 @@ int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
}
int
EVP_PKEY_CTX_ctrl_str
(
EVP_PKEY_CTX
*
ctx
,
char
*
name
,
char
*
value
)
int
EVP_PKEY_CTX_ctrl_str
(
EVP_PKEY_CTX
*
ctx
,
const
char
*
name
,
const
char
*
value
)
{
if
(
!
ctx
||
!
ctx
->
pmeth
||
!
ctx
->
pmeth
->
ctrl
)
{
...
...
crypto/rsa/rsa.h
浏览文件 @
4a3dc3c0
...
...
@@ -192,6 +192,12 @@ struct rsa_st
* be used for all exponents.
*/
#define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_CTRL_RSA_PADDING, \
pad, NULL)
#define EVP_PKEY_CTRL_RSA_PADDING 1
#define RSA_PKCS1_PADDING 1
#define RSA_SSLV23_PADDING 2
#define RSA_NO_PADDING 3
...
...
crypto/rsa/rsa_pmeth.c
浏览文件 @
4a3dc3c0
...
...
@@ -151,6 +151,52 @@ static int pkey_rsa_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, int *outlen,
return
1
;
}
static
int
pkey_rsa_ctrl
(
EVP_PKEY_CTX
*
ctx
,
int
type
,
int
p1
,
void
*
p2
)
{
RSA_PKEY_CTX
*
rctx
=
ctx
->
data
;
switch
(
type
)
{
case
EVP_PKEY_CTRL_RSA_PADDING
:
/* TODO: add PSS support */
if
((
p1
>=
RSA_PKCS1_PADDING
)
&&
(
p1
<=
RSA_X931_PADDING
))
{
rctx
->
pad_mode
=
p1
;
return
1
;
}
return
0
;
default:
return
-
2
;
}
}
static
int
pkey_rsa_ctrl_str
(
EVP_PKEY_CTX
*
ctx
,
const
char
*
type
,
const
char
*
value
)
{
if
(
!
strcmp
(
type
,
"rsa_padding_mode"
))
{
int
pm
;
if
(
!
value
)
return
0
;
if
(
!
strcmp
(
value
,
"pkcs1"
))
pm
=
RSA_PKCS1_PADDING
;
else
if
(
!
strcmp
(
value
,
"sslv23"
))
pm
=
RSA_SSLV23_PADDING
;
else
if
(
!
strcmp
(
value
,
"none"
))
pm
=
RSA_NO_PADDING
;
else
if
(
!
strcmp
(
value
,
"oeap"
))
pm
=
RSA_PKCS1_OAEP_PADDING
;
else
if
(
!
strcmp
(
value
,
"x931"
))
pm
=
RSA_X931_PADDING
;
else
return
-
2
;
return
pkey_rsa_ctrl
(
ctx
,
EVP_PKEY_CTRL_RSA_PADDING
,
pm
,
NULL
);
}
return
-
2
;
}
const
EVP_PKEY_METHOD
rsa_pkey_meth
=
{
EVP_PKEY_RSA
,
...
...
@@ -179,7 +225,8 @@ const EVP_PKEY_METHOD rsa_pkey_meth =
0
,
pkey_rsa_decrypt
,
0
,
0
pkey_rsa_ctrl
,
pkey_rsa_ctrl_str
};
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录