Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
openssl
提交
a0156a92
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,发现更多精彩内容 >>
提交
a0156a92
编写于
8月 31, 2005
作者:
D
Dr. Stephen Henson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Integrated support for PVK files.
上级
96998822
变更
9
展开全部
显示空白变更内容
内联
并排
Showing
9 changed file
with
1059 addition
and
16 deletion
+1059
-16
CHANGES
CHANGES
+5
-0
apps/apps.c
apps/apps.c
+19
-5
apps/apps.h
apps/apps.h
+2
-0
apps/dsa.c
apps/dsa.c
+24
-9
apps/rsa.c
apps/rsa.c
+19
-0
crypto/pem/Makefile
crypto/pem/Makefile
+2
-2
crypto/pem/pem.h
crypto/pem/pem.h
+35
-0
crypto/pem/pem_err.c
crypto/pem/pem_err.c
+23
-0
crypto/pem/pvkfmt.c
crypto/pem/pvkfmt.c
+930
-0
未找到文件。
CHANGES
浏览文件 @
a0156a92
...
...
@@ -4,6 +4,11 @@
Changes between 0.9.8a and 0.9.9 [xx XXX xxxx]
*) Integrated support for PVK file format and some related formats such
as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support
these in the 'rsa' and 'dsa' utilities.
[Steve Henson]
*) Support for PKCS#1 RSAPublicKey format on rsa utility command line.
[Steve Henson]
...
...
apps/apps.c
浏览文件 @
a0156a92
...
...
@@ -239,11 +239,18 @@ int str2fmt(char *s)
else
if
((
*
s
==
'T'
)
||
(
*
s
==
't'
))
return
(
FORMAT_TEXT
);
else
if
((
*
s
==
'P'
)
||
(
*
s
==
'p'
))
{
if
(
s
[
1
]
==
'V'
||
s
[
1
]
==
'v'
)
return
FORMAT_PVK
;
else
return
(
FORMAT_PEM
);
}
else
if
((
*
s
==
'N'
)
||
(
*
s
==
'n'
))
return
(
FORMAT_NETSCAPE
);
else
if
((
*
s
==
'S'
)
||
(
*
s
==
's'
))
return
(
FORMAT_SMIME
);
else
if
((
*
s
==
'M'
)
||
(
*
s
==
'm'
))
return
(
FORMAT_MSBLOB
);
else
if
((
*
s
==
'1'
)
||
(
strcmp
(
s
,
"PKCS12"
)
==
0
)
||
(
strcmp
(
s
,
"pkcs12"
)
==
0
)
||
(
strcmp
(
s
,
"P12"
)
==
0
)
||
(
strcmp
(
s
,
"p12"
)
==
0
))
...
...
@@ -879,6 +886,11 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
&
pkey
,
NULL
,
NULL
))
goto
end
;
}
else
if
(
format
==
FORMAT_MSBLOB
)
pkey
=
b2i_PrivateKey_bio
(
key
);
else
if
(
format
==
FORMAT_PVK
)
pkey
=
b2i_PVK_bio
(
key
,
(
pem_password_cb
*
)
password_callback
,
&
cb_data
);
else
{
BIO_printf
(
err
,
"bad input format specified for key file
\n
"
);
...
...
@@ -979,6 +991,8 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
else
if
(
format
==
FORMAT_NETSCAPE
||
format
==
FORMAT_IISSGC
)
pkey
=
load_netscape_key
(
err
,
key
,
file
,
key_descrip
,
format
);
#endif
else
if
(
format
==
FORMAT_MSBLOB
)
pkey
=
b2i_PublicKey_bio
(
key
);
else
{
BIO_printf
(
err
,
"bad input format specified for key file
\n
"
);
...
...
apps/apps.h
浏览文件 @
a0156a92
...
...
@@ -333,6 +333,8 @@ void policies_print(BIO *out, X509_STORE_CTX *ctx);
* adding yet another param to load_*key() */
#define FORMAT_PEMRSA 9
/* PEM RSAPubicKey format */
#define FORMAT_ASN1RSA 10
/* DER RSAPubicKey format */
#define FORMAT_MSBLOB 11
/* MS Key blob format */
#define FORMAT_PVK 12
/* MS PVK file format */
#define EXT_COPY_NONE 0
#define EXT_COPY_ADD 1
...
...
apps/dsa.c
浏览文件 @
a0156a92
...
...
@@ -249,16 +249,22 @@ bad:
}
BIO_printf
(
bio_err
,
"read DSA key
\n
"
);
if
(
informat
==
FORMAT_ASN1
)
{
if
(
pubin
)
dsa
=
d2i_DSA_PUBKEY_bio
(
in
,
NULL
);
else
dsa
=
d2i_DSAPrivateKey_bio
(
in
,
NULL
);
}
else
if
(
informat
==
FORMAT_PEM
)
{
if
(
pubin
)
dsa
=
PEM_read_bio_DSA_PUBKEY
(
in
,
NULL
,
NULL
,
NULL
);
else
dsa
=
PEM_read_bio_DSAPrivateKey
(
in
,
NULL
,
NULL
,
passin
);
}
else
{
BIO_printf
(
bio_err
,
"bad input format specified for key
\n
"
);
goto
end
;
EVP_PKEY
*
pkey
;
if
(
pubin
)
pkey
=
load_pubkey
(
bio_err
,
infile
,
informat
,
1
,
passin
,
e
,
"Public Key"
);
else
pkey
=
load_key
(
bio_err
,
infile
,
informat
,
1
,
passin
,
e
,
"Private Key"
);
if
(
pkey
)
{
dsa
=
EVP_PKEY_get1_DSA
(
pkey
);
EVP_PKEY_free
(
pkey
);
}
}
if
(
dsa
==
NULL
)
{
...
...
@@ -311,6 +317,15 @@ bad:
i
=
PEM_write_bio_DSA_PUBKEY
(
out
,
dsa
);
else
i
=
PEM_write_bio_DSAPrivateKey
(
out
,
dsa
,
enc
,
NULL
,
0
,
NULL
,
passout
);
}
else
if
(
outformat
==
FORMAT_MSBLOB
)
{
EVP_PKEY
*
pk
;
pk
=
EVP_PKEY_new
();
EVP_PKEY_set1_DSA
(
pk
,
dsa
);
if
(
pubin
||
pubout
)
i
=
i2b_PublicKey_bio
(
out
,
pk
);
else
i
=
i2b_PrivateKey_bio
(
out
,
pk
);
EVP_PKEY_free
(
pk
);
}
else
{
BIO_printf
(
bio_err
,
"bad output format specified for outfile
\n
"
);
goto
end
;
...
...
apps/rsa.c
浏览文件 @
a0156a92
...
...
@@ -111,6 +111,8 @@ int MAIN(int argc, char **argv)
#endif
int
modulus
=
0
;
int
pvk_encr
=
2
;
apps_startup
();
if
(
bio_err
==
NULL
)
...
...
@@ -177,6 +179,12 @@ int MAIN(int argc, char **argv)
pubin
=
2
;
else
if
(
strcmp
(
*
argv
,
"-RSAPublicKey_out"
)
==
0
)
pubout
=
2
;
else
if
(
strcmp
(
*
argv
,
"-pvk-strong"
)
==
0
)
pvk_encr
=
2
;
else
if
(
strcmp
(
*
argv
,
"-pvk-weak"
)
==
0
)
pvk_encr
=
1
;
else
if
(
strcmp
(
*
argv
,
"-pvk-none"
)
==
0
)
pvk_encr
=
0
;
else
if
(
strcmp
(
*
argv
,
"-noout"
)
==
0
)
noout
=
1
;
else
if
(
strcmp
(
*
argv
,
"-text"
)
==
0
)
...
...
@@ -390,6 +398,17 @@ bad:
}
else
i
=
PEM_write_bio_RSAPrivateKey
(
out
,
rsa
,
enc
,
NULL
,
0
,
NULL
,
passout
);
}
else
if
(
outformat
==
FORMAT_MSBLOB
||
outformat
==
FORMAT_PVK
)
{
EVP_PKEY
*
pk
;
pk
=
EVP_PKEY_new
();
EVP_PKEY_set1_RSA
(
pk
,
rsa
);
if
(
outformat
==
FORMAT_PVK
)
i
=
i2b_PVK_bio
(
out
,
pk
,
pvk_encr
,
0
,
passout
);
else
if
(
pubin
||
pubout
)
i
=
i2b_PublicKey_bio
(
out
,
pk
);
else
i
=
i2b_PrivateKey_bio
(
out
,
pk
);
EVP_PKEY_free
(
pk
);
}
else
{
BIO_printf
(
bio_err
,
"bad output format specified for outfile
\n
"
);
goto
end
;
...
...
crypto/pem/Makefile
浏览文件 @
a0156a92
...
...
@@ -18,10 +18,10 @@ APPS=
LIB
=
$(TOP)
/libcrypto.a
LIBSRC
=
pem_sign.c pem_seal.c pem_info.c pem_lib.c pem_all.c pem_err.c
\
pem_x509.c pem_xaux.c pem_oth.c pem_pk8.c pem_pkey.c
pem_x509.c pem_xaux.c pem_oth.c pem_pk8.c pem_pkey.c
pvkfmt.c
LIBOBJ
=
pem_sign.o pem_seal.o pem_info.o pem_lib.o pem_all.o pem_err.o
\
pem_x509.o pem_xaux.o pem_oth.o pem_pk8.o pem_pkey.o
pem_x509.o pem_xaux.o pem_oth.o pem_pk8.o pem_pkey.o
pvkfmt.o
SRC
=
$(LIBSRC)
...
...
crypto/pem/pem.h
浏览文件 @
a0156a92
...
...
@@ -677,6 +677,18 @@ int PEM_write_PKCS8PrivateKey(FILE *fp,EVP_PKEY *x,const EVP_CIPHER *enc,
#endif
/* SSLEAY_MACROS */
EVP_PKEY
*
b2i_PrivateKey
(
const
unsigned
char
**
in
,
long
length
);
EVP_PKEY
*
b2i_PublicKey
(
const
unsigned
char
**
in
,
long
length
);
EVP_PKEY
*
b2i_PrivateKey_bio
(
BIO
*
in
);
EVP_PKEY
*
b2i_PublicKey_bio
(
BIO
*
in
);
int
i2b_PrivateKey_bio
(
BIO
*
out
,
EVP_PKEY
*
pk
);
int
i2b_PublicKey_bio
(
BIO
*
out
,
EVP_PKEY
*
pk
);
EVP_PKEY
*
b2i_PVK_bio
(
BIO
*
in
,
pem_password_cb
*
cb
,
void
*
u
);
int
i2b_PVK_bio
(
BIO
*
out
,
EVP_PKEY
*
pk
,
int
enclevel
,
pem_password_cb
*
cb
,
void
*
u
);
/* BEGIN ERROR CODES */
/* The following lines are auto generated by the script mkerr.pl. Any changes
* made after this point may be overwritten when the script is next run.
...
...
@@ -686,10 +698,22 @@ void ERR_load_PEM_strings(void);
/* Error codes for the PEM functions. */
/* Function codes. */
#define PEM_F_B2I_DSS 127
#define PEM_F_B2I_PVK_BIO 128
#define PEM_F_B2I_RSA 129
#define PEM_F_CHECK_BITLEN_DSA 130
#define PEM_F_CHECK_BITLEN_RSA 131
#define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120
#define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121
#define PEM_F_DO_B2I 132
#define PEM_F_DO_B2I_BIO 133
#define PEM_F_DO_BLOB_HEADER 134
#define PEM_F_DO_PK8PKEY 126
#define PEM_F_DO_PK8PKEY_FP 125
#define PEM_F_DO_PVK_BODY 135
#define PEM_F_DO_PVK_HEADER 136
#define PEM_F_I2B_PVK 137
#define PEM_F_I2B_PVK_BIO 138
#define PEM_F_LOAD_IV 101
#define PEM_F_PEM_ASN1_READ 102
#define PEM_F_PEM_ASN1_READ_BIO 103
...
...
@@ -718,18 +742,29 @@ void ERR_load_PEM_strings(void);
#define PEM_R_BAD_DECRYPT 101
#define PEM_R_BAD_END_LINE 102
#define PEM_R_BAD_IV_CHARS 103
#define PEM_R_BAD_MAGIC_NUMBER 116
#define PEM_R_BAD_PASSWORD_READ 104
#define PEM_R_BAD_VERSION_NUMBER 117
#define PEM_R_BIO_WRITE_FAILURE 118
#define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115
#define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119
#define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120
#define PEM_R_INCONSISTENT_HEADER 121
#define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122
#define PEM_R_KEYBLOB_TOO_SHORT 123
#define PEM_R_NOT_DEK_INFO 105
#define PEM_R_NOT_ENCRYPTED 106
#define PEM_R_NOT_PROC_TYPE 107
#define PEM_R_NO_START_LINE 108
#define PEM_R_PROBLEMS_GETTING_PASSWORD 109
#define PEM_R_PUBLIC_KEY_NO_RSA 110
#define PEM_R_PVK_DATA_TOO_SHORT 124
#define PEM_R_PVK_TOO_SHORT 125
#define PEM_R_READ_KEY 111
#define PEM_R_SHORT_HEADER 112
#define PEM_R_UNSUPPORTED_CIPHER 113
#define PEM_R_UNSUPPORTED_ENCRYPTION 114
#define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126
#ifdef __cplusplus
}
...
...
crypto/pem/pem_err.c
浏览文件 @
a0156a92
...
...
@@ -70,10 +70,22 @@
static
ERR_STRING_DATA
PEM_str_functs
[]
=
{
{
ERR_FUNC
(
PEM_F_B2I_DSS
),
"B2I_DSS"
},
{
ERR_FUNC
(
PEM_F_B2I_PVK_BIO
),
"B2I_PVK_BIO"
},
{
ERR_FUNC
(
PEM_F_B2I_RSA
),
"B2I_RSA"
},
{
ERR_FUNC
(
PEM_F_CHECK_BITLEN_DSA
),
"CHECK_BITLEN_DSA"
},
{
ERR_FUNC
(
PEM_F_CHECK_BITLEN_RSA
),
"CHECK_BITLEN_RSA"
},
{
ERR_FUNC
(
PEM_F_D2I_PKCS8PRIVATEKEY_BIO
),
"d2i_PKCS8PrivateKey_bio"
},
{
ERR_FUNC
(
PEM_F_D2I_PKCS8PRIVATEKEY_FP
),
"d2i_PKCS8PrivateKey_fp"
},
{
ERR_FUNC
(
PEM_F_DO_B2I
),
"DO_B2I"
},
{
ERR_FUNC
(
PEM_F_DO_B2I_BIO
),
"DO_B2I_BIO"
},
{
ERR_FUNC
(
PEM_F_DO_BLOB_HEADER
),
"DO_BLOB_HEADER"
},
{
ERR_FUNC
(
PEM_F_DO_PK8PKEY
),
"DO_PK8PKEY"
},
{
ERR_FUNC
(
PEM_F_DO_PK8PKEY_FP
),
"DO_PK8PKEY_FP"
},
{
ERR_FUNC
(
PEM_F_DO_PVK_BODY
),
"DO_PVK_BODY"
},
{
ERR_FUNC
(
PEM_F_DO_PVK_HEADER
),
"DO_PVK_HEADER"
},
{
ERR_FUNC
(
PEM_F_I2B_PVK
),
"I2B_PVK"
},
{
ERR_FUNC
(
PEM_F_I2B_PVK_BIO
),
"I2B_PVK_BIO"
},
{
ERR_FUNC
(
PEM_F_LOAD_IV
),
"LOAD_IV"
},
{
ERR_FUNC
(
PEM_F_PEM_ASN1_READ
),
"PEM_ASN1_read"
},
{
ERR_FUNC
(
PEM_F_PEM_ASN1_READ_BIO
),
"PEM_ASN1_read_bio"
},
...
...
@@ -105,18 +117,29 @@ static ERR_STRING_DATA PEM_str_reasons[]=
{
ERR_REASON
(
PEM_R_BAD_DECRYPT
)
,
"bad decrypt"
},
{
ERR_REASON
(
PEM_R_BAD_END_LINE
)
,
"bad end line"
},
{
ERR_REASON
(
PEM_R_BAD_IV_CHARS
)
,
"bad iv chars"
},
{
ERR_REASON
(
PEM_R_BAD_MAGIC_NUMBER
)
,
"bad magic number"
},
{
ERR_REASON
(
PEM_R_BAD_PASSWORD_READ
)
,
"bad password read"
},
{
ERR_REASON
(
PEM_R_BAD_VERSION_NUMBER
)
,
"bad version number"
},
{
ERR_REASON
(
PEM_R_BIO_WRITE_FAILURE
)
,
"bio write failure"
},
{
ERR_REASON
(
PEM_R_ERROR_CONVERTING_PRIVATE_KEY
),
"error converting private key"
},
{
ERR_REASON
(
PEM_R_EXPECTING_PRIVATE_KEY_BLOB
),
"expecting private key blob"
},
{
ERR_REASON
(
PEM_R_EXPECTING_PUBLIC_KEY_BLOB
),
"expecting public key blob"
},
{
ERR_REASON
(
PEM_R_INCONSISTENT_HEADER
)
,
"inconsistent header"
},
{
ERR_REASON
(
PEM_R_KEYBLOB_HEADER_PARSE_ERROR
),
"keyblob header parse error"
},
{
ERR_REASON
(
PEM_R_KEYBLOB_TOO_SHORT
)
,
"keyblob too short"
},
{
ERR_REASON
(
PEM_R_NOT_DEK_INFO
)
,
"not dek info"
},
{
ERR_REASON
(
PEM_R_NOT_ENCRYPTED
)
,
"not encrypted"
},
{
ERR_REASON
(
PEM_R_NOT_PROC_TYPE
)
,
"not proc type"
},
{
ERR_REASON
(
PEM_R_NO_START_LINE
)
,
"no start line"
},
{
ERR_REASON
(
PEM_R_PROBLEMS_GETTING_PASSWORD
),
"problems getting password"
},
{
ERR_REASON
(
PEM_R_PUBLIC_KEY_NO_RSA
)
,
"public key no rsa"
},
{
ERR_REASON
(
PEM_R_PVK_DATA_TOO_SHORT
)
,
"pvk data too short"
},
{
ERR_REASON
(
PEM_R_PVK_TOO_SHORT
)
,
"pvk too short"
},
{
ERR_REASON
(
PEM_R_READ_KEY
)
,
"read key"
},
{
ERR_REASON
(
PEM_R_SHORT_HEADER
)
,
"short header"
},
{
ERR_REASON
(
PEM_R_UNSUPPORTED_CIPHER
)
,
"unsupported cipher"
},
{
ERR_REASON
(
PEM_R_UNSUPPORTED_ENCRYPTION
),
"unsupported encryption"
},
{
ERR_REASON
(
PEM_R_UNSUPPORTED_KEY_COMPONENTS
),
"unsupported key components"
},
{
0
,
NULL
}
};
...
...
crypto/pem/pvkfmt.c
0 → 100644
浏览文件 @
a0156a92
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录