Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
openssl
提交
4d6e1e4f
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,发现更多精彩内容 >>
提交
4d6e1e4f
编写于
11月 01, 2008
作者:
B
Ben Laurie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
size_tification.
上级
122396f2
变更
46
隐藏空白更改
内联
并排
Showing
46 changed file
with
355 addition
and
297 deletion
+355
-297
apps/s_apps.h
apps/s_apps.h
+6
-3
apps/s_cb.c
apps/s_cb.c
+1
-1
apps/s_socket.c
apps/s_socket.c
+3
-1
crypto/asn1/a_bitstr.c
crypto/asn1/a_bitstr.c
+14
-14
crypto/asn1/a_bool.c
crypto/asn1/a_bool.c
+2
-2
crypto/asn1/a_bytes.c
crypto/asn1/a_bytes.c
+4
-4
crypto/asn1/a_int.c
crypto/asn1/a_int.c
+9
-9
crypto/asn1/a_mbstr.c
crypto/asn1/a_mbstr.c
+7
-7
crypto/asn1/a_object.c
crypto/asn1/a_object.c
+18
-15
crypto/asn1/a_octet.c
crypto/asn1/a_octet.c
+7
-5
crypto/asn1/a_print.c
crypto/asn1/a_print.c
+1
-1
crypto/asn1/a_set.c
crypto/asn1/a_set.c
+1
-1
crypto/asn1/a_strnid.c
crypto/asn1/a_strnid.c
+1
-1
crypto/asn1/a_time.c
crypto/asn1/a_time.c
+3
-2
crypto/asn1/a_utf8.c
crypto/asn1/a_utf8.c
+2
-2
crypto/asn1/asn1.h
crypto/asn1/asn1.h
+63
-56
crypto/asn1/asn1_gen.c
crypto/asn1/asn1_gen.c
+1
-1
crypto/asn1/asn1_lib.c
crypto/asn1/asn1_lib.c
+23
-19
crypto/asn1/asn1_mac.h
crypto/asn1/asn1_mac.h
+1
-1
crypto/asn1/asn1_par.c
crypto/asn1/asn1_par.c
+14
-12
crypto/asn1/asn_pack.c
crypto/asn1/asn_pack.c
+2
-2
crypto/asn1/evp_asn1.c
crypto/asn1/evp_asn1.c
+4
-4
crypto/asn1/tasn_dec.c
crypto/asn1/tasn_dec.c
+3
-2
crypto/bio/bio.h
crypto/bio/bio.h
+9
-7
crypto/bio/bio_cb.c
crypto/bio/bio_cb.c
+1
-1
crypto/bio/bio_lib.c
crypto/bio/bio_lib.c
+12
-10
crypto/bn/asm/x86_64-gcc.c
crypto/bn/asm/x86_64-gcc.c
+1
-1
crypto/bn/bn.h
crypto/bn/bn.h
+20
-15
crypto/bn/bn_add.c
crypto/bn/bn_add.c
+3
-3
crypto/bn/bn_div.c
crypto/bn/bn_div.c
+7
-6
crypto/bn/bn_exp.c
crypto/bn/bn_exp.c
+8
-5
crypto/bn/bn_lcl.h
crypto/bn/bn_lcl.h
+15
-13
crypto/bn/bn_lib.c
crypto/bn/bn_lib.c
+6
-6
crypto/bn/bn_mpi.c
crypto/bn/bn_mpi.c
+1
-1
crypto/bn/bn_mul.c
crypto/bn/bn_mul.c
+12
-12
crypto/bn/bn_nist.c
crypto/bn/bn_nist.c
+3
-2
crypto/bn/bn_print.c
crypto/bn/bn_print.c
+2
-2
crypto/bn/bn_rand.c
crypto/bn/bn_rand.c
+5
-4
crypto/bn/bn_recp.c
crypto/bn/bn_recp.c
+1
-1
crypto/bn/bn_word.c
crypto/bn/bn_word.c
+7
-0
crypto/crypto.h
crypto/crypto.h
+19
-13
crypto/mem.c
crypto/mem.c
+13
-13
crypto/mem_dbg.c
crypto/mem_dbg.c
+5
-5
crypto/objects/o_names.c
crypto/objects/o_names.c
+2
-2
crypto/objects/obj_dat.c
crypto/objects/obj_dat.c
+11
-9
crypto/objects/objects.h
crypto/objects/objects.h
+2
-1
未找到文件。
apps/s_apps.h
浏览文件 @
4d6e1e4f
...
...
@@ -148,7 +148,9 @@ typedef fd_mask fd_set;
#define PORT_STR "4433"
#define PROTOCOL "tcp"
int
do_server
(
int
port
,
int
type
,
int
*
ret
,
int
(
*
cb
)
(
char
*
hostname
,
int
s
,
unsigned
char
*
context
),
unsigned
char
*
context
);
int
do_server
(
int
port
,
int
type
,
int
*
ret
,
int
(
*
cb
)
(
char
*
hostname
,
int
s
,
unsigned
char
*
context
),
unsigned
char
*
context
);
#ifdef HEADER_X509_H
int
MS_CALLBACK
verify_callback
(
int
ok
,
X509_STORE_CTX
*
ctx
);
#endif
...
...
@@ -162,11 +164,12 @@ int extract_port(char *str, short *port_ptr);
int
extract_host_port
(
char
*
str
,
char
**
host_ptr
,
unsigned
char
*
ip
,
short
*
p
);
long
MS_CALLBACK
bio_dump_callback
(
BIO
*
bio
,
int
cmd
,
const
char
*
argp
,
in
t
argi
,
long
argl
,
long
ret
);
size_
t
argi
,
long
argl
,
long
ret
);
#ifdef HEADER_SSL_H
void
MS_CALLBACK
apps_ssl_info_callback
(
const
SSL
*
s
,
int
where
,
int
ret
);
void
MS_CALLBACK
msg_cb
(
int
write_p
,
int
version
,
int
content_type
,
const
void
*
buf
,
size_t
len
,
SSL
*
ssl
,
void
*
arg
);
void
MS_CALLBACK
msg_cb
(
int
write_p
,
int
version
,
int
content_type
,
const
void
*
buf
,
size_t
len
,
SSL
*
ssl
,
void
*
arg
);
void
MS_CALLBACK
tlsext_cb
(
SSL
*
s
,
int
client_server
,
int
type
,
unsigned
char
*
data
,
int
len
,
void
*
arg
);
...
...
apps/s_cb.c
浏览文件 @
4d6e1e4f
...
...
@@ -260,7 +260,7 @@ int set_cert_key_stuff(SSL_CTX *ctx, X509 *cert, EVP_PKEY *key)
}
long
MS_CALLBACK
bio_dump_callback
(
BIO
*
bio
,
int
cmd
,
const
char
*
argp
,
in
t
argi
,
long
argl
,
long
ret
)
size_
t
argi
,
long
argl
,
long
ret
)
{
BIO
*
out
;
...
...
apps/s_socket.c
浏览文件 @
4d6e1e4f
...
...
@@ -279,7 +279,9 @@ static int init_client_ip(int *sock, unsigned char ip[4], int port, int type)
return
(
1
);
}
int
do_server
(
int
port
,
int
type
,
int
*
ret
,
int
(
*
cb
)(
char
*
hostname
,
int
s
,
unsigned
char
*
context
),
unsigned
char
*
context
)
int
do_server
(
int
port
,
int
type
,
int
*
ret
,
int
(
*
cb
)(
char
*
hostname
,
int
s
,
unsigned
char
*
context
),
unsigned
char
*
context
)
{
int
sock
;
char
*
name
=
NULL
;
...
...
crypto/asn1/a_bitstr.c
浏览文件 @
4d6e1e4f
...
...
@@ -60,12 +60,13 @@
#include "cryptlib.h"
#include <openssl/asn1.h>
int
ASN1_BIT_STRING_set
(
ASN1_BIT_STRING
*
x
,
unsigned
char
*
d
,
in
t
len
)
{
return
M_ASN1_BIT_STRING_set
(
x
,
d
,
len
);
}
int
ASN1_BIT_STRING_set
(
ASN1_BIT_STRING
*
x
,
unsigned
char
*
d
,
size_
t
len
)
{
return
M_ASN1_BIT_STRING_set
(
x
,
d
,
len
);
}
int
i2c_ASN1_BIT_STRING
(
ASN1_BIT_STRING
*
a
,
unsigned
char
**
pp
)
{
int
ret
,
j
,
bits
,
len
;
int
ret
,
j
,
bits
;
size_t
len
;
unsigned
char
*
p
,
*
d
;
if
(
a
==
NULL
)
return
(
0
);
...
...
@@ -114,7 +115,7 @@ int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp)
}
ASN1_BIT_STRING
*
c2i_ASN1_BIT_STRING
(
ASN1_BIT_STRING
**
a
,
const
unsigned
char
**
pp
,
long
len
)
const
unsigned
char
**
pp
,
size_t
len
)
{
ASN1_BIT_STRING
*
ret
=
NULL
;
const
unsigned
char
*
p
;
...
...
@@ -144,13 +145,13 @@ ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,
if
(
len
--
>
1
)
/* using one because of the bits left byte */
{
s
=
(
unsigned
char
*
)
OPENSSL_malloc
((
int
)
len
);
s
=
OPENSSL_malloc
(
len
);
if
(
s
==
NULL
)
{
i
=
ERR_R_MALLOC_FAILURE
;
goto
err
;
}
memcpy
(
s
,
p
,
(
int
)
len
);
memcpy
(
s
,
p
,
len
);
s
[
len
-
1
]
&=
(
0xff
<<
i
);
p
+=
len
;
}
...
...
@@ -173,9 +174,10 @@ err:
/* These next 2 functions from Goetz Babin-Ebell <babinebell@trustcenter.de>
*/
int
ASN1_BIT_STRING_set_bit
(
ASN1_BIT_STRING
*
a
,
in
t
n
,
int
value
)
int
ASN1_BIT_STRING_set_bit
(
ASN1_BIT_STRING
*
a
,
size_
t
n
,
int
value
)
{
int
w
,
v
,
iv
;
int
v
,
iv
;
size_t
w
;
unsigned
char
*
c
;
w
=
n
/
8
;
...
...
@@ -192,11 +194,9 @@ int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value)
{
if
(
!
value
)
return
(
1
);
/* Don't need to set */
if
(
a
->
data
==
NULL
)
c
=
(
unsigned
char
*
)
OPENSSL_malloc
(
w
+
1
);
c
=
OPENSSL_malloc
(
w
+
1
);
else
c
=
(
unsigned
char
*
)
OPENSSL_realloc_clean
(
a
->
data
,
a
->
length
,
w
+
1
);
c
=
OPENSSL_realloc_clean
(
a
->
data
,
a
->
length
,
w
+
1
);
if
(
c
==
NULL
)
{
ASN1err
(
ASN1_F_ASN1_BIT_STRING_SET_BIT
,
ERR_R_MALLOC_FAILURE
);
...
...
@@ -212,7 +212,7 @@ int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value)
return
(
1
);
}
int
ASN1_BIT_STRING_get_bit
(
ASN1_BIT_STRING
*
a
,
in
t
n
)
int
ASN1_BIT_STRING_get_bit
(
ASN1_BIT_STRING
*
a
,
size_
t
n
)
{
int
w
,
v
;
...
...
@@ -230,7 +230,7 @@ int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n)
* 'len' is the length of 'flags'.
*/
int
ASN1_BIT_STRING_check
(
ASN1_BIT_STRING
*
a
,
unsigned
char
*
flags
,
in
t
flags_len
)
unsigned
char
*
flags
,
size_
t
flags_len
)
{
int
i
,
ok
;
/* Check if there is one bit set at all. */
...
...
crypto/asn1/a_bool.c
浏览文件 @
4d6e1e4f
...
...
@@ -75,11 +75,11 @@ int i2d_ASN1_BOOLEAN(int a, unsigned char **pp)
return
(
r
);
}
int
d2i_ASN1_BOOLEAN
(
int
*
a
,
const
unsigned
char
**
pp
,
long
length
)
int
d2i_ASN1_BOOLEAN
(
int
*
a
,
const
unsigned
char
**
pp
,
size_t
length
)
{
int
ret
=
-
1
;
const
unsigned
char
*
p
;
long
len
;
size_t
len
;
int
inf
,
tag
,
xclass
;
int
i
=
0
;
...
...
crypto/asn1/a_bytes.c
浏览文件 @
4d6e1e4f
...
...
@@ -64,12 +64,12 @@ static int asn1_collate_primitive(ASN1_STRING *a, ASN1_const_CTX *c);
/* type is a 'bitmap' of acceptable string types.
*/
ASN1_STRING
*
d2i_ASN1_type_bytes
(
ASN1_STRING
**
a
,
const
unsigned
char
**
pp
,
long
length
,
int
type
)
size_t
length
,
int
type
)
{
ASN1_STRING
*
ret
=
NULL
;
const
unsigned
char
*
p
;
unsigned
char
*
s
;
long
len
;
size_t
len
;
int
inf
,
tag
,
xclass
;
int
i
=
0
;
...
...
@@ -155,12 +155,12 @@ int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass)
}
ASN1_STRING
*
d2i_ASN1_bytes
(
ASN1_STRING
**
a
,
const
unsigned
char
**
pp
,
long
length
,
int
Ptag
,
int
Pclass
)
size_t
length
,
int
Ptag
,
int
Pclass
)
{
ASN1_STRING
*
ret
=
NULL
;
const
unsigned
char
*
p
;
unsigned
char
*
s
;
long
len
;
size_t
len
;
int
inf
,
tag
,
xclass
;
int
i
=
0
;
...
...
crypto/asn1/a_int.c
浏览文件 @
4d6e1e4f
...
...
@@ -176,7 +176,7 @@ int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp)
/* Convert just ASN1 INTEGER content octets to ASN1_INTEGER structure */
ASN1_INTEGER
*
c2i_ASN1_INTEGER
(
ASN1_INTEGER
**
a
,
const
unsigned
char
**
pp
,
long
len
)
size_t
len
)
{
ASN1_INTEGER
*
ret
=
NULL
;
const
unsigned
char
*
p
,
*
pend
;
...
...
@@ -196,7 +196,7 @@ ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp,
/* We must OPENSSL_malloc stuff, even for 0 bytes otherwise it
* signifies a missing NULL parameter. */
s
=
(
unsigned
char
*
)
OPENSSL_malloc
((
int
)
len
+
1
);
s
=
OPENSSL_malloc
(
len
+
1
);
if
(
s
==
NULL
)
{
i
=
ERR_R_MALLOC_FAILURE
;
...
...
@@ -246,7 +246,7 @@ ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp,
p
++
;
len
--
;
}
memcpy
(
s
,
p
,
(
int
)
len
);
memcpy
(
s
,
p
,
len
);
}
if
(
ret
->
data
!=
NULL
)
OPENSSL_free
(
ret
->
data
);
...
...
@@ -269,12 +269,12 @@ err:
*/
ASN1_INTEGER
*
d2i_ASN1_UINTEGER
(
ASN1_INTEGER
**
a
,
const
unsigned
char
**
pp
,
long
length
)
size_t
length
)
{
ASN1_INTEGER
*
ret
=
NULL
;
const
unsigned
char
*
p
;
unsigned
char
*
to
,
*
s
;
long
len
;
size_t
len
;
int
inf
,
tag
,
xclass
;
int
i
;
...
...
@@ -302,7 +302,7 @@ ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
/* We must OPENSSL_malloc stuff, even for 0 bytes otherwise it
* signifies a missing NULL parameter. */
s
=
(
unsigned
char
*
)
OPENSSL_malloc
((
int
)
len
+
1
);
s
=
OPENSSL_malloc
(
len
+
1
);
if
(
s
==
NULL
)
{
i
=
ERR_R_MALLOC_FAILURE
;
...
...
@@ -316,7 +316,7 @@ ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
p
++
;
len
--
;
}
memcpy
(
s
,
p
,
(
int
)
len
);
memcpy
(
s
,
p
,
len
);
p
+=
len
;
}
...
...
@@ -405,7 +405,7 @@ long ASN1_INTEGER_get(const ASN1_INTEGER *a)
ASN1_INTEGER
*
BN_to_ASN1_INTEGER
(
const
BIGNUM
*
bn
,
ASN1_INTEGER
*
ai
)
{
ASN1_INTEGER
*
ret
;
in
t
len
,
j
;
size_
t
len
,
j
;
if
(
ai
==
NULL
)
ret
=
M_ASN1_INTEGER_new
();
...
...
@@ -423,7 +423,7 @@ ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai)
len
=
((
j
==
0
)
?
0
:
((
j
/
8
)
+
1
));
if
(
ret
->
length
<
len
+
4
)
{
unsigned
char
*
new_data
=
OPENSSL_realloc
(
ret
->
data
,
len
+
4
);
unsigned
char
*
new_data
=
OPENSSL_realloc
(
ret
->
data
,
len
+
4
U
);
if
(
!
new_data
)
{
ASN1err
(
ASN1_F_BN_TO_ASN1_INTEGER
,
ERR_R_MALLOC_FAILURE
);
...
...
crypto/asn1/a_mbstr.c
浏览文件 @
4d6e1e4f
...
...
@@ -80,15 +80,15 @@ static int is_printable(unsigned long value);
* The 'ncopy' form checks minimum and maximum size limits too.
*/
int
ASN1_mbstring_copy
(
ASN1_STRING
**
out
,
const
unsigned
char
*
in
,
in
t
len
,
int
inform
,
unsigned
long
mask
)
int
ASN1_mbstring_copy
(
ASN1_STRING
**
out
,
const
unsigned
char
*
in
,
size_
t
len
,
int
inform
,
unsigned
long
mask
)
{
return
ASN1_mbstring_ncopy
(
out
,
in
,
len
,
inform
,
mask
,
0
,
0
);
}
int
ASN1_mbstring_ncopy
(
ASN1_STRING
**
out
,
const
unsigned
char
*
in
,
in
t
len
,
int
inform
,
unsigned
long
mask
,
long
minsize
,
long
maxsize
)
int
ASN1_mbstring_ncopy
(
ASN1_STRING
**
out
,
const
unsigned
char
*
in
,
size_
t
len
,
int
inform
,
unsigned
long
mask
,
size_t
minsize
,
size_t
maxsize
)
{
int
str_type
;
int
ret
;
...
...
@@ -145,14 +145,14 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
if
((
minsize
>
0
)
&&
(
nchar
<
minsize
))
{
ASN1err
(
ASN1_F_ASN1_MBSTRING_NCOPY
,
ASN1_R_STRING_TOO_SHORT
);
BIO_snprintf
(
strbuf
,
sizeof
strbuf
,
"%ld"
,
minsize
);
BIO_snprintf
(
strbuf
,
sizeof
strbuf
,
"%ld"
,
(
long
)
minsize
);
ERR_add_error_data
(
2
,
"minsize="
,
strbuf
);
return
-
1
;
}
if
((
maxsize
>
0
)
&&
(
nchar
>
maxsize
))
{
ASN1err
(
ASN1_F_ASN1_MBSTRING_NCOPY
,
ASN1_R_STRING_TOO_LONG
);
BIO_snprintf
(
strbuf
,
sizeof
strbuf
,
"%ld"
,
maxsize
);
BIO_snprintf
(
strbuf
,
sizeof
strbuf
,
"%ld"
,
(
long
)
maxsize
);
ERR_add_error_data
(
2
,
"maxsize="
,
strbuf
);
return
-
1
;
}
...
...
crypto/asn1/a_object.c
浏览文件 @
4d6e1e4f
...
...
@@ -83,11 +83,13 @@ int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp)
return
(
objsize
);
}
int
a2d_ASN1_OBJECT
(
unsigned
char
*
out
,
int
olen
,
const
char
*
buf
,
int
num
)
size_t
a2d_ASN1_OBJECT
(
unsigned
char
*
out
,
size_t
olen
,
const
char
*
buf
,
int
num
)
{
int
i
,
first
,
len
=
0
,
c
,
use_bn
;
int
i
,
len
=
0
,
c
,
use_bn
;
unsigned
first
;
char
ftmp
[
24
],
*
tmp
=
ftmp
;
in
t
tmpsize
=
sizeof
ftmp
;
size_
t
tmpsize
=
sizeof
ftmp
;
const
char
*
p
;
unsigned
long
l
;
BIGNUM
*
bl
=
NULL
;
...
...
@@ -150,11 +152,11 @@ int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)
if
(
use_bn
)
{
if
(
!
BN_mul_word
(
bl
,
10L
)
||
!
BN_ad
d_word
(
bl
,
c
-
'0'
))
||
!
BN_add_signe
d_word
(
bl
,
c
-
'0'
))
goto
err
;
}
else
l
=
l
*
10L
+
(
long
)(
c
-
'0'
);
l
=
l
*
10L
+
(
c
-
'0'
);
}
if
(
len
==
0
)
{
...
...
@@ -227,7 +229,7 @@ err:
return
(
0
);
}
int
i2t_ASN1_OBJECT
(
char
*
buf
,
in
t
buf_len
,
ASN1_OBJECT
*
a
)
int
i2t_ASN1_OBJECT
(
char
*
buf
,
size_
t
buf_len
,
ASN1_OBJECT
*
a
)
{
return
OBJ_obj2txt
(
buf
,
buf_len
,
a
,
0
);
}
...
...
@@ -235,7 +237,7 @@ int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a)
int
i2a_ASN1_OBJECT
(
BIO
*
bp
,
ASN1_OBJECT
*
a
)
{
char
buf
[
80
],
*
p
=
buf
;
in
t
i
;
size_
t
i
;
if
((
a
==
NULL
)
||
(
a
->
data
==
NULL
))
return
(
BIO_write
(
bp
,
"NULL"
,
4
));
...
...
@@ -256,13 +258,14 @@ int i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a)
}
ASN1_OBJECT
*
d2i_ASN1_OBJECT
(
ASN1_OBJECT
**
a
,
const
unsigned
char
**
pp
,
long
length
)
size_t
length
)
{
const
unsigned
char
*
p
;
long
len
;
size_t
len
;
int
tag
,
xclass
;
int
inf
,
i
;
ASN1_OBJECT
*
ret
=
NULL
;
p
=
*
pp
;
inf
=
ASN1_get_object
(
&
p
,
&
len
,
&
tag
,
&
xclass
,
length
);
if
(
inf
&
0x80
)
...
...
@@ -284,7 +287,7 @@ err:
return
(
NULL
);
}
ASN1_OBJECT
*
c2i_ASN1_OBJECT
(
ASN1_OBJECT
**
a
,
const
unsigned
char
**
pp
,
long
len
)
size_t
len
)
{
ASN1_OBJECT
*
ret
=
NULL
;
const
unsigned
char
*
p
;
...
...
@@ -309,15 +312,15 @@ ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
{
ret
->
length
=
0
;
if
(
data
!=
NULL
)
OPENSSL_free
(
data
);
data
=
(
unsigned
char
*
)
OPENSSL_malloc
(
len
?
(
int
)
len
:
1
);
data
=
OPENSSL_malloc
(
len
?
len
:
1
);
if
(
data
==
NULL
)
{
i
=
ERR_R_MALLOC_FAILURE
;
goto
err
;
}
ret
->
flags
|=
ASN1_OBJECT_FLAG_DYNAMIC_DATA
;
}
memcpy
(
data
,
p
,
(
int
)
len
);
memcpy
(
data
,
p
,
len
);
/* reattach data to object, after which it remains const */
ret
->
data
=
data
;
ret
->
length
=
(
int
)
len
;
ret
->
data
=
data
;
ret
->
length
=
len
;
ret
->
sn
=
NULL
;
ret
->
ln
=
NULL
;
/* ret->flags=ASN1_OBJECT_FLAG_DYNAMIC; we know it is dynamic */
...
...
@@ -373,7 +376,7 @@ void ASN1_OBJECT_free(ASN1_OBJECT *a)
OPENSSL_free
(
a
);
}
ASN1_OBJECT
*
ASN1_OBJECT_create
(
int
nid
,
unsigned
char
*
data
,
in
t
len
,
ASN1_OBJECT
*
ASN1_OBJECT_create
(
int
nid
,
unsigned
char
*
data
,
size_
t
len
,
const
char
*
sn
,
const
char
*
ln
)
{
ASN1_OBJECT
o
;
...
...
crypto/asn1/a_octet.c
浏览文件 @
4d6e1e4f
...
...
@@ -61,11 +61,13 @@
#include <openssl/asn1.h>
ASN1_OCTET_STRING
*
ASN1_OCTET_STRING_dup
(
const
ASN1_OCTET_STRING
*
x
)
{
return
M_ASN1_OCTET_STRING_dup
(
x
);
}
{
return
M_ASN1_OCTET_STRING_dup
(
x
);
}
int
ASN1_OCTET_STRING_cmp
(
const
ASN1_OCTET_STRING
*
a
,
const
ASN1_OCTET_STRING
*
b
)
{
return
M_ASN1_OCTET_STRING_cmp
(
a
,
b
);
}
int
ASN1_OCTET_STRING_cmp
(
const
ASN1_OCTET_STRING
*
a
,
const
ASN1_OCTET_STRING
*
b
)
{
return
M_ASN1_OCTET_STRING_cmp
(
a
,
b
);
}
int
ASN1_OCTET_STRING_set
(
ASN1_OCTET_STRING
*
x
,
const
unsigned
char
*
d
,
int
len
)
{
return
M_ASN1_OCTET_STRING_set
(
x
,
d
,
len
);
}
int
ASN1_OCTET_STRING_set
(
ASN1_OCTET_STRING
*
x
,
const
unsigned
char
*
d
,
size_t
len
)
{
return
M_ASN1_OCTET_STRING_set
(
x
,
d
,
len
);
}
crypto/asn1/a_print.c
浏览文件 @
4d6e1e4f
...
...
@@ -60,7 +60,7 @@
#include "cryptlib.h"
#include <openssl/asn1.h>
int
ASN1_PRINTABLE_type
(
const
unsigned
char
*
s
,
in
t
len
)
int
ASN1_PRINTABLE_type
(
const
unsigned
char
*
s
,
size_
t
len
)
{
int
c
;
int
ia5
=
0
;
...
...
crypto/asn1/a_set.c
浏览文件 @
4d6e1e4f
...
...
@@ -164,7 +164,7 @@ SetBlob
}
STACK_OF
(
BLOCK
)
*
d2i_ASN1_SET
(
STACK_OF
(
BLOCK
)
**
a
,
const
unsigned
char
**
pp
,
long
length
,
d2i_of_void
*
d2i
,
size_t
length
,
d2i_of_void
*
d2i
,
void
(
*
free_func
)(
BLOCK
),
int
ex_tag
,
int
ex_class
)
{
...
...
crypto/asn1/a_strnid.c
浏览文件 @
4d6e1e4f
...
...
@@ -121,7 +121,7 @@ int ASN1_STRING_set_default_mask_asc(char *p)
*/
ASN1_STRING
*
ASN1_STRING_set_by_NID
(
ASN1_STRING
**
out
,
const
unsigned
char
*
in
,
in
t
inlen
,
int
inform
,
int
nid
)
size_
t
inlen
,
int
inform
,
int
nid
)
{
ASN1_STRING_TABLE
*
tbl
;
ASN1_STRING
*
str
=
NULL
;
...
...
crypto/asn1/a_time.c
浏览文件 @
4d6e1e4f
...
...
@@ -135,11 +135,12 @@ int ASN1_TIME_check(ASN1_TIME *t)
}
/* Convert an ASN1_TIME structure to GeneralizedTime */
ASN1_GENERALIZEDTIME
*
ASN1_TIME_to_generalizedtime
(
ASN1_TIME
*
t
,
ASN1_GENERALIZEDTIME
**
out
)
ASN1_GENERALIZEDTIME
*
ASN1_TIME_to_generalizedtime
(
ASN1_TIME
*
t
,
ASN1_GENERALIZEDTIME
**
out
)
{
ASN1_GENERALIZEDTIME
*
ret
;
char
*
str
;
in
t
newlen
;
size_
t
newlen
;
if
(
!
ASN1_TIME_check
(
t
))
return
NULL
;
...
...
crypto/asn1/a_utf8.c
浏览文件 @
4d6e1e4f
...
...
@@ -73,7 +73,7 @@
* -4 = character encoded incorrectly (not minimal length).
*/
int
UTF8_getc
(
const
unsigned
char
*
str
,
in
t
len
,
unsigned
long
*
val
)
int
UTF8_getc
(
const
unsigned
char
*
str
,
size_
t
len
,
unsigned
long
*
val
)
{
const
unsigned
char
*
p
;
unsigned
long
value
;
...
...
@@ -152,7 +152,7 @@ int UTF8_getc(const unsigned char *str, int len, unsigned long *val)
* It will need at most 6 characters.
*/
int
UTF8_putc
(
unsigned
char
*
str
,
in
t
len
,
unsigned
long
value
)
int
UTF8_putc
(
unsigned
char
*
str
,
size_
t
len
,
unsigned
long
value
)
{
if
(
!
str
)
len
=
6
;
/* Maximum we will need */
else
if
(
len
<=
0
)
return
-
1
;
...
...
crypto/asn1/asn1.h
浏览文件 @
4d6e1e4f
...
...
@@ -180,7 +180,7 @@ typedef struct asn1_ctx_st
int
inf
;
/* constructed if 0x20, indefinite is 0x21 */
int
tag
;
/* tag from last 'get object' */
int
xclass
;
/* class from last 'get object' */
long
slen
;
/* length of last 'get object' */
size_t
slen
;
/* length of last 'get object' */
unsigned
char
*
max
;
/* largest value of p allowed */
unsigned
char
*
q
;
/* temporary variable */
unsigned
char
**
pp
;
/* variable */
...
...
@@ -195,7 +195,7 @@ typedef struct asn1_const_ctx_st
int
inf
;
/* constructed if 0x20, indefinite is 0x21 */
int
tag
;
/* tag from last 'get object' */
int
xclass
;
/* class from last 'get object' */
long
slen
;
/* length of last 'get object' */
size_t
slen
;
/* length of last 'get object' */
const
unsigned
char
*
max
;
/* largest value of p allowed */
const
unsigned
char
*
q
;
/* temporary variable */
const
unsigned
char
**
pp
;
/* variable */
...
...
@@ -212,7 +212,7 @@ typedef struct asn1_object_st
{
const
char
*
sn
,
*
ln
;
int
nid
;
in
t
length
;
size_
t
length
;
const
unsigned
char
*
data
;
/* data remains const after init */
int
flags
;
/* Should we free this one */
}
ASN1_OBJECT
;
...
...
@@ -233,7 +233,7 @@ typedef struct asn1_object_st
/* This is the base type that holds just about everything :-) */
typedef
struct
asn1_string_st
{
in
t
length
;
size_
t
length
;
int
type
;
unsigned
char
*
data
;
/* The value of the following field depends on the type being
...
...
@@ -251,7 +251,7 @@ typedef struct asn1_string_st
typedef
struct
ASN1_ENCODING_st
{
unsigned
char
*
enc
;
/* DER encoding */
long
len
;
/* Length of encoding */
size_t
len
;
/* Length of encoding */
int
modified
;
/* set to 1 if 'enc' is invalid */
}
ASN1_ENCODING
;
...
...
@@ -778,9 +778,9 @@ ASN1_OBJECT * ASN1_OBJECT_new(void );
void
ASN1_OBJECT_free
(
ASN1_OBJECT
*
a
);
int
i2d_ASN1_OBJECT
(
ASN1_OBJECT
*
a
,
unsigned
char
**
pp
);
ASN1_OBJECT
*
c2i_ASN1_OBJECT
(
ASN1_OBJECT
**
a
,
const
unsigned
char
**
pp
,
long
length
);
size_t
length
);
ASN1_OBJECT
*
d2i_ASN1_OBJECT
(
ASN1_OBJECT
**
a
,
const
unsigned
char
**
pp
,
long
length
);
size_t
length
);
DECLARE_ASN1_ITEM
(
ASN1_OBJECT
)
...
...
@@ -795,23 +795,24 @@ ASN1_STRING * ASN1_STRING_type_new(int type );
int
ASN1_STRING_cmp
(
const
ASN1_STRING
*
a
,
const
ASN1_STRING
*
b
);
/* Since this is used to store all sorts of things, via macros, for now, make
its data void * */
int
ASN1_STRING_set
(
ASN1_STRING
*
str
,
const
void
*
data
,
in
t
len
);
void
ASN1_STRING_set0
(
ASN1_STRING
*
str
,
void
*
data
,
in
t
len
);
in
t
ASN1_STRING_length
(
const
ASN1_STRING
*
x
);
void
ASN1_STRING_length_set
(
ASN1_STRING
*
x
,
in
t
n
);
int
ASN1_STRING_set
(
ASN1_STRING
*
str
,
const
void
*
data
,
size_
t
len
);
void
ASN1_STRING_set0
(
ASN1_STRING
*
str
,
void
*
data
,
size_
t
len
);
size_
t
ASN1_STRING_length
(
const
ASN1_STRING
*
x
);
void
ASN1_STRING_length_set
(
ASN1_STRING
*
x
,
size_
t
n
);
int
ASN1_STRING_type
(
ASN1_STRING
*
x
);
unsigned
char
*
ASN1_STRING_data
(
ASN1_STRING
*
x
);
DECLARE_ASN1_FUNCTIONS
(
ASN1_BIT_STRING
)
int
i2c_ASN1_BIT_STRING
(
ASN1_BIT_STRING
*
a
,
unsigned
char
**
pp
);
ASN1_BIT_STRING
*
c2i_ASN1_BIT_STRING
(
ASN1_BIT_STRING
**
a
,
const
unsigned
char
**
pp
,
long
length
);
ASN1_BIT_STRING
*
c2i_ASN1_BIT_STRING
(
ASN1_BIT_STRING
**
a
,
const
unsigned
char
**
pp
,
size_t
length
);
int
ASN1_BIT_STRING_set
(
ASN1_BIT_STRING
*
a
,
unsigned
char
*
d
,
int
length
);
int
ASN1_BIT_STRING_set_bit
(
ASN1_BIT_STRING
*
a
,
int
n
,
int
value
);
int
ASN1_BIT_STRING_get_bit
(
ASN1_BIT_STRING
*
a
,
int
n
);
int
ASN1_BIT_STRING_check
(
ASN1_BIT_STRING
*
a
,
unsigned
char
*
flags
,
int
flags_len
);
size_t
length
);
int
ASN1_BIT_STRING_set_bit
(
ASN1_BIT_STRING
*
a
,
size_t
n
,
int
value
);
int
ASN1_BIT_STRING_get_bit
(
ASN1_BIT_STRING
*
a
,
size_t
n
);
int
ASN1_BIT_STRING_check
(
ASN1_BIT_STRING
*
a
,
unsigned
char
*
flags
,
size_t
flags_len
);
#ifndef OPENSSL_NO_BIO
int
ASN1_BIT_STRING_name_print
(
BIO
*
out
,
ASN1_BIT_STRING
*
bs
,
...
...
@@ -821,15 +822,15 @@ int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl);
int
ASN1_BIT_STRING_set_asc
(
ASN1_BIT_STRING
*
bs
,
char
*
name
,
int
value
,
BIT_STRING_BITNAME
*
tbl
);
int
i2d_ASN1_BOOLEAN
(
int
a
,
unsigned
char
**
pp
);
int
d2i_ASN1_BOOLEAN
(
int
*
a
,
const
unsigned
char
**
pp
,
long
length
);
int
i2d_ASN1_BOOLEAN
(
int
a
,
unsigned
char
**
pp
);
int
d2i_ASN1_BOOLEAN
(
int
*
a
,
const
unsigned
char
**
pp
,
size_t
length
);
DECLARE_ASN1_FUNCTIONS
(
ASN1_INTEGER
)
int
i2c_ASN1_INTEGER
(
ASN1_INTEGER
*
a
,
unsigned
char
**
pp
);
ASN1_INTEGER
*
c2i_ASN1_INTEGER
(
ASN1_INTEGER
**
a
,
const
unsigned
char
**
pp
,
long
length
);
size_t
length
);
ASN1_INTEGER
*
d2i_ASN1_UINTEGER
(
ASN1_INTEGER
**
a
,
const
unsigned
char
**
pp
,
long
length
);
size_t
length
);
ASN1_INTEGER
*
ASN1_INTEGER_dup
(
const
ASN1_INTEGER
*
x
);
int
ASN1_INTEGER_cmp
(
const
ASN1_INTEGER
*
x
,
const
ASN1_INTEGER
*
y
);
...
...
@@ -854,7 +855,8 @@ int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str);
DECLARE_ASN1_FUNCTIONS
(
ASN1_OCTET_STRING
)
ASN1_OCTET_STRING
*
ASN1_OCTET_STRING_dup
(
const
ASN1_OCTET_STRING
*
a
);
int
ASN1_OCTET_STRING_cmp
(
const
ASN1_OCTET_STRING
*
a
,
const
ASN1_OCTET_STRING
*
b
);
int
ASN1_OCTET_STRING_set
(
ASN1_OCTET_STRING
*
str
,
const
unsigned
char
*
data
,
int
len
);
int
ASN1_OCTET_STRING_set
(
ASN1_OCTET_STRING
*
str
,
const
unsigned
char
*
data
,
size_t
len
);
DECLARE_ASN1_FUNCTIONS
(
ASN1_VISIBLESTRING
)
DECLARE_ASN1_FUNCTIONS
(
ASN1_UNIVERSALSTRING
)
...
...
@@ -862,8 +864,8 @@ DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING)
DECLARE_ASN1_FUNCTIONS
(
ASN1_NULL
)
DECLARE_ASN1_FUNCTIONS
(
ASN1_BMPSTRING
)
int
UTF8_getc
(
const
unsigned
char
*
str
,
in
t
len
,
unsigned
long
*
val
);
int
UTF8_putc
(
unsigned
char
*
str
,
in
t
len
,
unsigned
long
value
);
int
UTF8_getc
(
const
unsigned
char
*
str
,
size_
t
len
,
unsigned
long
*
val
);
int
UTF8_putc
(
unsigned
char
*
str
,
size_
t
len
,
unsigned
long
value
);
DECLARE_ASN1_FUNCTIONS_name
(
ASN1_STRING
,
ASN1_PRINTABLE
)
...
...
@@ -889,7 +891,7 @@ int i2d_ASN1_SET(STACK_OF(BLOCK) *a, unsigned char **pp,
i2d_of_void
*
i2d
,
int
ex_tag
,
int
ex_class
,
int
is_set
);
STACK_OF
(
BLOCK
)
*
d2i_ASN1_SET
(
STACK_OF
(
BLOCK
)
**
a
,
const
unsigned
char
**
pp
,
long
length
,
d2i_of_void
*
d2i
,
size_t
length
,
d2i_of_void
*
d2i
,
void
(
*
free_func
)(
BLOCK
),
int
ex_tag
,
int
ex_class
);
...
...
@@ -902,11 +904,12 @@ int i2a_ASN1_OBJECT(BIO *bp,ASN1_OBJECT *a);
int
a2i_ASN1_STRING
(
BIO
*
bp
,
ASN1_STRING
*
bs
,
char
*
buf
,
int
size
);
int
i2a_ASN1_STRING
(
BIO
*
bp
,
ASN1_STRING
*
a
,
int
type
);
#endif
int
i2t_ASN1_OBJECT
(
char
*
buf
,
in
t
buf_len
,
ASN1_OBJECT
*
a
);
int
i2t_ASN1_OBJECT
(
char
*
buf
,
size_
t
buf_len
,
ASN1_OBJECT
*
a
);
int
a2d_ASN1_OBJECT
(
unsigned
char
*
out
,
int
olen
,
const
char
*
buf
,
int
num
);
ASN1_OBJECT
*
ASN1_OBJECT_create
(
int
nid
,
unsigned
char
*
data
,
int
len
,
const
char
*
sn
,
const
char
*
ln
);
size_t
a2d_ASN1_OBJECT
(
unsigned
char
*
out
,
size_t
olen
,
const
char
*
buf
,
int
num
);
ASN1_OBJECT
*
ASN1_OBJECT_create
(
int
nid
,
unsigned
char
*
data
,
size_t
len
,
const
char
*
sn
,
const
char
*
ln
);
int
ASN1_INTEGER_set
(
ASN1_INTEGER
*
a
,
long
v
);
long
ASN1_INTEGER_get
(
const
ASN1_INTEGER
*
a
);
...
...
@@ -920,29 +923,29 @@ BIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai,BIGNUM *bn);
/* General */
/* given a string, return the correct type, max is the maximum length */
int
ASN1_PRINTABLE_type
(
const
unsigned
char
*
s
,
in
t
max
);
int
ASN1_PRINTABLE_type
(
const
unsigned
char
*
s
,
size_
t
max
);
int
i2d_ASN1_bytes
(
ASN1_STRING
*
a
,
unsigned
char
**
pp
,
int
tag
,
int
xclass
);
ASN1_STRING
*
d2i_ASN1_bytes
(
ASN1_STRING
**
a
,
const
unsigned
char
**
pp
,
long
length
,
int
Ptag
,
int
Pclass
);
size_t
length
,
int
Ptag
,
int
Pclass
);
unsigned
long
ASN1_tag2bit
(
int
tag
);
/* type is one or more of the B_ASN1_ values. */
ASN1_STRING
*
d2i_ASN1_type_bytes
(
ASN1_STRING
**
a
,
const
unsigned
char
**
pp
,
long
length
,
int
type
);
size_t
length
,
int
type
);
/* PARSING */
int
asn1_Finish
(
ASN1_CTX
*
c
);
int
asn1_const_Finish
(
ASN1_const_CTX
*
c
);
/* SPECIALS */
int
ASN1_get_object
(
const
unsigned
char
**
pp
,
long
*
plength
,
int
*
ptag
,
int
*
pclass
,
long
omax
);
int
ASN1_check_infinite_end
(
unsigned
char
**
p
,
long
len
);
int
ASN1_const_check_infinite_end
(
const
unsigned
char
**
p
,
long
len
);
void
ASN1_put_object
(
unsigned
char
**
pp
,
int
constructed
,
in
t
length
,
int
tag
,
int
xclass
);
int
ASN1_get_object
(
const
unsigned
char
**
pp
,
size_t
*
plength
,
int
*
ptag
,
int
*
pclass
,
size_t
omax
);
int
ASN1_check_infinite_end
(
unsigned
char
**
p
,
size_t
len
);
int
ASN1_const_check_infinite_end
(
const
unsigned
char
**
p
,
size_t
len
);
void
ASN1_put_object
(
unsigned
char
**
pp
,
int
constructed
,
size_
t
length
,
int
tag
,
int
xclass
);
int
ASN1_put_eoc
(
unsigned
char
**
pp
);
int
ASN1_object_size
(
int
constructed
,
in
t
length
,
int
tag
);
size_t
ASN1_object_size
(
int
constructed
,
size_
t
length
,
int
tag
);
/* Used to implement other functions */
void
*
ASN1_dup
(
i2d_of_void
*
i2d
,
d2i_of_void
*
d2i
,
char
*
x
);
...
...
@@ -1023,8 +1026,9 @@ int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v);
int
ASN1_STRING_print_ex
(
BIO
*
out
,
ASN1_STRING
*
str
,
unsigned
long
flags
);
int
ASN1_bn_print
(
BIO
*
bp
,
const
char
*
number
,
const
BIGNUM
*
num
,
unsigned
char
*
buf
,
int
off
);
int
ASN1_parse
(
BIO
*
bp
,
const
unsigned
char
*
pp
,
long
len
,
int
indent
);
int
ASN1_parse_dump
(
BIO
*
bp
,
const
unsigned
char
*
pp
,
long
len
,
int
indent
,
int
dump
);
int
ASN1_parse
(
BIO
*
bp
,
const
unsigned
char
*
pp
,
size_t
len
,
int
indent
);
int
ASN1_parse_dump
(
BIO
*
bp
,
const
unsigned
char
*
pp
,
size_t
len
,
int
indent
,
int
dump
);
#endif
const
char
*
ASN1_tag2str
(
int
tag
);
...
...
@@ -1035,24 +1039,24 @@ DECLARE_ASN1_FUNCTIONS(NETSCAPE_X509)
int
ASN1_UNIVERSALSTRING_to_string
(
ASN1_UNIVERSALSTRING
*
s
);
int
ASN1_TYPE_set_octetstring
(
ASN1_TYPE
*
a
,
unsigned
char
*
data
,
in
t
len
);
unsigned
char
*
data
,
size_
t
len
);
int
ASN1_TYPE_get_octetstring
(
ASN1_TYPE
*
a
,
unsigned
char
*
data
,
in
t
max_len
);
unsigned
char
*
data
,
size_
t
max_len
);
int
ASN1_TYPE_set_int_octetstring
(
ASN1_TYPE
*
a
,
long
num
,
unsigned
char
*
data
,
in
t
len
);
int
ASN1_TYPE_get_int_octetstring
(
ASN1_TYPE
*
a
,
long
*
num
,
unsigned
char
*
data
,
in
t
max_len
);
unsigned
char
*
data
,
size_
t
len
);
int
ASN1_TYPE_get_int_octetstring
(
ASN1_TYPE
*
a
,
long
*
num
,
unsigned
char
*
data
,
size_
t
max_len
);
STACK_OF
(
BLOCK
)
*
ASN1_seq_unpack
(
const
unsigned
char
*
buf
,
in
t
len
,
STACK_OF
(
BLOCK
)
*
ASN1_seq_unpack
(
const
unsigned
char
*
buf
,
size_
t
len
,
d2i_of_void
*
d2i
,
void
(
*
free_func
)(
BLOCK
));
unsigned
char
*
ASN1_seq_pack
(
STACK_OF
(
BLOCK
)
*
safes
,
i2d_of_void
*
i2d
,
unsigned
char
**
buf
,
int
*
len
);
unsigned
char
**
buf
,
size_t
*
len
);
void
*
ASN1_unpack_string
(
ASN1_STRING
*
oct
,
d2i_of_void
*
d2i
);
void
*
ASN1_item_unpack
(
ASN1_STRING
*
oct
,
const
ASN1_ITEM
*
it
);
ASN1_STRING
*
ASN1_pack_string
(
void
*
obj
,
i2d_of_void
*
i2d
,
ASN1_OCTET_STRING
**
oct
);
#define ASN1_pack_string_of(type,obj,i2d,oct) \
#define ASN1_pack_string_of(type,obj,i2d,oct)
\
(ASN1_pack_string(CHECKED_PTR_OF(type, obj), \
CHECKED_I2D_OF(type, i2d), \
oct))
...
...
@@ -1062,14 +1066,15 @@ ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **
void
ASN1_STRING_set_default_mask
(
unsigned
long
mask
);
int
ASN1_STRING_set_default_mask_asc
(
char
*
p
);
unsigned
long
ASN1_STRING_get_default_mask
(
void
);
int
ASN1_mbstring_copy
(
ASN1_STRING
**
out
,
const
unsigned
char
*
in
,
in
t
len
,
int
ASN1_mbstring_copy
(
ASN1_STRING
**
out
,
const
unsigned
char
*
in
,
size_
t
len
,
int
inform
,
unsigned
long
mask
);
int
ASN1_mbstring_ncopy
(
ASN1_STRING
**
out
,
const
unsigned
char
*
in
,
in
t
len
,
int
ASN1_mbstring_ncopy
(
ASN1_STRING
**
out
,
const
unsigned
char
*
in
,
size_
t
len
,
int
inform
,
unsigned
long
mask
,
long
minsize
,
long
maxsize
);
size_t
minsize
,
size_t
maxsize
);
ASN1_STRING
*
ASN1_STRING_set_by_NID
(
ASN1_STRING
**
out
,
const
unsigned
char
*
in
,
int
inlen
,
int
inform
,
int
nid
);
const
unsigned
char
*
in
,
size_t
inlen
,
int
inform
,
int
nid
);
ASN1_STRING_TABLE
*
ASN1_STRING_TABLE_get
(
int
nid
);
int
ASN1_STRING_TABLE_add
(
int
,
long
,
long
,
unsigned
long
,
unsigned
long
);
void
ASN1_STRING_TABLE_cleanup
(
void
);
...
...
@@ -1079,9 +1084,11 @@ void ASN1_STRING_TABLE_cleanup(void);
/* Old API compatible functions */
ASN1_VALUE
*
ASN1_item_new
(
const
ASN1_ITEM
*
it
);
void
ASN1_item_free
(
ASN1_VALUE
*
val
,
const
ASN1_ITEM
*
it
);
ASN1_VALUE
*
ASN1_item_d2i
(
ASN1_VALUE
**
val
,
const
unsigned
char
**
in
,
long
len
,
const
ASN1_ITEM
*
it
);
ASN1_VALUE
*
ASN1_item_d2i
(
ASN1_VALUE
**
val
,
const
unsigned
char
**
in
,
size_t
len
,
const
ASN1_ITEM
*
it
);
int
ASN1_item_i2d
(
ASN1_VALUE
*
val
,
unsigned
char
**
out
,
const
ASN1_ITEM
*
it
);
int
ASN1_item_ndef_i2d
(
ASN1_VALUE
*
val
,
unsigned
char
**
out
,
const
ASN1_ITEM
*
it
);
int
ASN1_item_ndef_i2d
(
ASN1_VALUE
*
val
,
unsigned
char
**
out
,
const
ASN1_ITEM
*
it
);
void
ASN1_add_oid_module
(
void
);
...
...
crypto/asn1/asn1_gen.c
浏览文件 @
4d6e1e4f
...
...
@@ -145,7 +145,7 @@ ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf)
unsigned
char
*
p
;
const
unsigned
char
*
cp
;
int
cpy_len
;
long
hdr_len
;
size_t
hdr_len
;
int
hdr_constructed
=
0
,
hdr_tag
,
hdr_class
;
int
r
;
...
...
crypto/asn1/asn1_lib.c
浏览文件 @
4d6e1e4f
...
...
@@ -62,7 +62,8 @@
#include <openssl/asn1.h>
#include <openssl/asn1_mac.h>
static
int
asn1_get_length
(
const
unsigned
char
**
pp
,
int
*
inf
,
long
*
rl
,
int
max
);
static
int
asn1_get_length
(
const
unsigned
char
**
pp
,
int
*
inf
,
size_t
*
rl
,
size_t
max
);
static
void
asn1_put_length
(
unsigned
char
**
pp
,
int
length
);
const
char
ASN1_version
[]
=
"ASN.1"
OPENSSL_VERSION_PTEXT
;
...
...
@@ -80,27 +81,29 @@ static int _asn1_check_infinite_end(const unsigned char **p, long len)
return
(
0
);
}
int
ASN1_check_infinite_end
(
unsigned
char
**
p
,
long
len
)
int
ASN1_check_infinite_end
(
unsigned
char
**
p
,
size_t
len
)
{
return
_asn1_check_infinite_end
((
const
unsigned
char
**
)
p
,
len
);
}
int
ASN1_const_check_infinite_end
(
const
unsigned
char
**
p
,
long
len
)
int
ASN1_const_check_infinite_end
(
const
unsigned
char
**
p
,
size_t
len
)
{
return
_asn1_check_infinite_end
(
p
,
len
);
}
int
ASN1_get_object
(
const
unsigned
char
**
pp
,
long
*
plength
,
int
*
ptag
,
int
*
pclass
,
long
omax
)
int
ASN1_get_object
(
const
unsigned
char
**
pp
,
size_t
*
plength
,
int
*
ptag
,
int
*
pclass
,
size_t
omax
)
{
int
i
,
ret
;
long
l
;
const
unsigned
char
*
p
=
*
pp
;
int
tag
,
xclass
,
inf
;
long
max
=
omax
;
size_t
max
=
omax
;
if
(
!
max
)
goto
err
;
if
(
!
max
)
goto
err
;
ret
=
(
*
p
&
V_ASN1_CONSTRUCTED
);
xclass
=
(
*
p
&
V_ASN1_PRIVATE
);
i
=
*
p
&
V_ASN1_PRIMITIVE_TAG
;
...
...
@@ -151,7 +154,8 @@ err:
return
(
0x80
);
}
static
int
asn1_get_length
(
const
unsigned
char
**
pp
,
int
*
inf
,
long
*
rl
,
int
max
)
static
int
asn1_get_length
(
const
unsigned
char
**
pp
,
int
*
inf
,
size_t
*
rl
,
size_t
max
)
{
const
unsigned
char
*
p
=
*
pp
;
unsigned
long
ret
=
0
;
...
...
@@ -192,8 +196,8 @@ static int asn1_get_length(const unsigned char **pp, int *inf, long *rl, int max
/* class 0 is constructed
* constructed == 2 for indefinite length constructed */
void
ASN1_put_object
(
unsigned
char
**
pp
,
int
constructed
,
int
length
,
int
tag
,
int
xclass
)
void
ASN1_put_object
(
unsigned
char
**
pp
,
int
constructed
,
size_t
length
,
int
tag
,
int
xclass
)
{
unsigned
char
*
p
=
*
pp
;
int
i
,
ttag
;
...
...
@@ -254,7 +258,7 @@ static void asn1_put_length(unsigned char **pp, int length)
*
pp
=
p
;
}
int
ASN1_object_size
(
int
constructed
,
in
t
length
,
int
tag
)
size_t
ASN1_object_size
(
int
constructed
,
size_
t
length
,
int
tag
)
{
int
ret
;
...
...
@@ -367,7 +371,7 @@ ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *str)
return
ret
;
}
int
ASN1_STRING_set
(
ASN1_STRING
*
str
,
const
void
*
_data
,
in
t
len
)
int
ASN1_STRING_set
(
ASN1_STRING
*
str
,
const
void
*
_data
,
size_
t
len
)
{
unsigned
char
*
c
;
const
char
*
data
=
_data
;
...
...
@@ -404,7 +408,7 @@ int ASN1_STRING_set(ASN1_STRING *str, const void *_data, int len)
return
(
1
);
}
void
ASN1_STRING_set0
(
ASN1_STRING
*
str
,
void
*
data
,
in
t
len
)
void
ASN1_STRING_set0
(
ASN1_STRING
*
str
,
void
*
data
,
size_
t
len
)
{
if
(
str
->
data
)
OPENSSL_free
(
str
->
data
);
...
...
@@ -469,14 +473,14 @@ void asn1_add_error(const unsigned char *address, int offset)
ERR_add_error_data
(
4
,
"address="
,
buf1
,
" offset="
,
buf2
);
}
in
t
ASN1_STRING_length
(
const
ASN1_STRING
*
x
)
{
return
M_ASN1_STRING_length
(
x
);
}
size_
t
ASN1_STRING_length
(
const
ASN1_STRING
*
x
)
{
return
M_ASN1_STRING_length
(
x
);
}
void
ASN1_STRING_length_set
(
ASN1_STRING
*
x
,
in
t
len
)
{
M_ASN1_STRING_length_set
(
x
,
len
);
return
;
}
void
ASN1_STRING_length_set
(
ASN1_STRING
*
x
,
size_
t
len
)
{
M_ASN1_STRING_length_set
(
x
,
len
);
return
;
}
int
ASN1_STRING_type
(
ASN1_STRING
*
x
)
{
return
M_ASN1_STRING_type
(
x
);
}
{
return
M_ASN1_STRING_type
(
x
);
}
unsigned
char
*
ASN1_STRING_data
(
ASN1_STRING
*
x
)
{
return
M_ASN1_STRING_data
(
x
);
}
{
return
M_ASN1_STRING_data
(
x
);
}
crypto/asn1/asn1_mac.h
浏览文件 @
4d6e1e4f
...
...
@@ -279,7 +279,7 @@ err:\
(V_ASN1_CONSTRUCTED|V_ASN1_CONTEXT_SPECIFIC|tag))) \
{ \
int Tinf,Ttag,Tclass; \
long
Tlen; \
size_t
Tlen; \
\
c.q=c.p; \
Tinf=ASN1_get_object(&c.p,&Tlen,&Ttag,&Tclass,c.slen); \
...
...
crypto/asn1/asn1_par.c
浏览文件 @
4d6e1e4f
...
...
@@ -63,11 +63,11 @@
#include <openssl/asn1.h>
static
int
asn1_print_info
(
BIO
*
bp
,
int
tag
,
int
xclass
,
int
constructed
,
int
indent
);
static
int
asn1_parse2
(
BIO
*
bp
,
const
unsigned
char
**
pp
,
long
length
,
int
offset
,
int
depth
,
int
indent
,
int
dump
);
int
indent
);
static
int
asn1_parse2
(
BIO
*
bp
,
const
unsigned
char
**
pp
,
size_t
length
,
int
offset
,
int
depth
,
int
indent
,
int
dump
);
static
int
asn1_print_info
(
BIO
*
bp
,
int
tag
,
int
xclass
,
int
constructed
,
int
indent
)
int
indent
)
{
static
const
char
fmt
[]
=
"%-18s"
;
char
str
[
128
];
...
...
@@ -99,21 +99,22 @@ err:
return
(
0
);
}
int
ASN1_parse
(
BIO
*
bp
,
const
unsigned
char
*
pp
,
long
len
,
int
indent
)
int
ASN1_parse
(
BIO
*
bp
,
const
unsigned
char
*
pp
,
size_t
len
,
int
indent
)
{
return
(
asn1_parse2
(
bp
,
&
pp
,
len
,
0
,
0
,
indent
,
0
));
}
int
ASN1_parse_dump
(
BIO
*
bp
,
const
unsigned
char
*
pp
,
long
len
,
int
indent
,
int
dump
)
int
ASN1_parse_dump
(
BIO
*
bp
,
const
unsigned
char
*
pp
,
size_t
len
,
int
indent
,
int
dump
)
{
return
(
asn1_parse2
(
bp
,
&
pp
,
len
,
0
,
0
,
indent
,
dump
));
}
static
int
asn1_parse2
(
BIO
*
bp
,
const
unsigned
char
**
pp
,
long
length
,
int
offset
,
int
depth
,
int
indent
,
int
dump
)
static
int
asn1_parse2
(
BIO
*
bp
,
const
unsigned
char
**
pp
,
size_t
length
,
int
offset
,
int
depth
,
int
indent
,
int
dump
)
{
const
unsigned
char
*
p
,
*
ep
,
*
tot
,
*
op
,
*
opp
;
long
len
;
size_t
len
;
int
tag
,
xclass
,
ret
=
0
;
int
nl
,
hl
,
j
,
r
;
ASN1_OBJECT
*
o
=
NULL
;
...
...
@@ -152,13 +153,13 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, int offse
if
(
j
!=
(
V_ASN1_CONSTRUCTED
|
1
))
{
if
(
BIO_printf
(
bp
,
"d=%-2d hl=%ld l=%4ld "
,
depth
,(
long
)
hl
,
len
)
<=
0
)
depth
,(
long
)
hl
,(
long
)
len
)
<=
0
)
goto
end
;
}
else
{
if
(
BIO_printf
(
bp
,
"d=%-2d hl=%ld l=inf "
,
depth
,(
long
)
hl
)
<=
0
)
depth
,(
long
)
hl
)
<=
0
)
goto
end
;
}
if
(
!
asn1_print_info
(
bp
,
tag
,
xclass
,
j
,(
indent
)
?
depth
:
0
))
...
...
@@ -170,7 +171,8 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, int offse
if
(
len
>
length
)
{
BIO_printf
(
bp
,
"length is greater than %ld
\n
"
,
length
);
"length is greater than %ld
\n
"
,
(
long
)
length
);
ret
=
0
;
goto
end
;
}
...
...
crypto/asn1/asn_pack.c
浏览文件 @
4d6e1e4f
...
...
@@ -66,7 +66,7 @@
/* Turn an ASN1 encoded SEQUENCE OF into a STACK of structures */
STACK_OF
(
BLOCK
)
*
ASN1_seq_unpack
(
const
unsigned
char
*
buf
,
in
t
len
,
STACK_OF
(
BLOCK
)
*
ASN1_seq_unpack
(
const
unsigned
char
*
buf
,
size_
t
len
,
d2i_of_void
*
d2i
,
void
(
*
free_func
)(
BLOCK
))
{
STACK_OF
(
BLOCK
)
*
sk
;
...
...
@@ -83,7 +83,7 @@ STACK_OF(BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
*/
unsigned
char
*
ASN1_seq_pack
(
STACK_OF
(
BLOCK
)
*
safes
,
i2d_of_void
*
i2d
,
unsigned
char
**
buf
,
in
t
*
len
)
unsigned
char
**
buf
,
size_
t
*
len
)
{
int
safelen
;
unsigned
char
*
safe
,
*
p
;
...
...
crypto/asn1/evp_asn1.c
浏览文件 @
4d6e1e4f
...
...
@@ -61,7 +61,7 @@
#include <openssl/asn1.h>
#include <openssl/asn1_mac.h>
int
ASN1_TYPE_set_octetstring
(
ASN1_TYPE
*
a
,
unsigned
char
*
data
,
in
t
len
)
int
ASN1_TYPE_set_octetstring
(
ASN1_TYPE
*
a
,
unsigned
char
*
data
,
size_
t
len
)
{
ASN1_STRING
*
os
;
...
...
@@ -73,7 +73,7 @@ int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len)
/* int max_len: for returned value */
int
ASN1_TYPE_get_octetstring
(
ASN1_TYPE
*
a
,
unsigned
char
*
data
,
in
t
max_len
)
size_
t
max_len
)
{
int
ret
,
num
;
unsigned
char
*
p
;
...
...
@@ -94,7 +94,7 @@ int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data,
}
int
ASN1_TYPE_set_int_octetstring
(
ASN1_TYPE
*
a
,
long
num
,
unsigned
char
*
data
,
in
t
len
)
size_
t
len
)
{
int
n
,
size
;
ASN1_OCTET_STRING
os
,
*
osp
;
...
...
@@ -136,7 +136,7 @@ int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, unsigned char *data,
* case, set it to zero */
/* int max_len: for returned value */
int
ASN1_TYPE_get_int_octetstring
(
ASN1_TYPE
*
a
,
long
*
num
,
unsigned
char
*
data
,
in
t
max_len
)
size_
t
max_len
)
{
int
ret
=
-
1
,
n
;
ASN1_INTEGER
*
ai
=
NULL
;
...
...
crypto/asn1/tasn_dec.c
浏览文件 @
4d6e1e4f
...
...
@@ -126,7 +126,8 @@ unsigned long ASN1_tag2bit(int tag)
*/
ASN1_VALUE
*
ASN1_item_d2i
(
ASN1_VALUE
**
pval
,
const
unsigned
char
**
in
,
long
len
,
const
ASN1_ITEM
*
it
)
const
unsigned
char
**
in
,
size_t
len
,
const
ASN1_ITEM
*
it
)
{
ASN1_TLC
c
;
ASN1_VALUE
*
ptmpval
=
NULL
;
...
...
@@ -1243,7 +1244,7 @@ static int asn1_check_tlen(long *olen, int *otag, unsigned char *oclass,
{
int
i
;
int
ptag
,
pclass
;
long
plen
;
size_t
plen
;
const
unsigned
char
*
p
,
*
q
;
p
=
*
in
;
q
=
p
;
...
...
crypto/bio/bio.h
浏览文件 @
4d6e1e4f
...
...
@@ -252,9 +252,11 @@ void BIO_clear_flags(BIO *b, int flags);
#define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN))
#define BIO_cb_post(a) ((a)&BIO_CB_RETURN)
long
(
*
BIO_get_callback
(
const
BIO
*
b
))
(
struct
bio_st
*
,
int
,
const
char
*
,
int
,
long
,
long
);
void
BIO_set_callback
(
BIO
*
b
,
long
(
*
callback
)(
struct
bio_st
*
,
int
,
const
char
*
,
int
,
long
,
long
));
long
(
*
BIO_get_callback
(
const
BIO
*
b
))
(
struct
bio_st
*
,
int
,
const
char
*
,
size_t
,
long
,
long
);
void
BIO_set_callback
(
BIO
*
b
,
long
(
*
callback
)(
struct
bio_st
*
,
int
,
const
char
*
,
size_t
,
long
,
long
));
char
*
BIO_get_callback_arg
(
const
BIO
*
b
);
void
BIO_set_callback_arg
(
BIO
*
b
,
char
*
arg
);
...
...
@@ -281,7 +283,7 @@ struct bio_st
{
BIO_METHOD
*
method
;
/* bio, mode, argp, argi, argl, ret */
long
(
*
callback
)(
struct
bio_st
*
,
int
,
const
char
*
,
in
t
,
long
,
long
);
long
(
*
callback
)(
struct
bio_st
*
,
int
,
const
char
*
,
size_
t
,
long
,
long
);
char
*
cb_arg
;
/* first argument for the callback */
int
init
;
...
...
@@ -571,7 +573,7 @@ int BIO_free(BIO *a);
void
BIO_vfree
(
BIO
*
a
);
int
BIO_read
(
BIO
*
b
,
void
*
data
,
int
len
);
int
BIO_gets
(
BIO
*
bp
,
char
*
buf
,
int
size
);
int
BIO_write
(
BIO
*
b
,
const
void
*
data
,
in
t
len
);
int
BIO_write
(
BIO
*
b
,
const
void
*
data
,
size_
t
len
);
int
BIO_puts
(
BIO
*
bp
,
const
char
*
buf
);
int
BIO_indent
(
BIO
*
b
,
int
indent
,
int
max
);
long
BIO_ctrl
(
BIO
*
bp
,
int
cmd
,
long
larg
,
void
*
parg
);
...
...
@@ -592,8 +594,8 @@ int BIO_nread(BIO *bio, char **buf, int num);
int
BIO_nwrite0
(
BIO
*
bio
,
char
**
buf
);
int
BIO_nwrite
(
BIO
*
bio
,
char
**
buf
,
int
num
);
long
BIO_debug_callback
(
BIO
*
bio
,
int
cmd
,
const
char
*
argp
,
in
t
argi
,
long
argl
,
long
ret
);
long
BIO_debug_callback
(
BIO
*
bio
,
int
cmd
,
const
char
*
argp
,
size_
t
argi
,
long
argl
,
long
ret
);
BIO_METHOD
*
BIO_s_mem
(
void
);
BIO
*
BIO_new_mem_buf
(
void
*
buf
,
int
len
);
...
...
crypto/bio/bio_cb.c
浏览文件 @
4d6e1e4f
...
...
@@ -64,7 +64,7 @@
#include <openssl/err.h>
long
MS_CALLBACK
BIO_debug_callback
(
BIO
*
bio
,
int
cmd
,
const
char
*
argp
,
in
t
argi
,
long
argl
,
long
ret
)
size_
t
argi
,
long
argl
,
long
ret
)
{
BIO
*
b
;
MS_STATIC
char
buf
[
256
];
...
...
crypto/bio/bio_lib.c
浏览文件 @
4d6e1e4f
...
...
@@ -156,12 +156,14 @@ void BIO_set_flags(BIO *b, int flags)
b
->
flags
|=
flags
;
}
long
(
*
BIO_get_callback
(
const
BIO
*
b
))(
struct
bio_st
*
,
int
,
const
char
*
,
int
,
long
,
long
)
long
(
*
BIO_get_callback
(
const
BIO
*
b
))(
struct
bio_st
*
,
int
,
const
char
*
,
size_t
,
long
,
long
)
{
return
b
->
callback
;
}
void
BIO_set_callback
(
BIO
*
b
,
long
(
*
cb
)(
struct
bio_st
*
,
int
,
const
char
*
,
int
,
long
,
long
))
void
BIO_set_callback
(
BIO
*
b
,
long
(
*
cb
)(
struct
bio_st
*
,
int
,
const
char
*
,
size_t
,
long
,
long
))
{
b
->
callback
=
cb
;
}
...
...
@@ -190,7 +192,7 @@ int BIO_method_type(const BIO *b)
int
BIO_read
(
BIO
*
b
,
void
*
out
,
int
outl
)
{
int
i
;
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
int
,
long
,
long
);
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
size_t
,
long
,
long
);
if
((
b
==
NULL
)
||
(
b
->
method
==
NULL
)
||
(
b
->
method
->
bread
==
NULL
))
{
...
...
@@ -219,10 +221,10 @@ int BIO_read(BIO *b, void *out, int outl)
return
(
i
);
}
int
BIO_write
(
BIO
*
b
,
const
void
*
in
,
in
t
inl
)
int
BIO_write
(
BIO
*
b
,
const
void
*
in
,
size_
t
inl
)
{
int
i
;
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
in
t
,
long
,
long
);
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
size_
t
,
long
,
long
);
if
(
b
==
NULL
)
return
(
0
);
...
...
@@ -235,7 +237,7 @@ int BIO_write(BIO *b, const void *in, int inl)
}
if
((
cb
!=
NULL
)
&&
((
i
=
(
int
)
cb
(
b
,
BIO_CB_WRITE
,
in
,
inl
,
0L
,
1L
))
<=
0
))
((
i
=
cb
(
b
,
BIO_CB_WRITE
,
in
,
inl
,
0L
,
1L
))
<=
0
))
return
(
i
);
if
(
!
b
->
init
)
...
...
@@ -257,7 +259,7 @@ int BIO_write(BIO *b, const void *in, int inl)
int
BIO_puts
(
BIO
*
b
,
const
char
*
in
)
{
int
i
;
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
int
,
long
,
long
);
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
size_t
,
long
,
long
);
if
((
b
==
NULL
)
||
(
b
->
method
==
NULL
)
||
(
b
->
method
->
bputs
==
NULL
))
{
...
...
@@ -290,7 +292,7 @@ int BIO_puts(BIO *b, const char *in)
int
BIO_gets
(
BIO
*
b
,
char
*
in
,
int
inl
)
{
int
i
;
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
int
,
long
,
long
);
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
size_t
,
long
,
long
);
if
((
b
==
NULL
)
||
(
b
->
method
==
NULL
)
||
(
b
->
method
->
bgets
==
NULL
))
{
...
...
@@ -351,7 +353,7 @@ char *BIO_ptr_ctrl(BIO *b, int cmd, long larg)
long
BIO_ctrl
(
BIO
*
b
,
int
cmd
,
long
larg
,
void
*
parg
)
{
long
ret
;
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
int
,
long
,
long
);
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
size_t
,
long
,
long
);
if
(
b
==
NULL
)
return
(
0
);
...
...
@@ -378,7 +380,7 @@ long BIO_ctrl(BIO *b, int cmd, long larg, void *parg)
long
BIO_callback_ctrl
(
BIO
*
b
,
int
cmd
,
void
(
*
fp
)(
struct
bio_st
*
,
int
,
const
char
*
,
int
,
long
,
long
))
{
long
ret
;
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
int
,
long
,
long
);
long
(
*
cb
)(
BIO
*
,
int
,
const
char
*
,
size_t
,
long
,
long
);
if
(
b
==
NULL
)
return
(
0
);
...
...
crypto/bn/asm/x86_64-gcc.c
浏览文件 @
4d6e1e4f
...
...
@@ -175,7 +175,7 @@ BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d)
return
ret
;
}
BN_ULONG
bn_add_words
(
BN_ULONG
*
rp
,
BN_ULONG
*
ap
,
BN_ULONG
*
bp
,
in
t
n
)
BN_ULONG
bn_add_words
(
BN_ULONG
*
rp
,
BN_ULONG
*
ap
,
BN_ULONG
*
bp
,
size_
t
n
)
{
BN_ULONG
ret
=
0
,
i
=
0
;
if
(
n
<=
0
)
return
0
;
...
...
crypto/bn/bn.h
浏览文件 @
4d6e1e4f
...
...
@@ -300,9 +300,9 @@ typedef struct bn_gencb_st BN_GENCB;
struct
bignum_st
{
BN_ULONG
*
d
;
/* Pointer to an array of 'BN_BITS2' bit chunks. */
in
t
top
;
/* Index of last used d +1. */
size_
t
top
;
/* Index of last used d +1. */
/* The next are internal book keeping for bn_expand. */
in
t
dmax
;
/* Size of the d array. */
size_
t
dmax
;
/* Size of the d array. */
int
neg
;
/* one if the number is negative */
int
flags
;
};
...
...
@@ -414,8 +414,8 @@ void BN_CTX_free(BN_CTX *c);
void
BN_CTX_start
(
BN_CTX
*
ctx
);
BIGNUM
*
BN_CTX_get
(
BN_CTX
*
ctx
);
void
BN_CTX_end
(
BN_CTX
*
ctx
);
int
BN_rand
(
BIGNUM
*
rnd
,
in
t
bits
,
int
top
,
int
bottom
);
int
BN_pseudo_rand
(
BIGNUM
*
rnd
,
in
t
bits
,
int
top
,
int
bottom
);
int
BN_rand
(
BIGNUM
*
rnd
,
size_
t
bits
,
int
top
,
int
bottom
);
int
BN_pseudo_rand
(
BIGNUM
*
rnd
,
size_
t
bits
,
int
top
,
int
bottom
);
int
BN_rand_range
(
BIGNUM
*
rnd
,
const
BIGNUM
*
range
);
int
BN_pseudo_rand_range
(
BIGNUM
*
rnd
,
const
BIGNUM
*
range
);
int
BN_num_bits
(
const
BIGNUM
*
a
);
...
...
@@ -425,9 +425,9 @@ void BN_init(BIGNUM *);
void
BN_clear_free
(
BIGNUM
*
a
);
BIGNUM
*
BN_copy
(
BIGNUM
*
a
,
const
BIGNUM
*
b
);
void
BN_swap
(
BIGNUM
*
a
,
BIGNUM
*
b
);
BIGNUM
*
BN_bin2bn
(
const
unsigned
char
*
s
,
int
len
,
BIGNUM
*
ret
);
BIGNUM
*
BN_bin2bn
(
const
unsigned
char
*
s
,
size_t
len
,
BIGNUM
*
ret
);
int
BN_bn2bin
(
const
BIGNUM
*
a
,
unsigned
char
*
to
);
BIGNUM
*
BN_mpi2bn
(
const
unsigned
char
*
s
,
int
len
,
BIGNUM
*
ret
);
BIGNUM
*
BN_mpi2bn
(
const
unsigned
char
*
s
,
size_t
len
,
BIGNUM
*
ret
);
int
BN_bn2mpi
(
const
BIGNUM
*
a
,
unsigned
char
*
to
);
int
BN_sub
(
BIGNUM
*
r
,
const
BIGNUM
*
a
,
const
BIGNUM
*
b
);
int
BN_usub
(
BIGNUM
*
r
,
const
BIGNUM
*
a
,
const
BIGNUM
*
b
);
...
...
@@ -466,6 +466,8 @@ BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w);
BN_ULONG
BN_div_word
(
BIGNUM
*
a
,
BN_ULONG
w
);
int
BN_mul_word
(
BIGNUM
*
a
,
BN_ULONG
w
);
int
BN_add_word
(
BIGNUM
*
a
,
BN_ULONG
w
);
/* Note that this will give an error if w is negative */
int
BN_add_signed_word
(
BIGNUM
*
a
,
BN_LONG
w
);
int
BN_sub_word
(
BIGNUM
*
a
,
BN_ULONG
w
);
int
BN_set_word
(
BIGNUM
*
a
,
BN_ULONG
w
);
BN_ULONG
BN_get_word
(
const
BIGNUM
*
a
);
...
...
@@ -500,7 +502,7 @@ int BN_print(BIO *fp, const BIGNUM *a);
#else
int
BN_print
(
void
*
fp
,
const
BIGNUM
*
a
);
#endif
int
BN_reciprocal
(
BIGNUM
*
r
,
const
BIGNUM
*
m
,
in
t
len
,
BN_CTX
*
ctx
);
int
BN_reciprocal
(
BIGNUM
*
r
,
const
BIGNUM
*
m
,
size_
t
len
,
BN_CTX
*
ctx
);
int
BN_rshift
(
BIGNUM
*
r
,
const
BIGNUM
*
a
,
int
n
);
int
BN_rshift1
(
BIGNUM
*
r
,
const
BIGNUM
*
a
);
void
BN_clear
(
BIGNUM
*
a
);
...
...
@@ -664,9 +666,9 @@ const BIGNUM *BN_get0_nist_prime_521(void);
#define bn_expand(a,bits) ((((((bits+BN_BITS2-1))/BN_BITS2)) <= (a)->dmax)?\
(a):bn_expand2((a),(bits+BN_BITS2-1)/BN_BITS2))
#define bn_wexpand(a,words) (((words) <= (a)->dmax)?(a):bn_expand2((a),(words)))
BIGNUM
*
bn_expand2
(
BIGNUM
*
a
,
in
t
words
);
BIGNUM
*
bn_expand2
(
BIGNUM
*
a
,
size_
t
words
);
#ifndef OPENSSL_NO_DEPRECATED
BIGNUM
*
bn_dup_expand
(
const
BIGNUM
*
a
,
in
t
words
);
/* unused */
BIGNUM
*
bn_dup_expand
(
const
BIGNUM
*
a
,
size_
t
words
);
/* unused */
#endif
/* Bignum consistency macros
...
...
@@ -762,12 +764,15 @@ int RAND_pseudo_bytes(unsigned char *buf,int num);
bn_pollute(a); \
}
BN_ULONG
bn_mul_add_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
int
num
,
BN_ULONG
w
);
BN_ULONG
bn_mul_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
int
num
,
BN_ULONG
w
);
void
bn_sqr_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
int
num
);
BN_ULONG
bn_mul_add_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
size_t
num
,
BN_ULONG
w
);
BN_ULONG
bn_mul_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
size_t
num
,
BN_ULONG
w
);
void
bn_sqr_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
size_t
num
);
BN_ULONG
bn_div_words
(
BN_ULONG
h
,
BN_ULONG
l
,
BN_ULONG
d
);
BN_ULONG
bn_add_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
int
num
);
BN_ULONG
bn_sub_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
int
num
);
BN_ULONG
bn_add_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
size_t
num
);
BN_ULONG
bn_sub_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
size_t
num
);
/* Primes from RFC 2409 */
BIGNUM
*
get_rfc2409_prime_768
(
BIGNUM
*
bn
);
...
...
@@ -781,7 +786,7 @@ BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn);
BIGNUM
*
get_rfc3526_prime_6144
(
BIGNUM
*
bn
);
BIGNUM
*
get_rfc3526_prime_8192
(
BIGNUM
*
bn
);
int
BN_bntest_rand
(
BIGNUM
*
rnd
,
int
bits
,
int
top
,
int
bottom
);
int
BN_bntest_rand
(
BIGNUM
*
rnd
,
size_t
bits
,
int
top
,
int
bottom
);
/* BEGIN ERROR CODES */
/* The following lines are auto generated by the script mkerr.pl. Any changes
...
...
crypto/bn/bn_add.c
浏览文件 @
4d6e1e4f
...
...
@@ -104,7 +104,7 @@ int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
/* unsigned add of b to a */
int
BN_uadd
(
BIGNUM
*
r
,
const
BIGNUM
*
a
,
const
BIGNUM
*
b
)
{
in
t
max
,
min
,
dif
;
size_
t
max
,
min
,
dif
;
BN_ULONG
*
ap
,
*
bp
,
*
rp
,
carry
,
t1
,
t2
;
const
BIGNUM
*
tmp
;
...
...
@@ -165,7 +165,7 @@ int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
/* unsigned subtraction of b from a, a must be larger than b. */
int
BN_usub
(
BIGNUM
*
r
,
const
BIGNUM
*
a
,
const
BIGNUM
*
b
)
{
in
t
max
,
min
,
dif
;
size_
t
max
,
min
,
dif
;
register
BN_ULONG
t1
,
t2
,
*
ap
,
*
bp
,
*
rp
;
int
i
,
carry
;
#if defined(IRIX_CC_BUG) && !defined(LINT)
...
...
@@ -262,7 +262,7 @@ int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
int
BN_sub
(
BIGNUM
*
r
,
const
BIGNUM
*
a
,
const
BIGNUM
*
b
)
{
in
t
max
;
size_
t
max
;
int
add
=
0
,
neg
=
0
;
const
BIGNUM
*
tmp
;
...
...
crypto/bn/bn_div.c
浏览文件 @
4d6e1e4f
...
...
@@ -181,11 +181,12 @@ static int BN_div_no_branch(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num,
int
BN_div
(
BIGNUM
*
dv
,
BIGNUM
*
rm
,
const
BIGNUM
*
num
,
const
BIGNUM
*
divisor
,
BN_CTX
*
ctx
)
{
int
norm_shift
,
i
,
loop
;
int
norm_shift
,
i
;
size_t
loop
;
BIGNUM
*
tmp
,
wnum
,
*
snum
,
*
sdiv
,
*
res
;
BN_ULONG
*
resp
,
*
wnump
;
BN_ULONG
d0
,
d1
;
in
t
num_n
,
div_n
;
size_
t
num_n
,
div_n
;
/* Invalid zero-padding would have particularly bad consequences
* in the case of 'num', so don't just rely on bn_check_top() for this one
...
...
@@ -265,7 +266,7 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
resp
=
&
(
res
->
d
[
loop
-
1
]);
/* space for temp */
if
(
!
bn_wexpand
(
tmp
,
(
div_n
+
1
)
))
goto
err
;
if
(
!
bn_wexpand
(
tmp
,
div_n
+
1
))
goto
err
;
if
(
BN_ucmp
(
&
wnum
,
sdiv
)
>=
0
)
{
...
...
@@ -429,7 +430,7 @@ static int BN_div_no_branch(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num,
BIGNUM
*
tmp
,
wnum
,
*
snum
,
*
sdiv
,
*
res
;
BN_ULONG
*
resp
,
*
wnump
;
BN_ULONG
d0
,
d1
;
in
t
num_n
,
div_n
;
size_
t
num_n
,
div_n
;
bn_check_top
(
dv
);
bn_check_top
(
rm
);
...
...
@@ -498,12 +499,12 @@ static int BN_div_no_branch(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num,
/* Setup to 'res' */
res
->
neg
=
(
num
->
neg
^
divisor
->
neg
);
if
(
!
bn_wexpand
(
res
,
(
loop
+
1
)
))
goto
err
;
if
(
!
bn_wexpand
(
res
,
loop
+
1U
))
goto
err
;
res
->
top
=
loop
-
1
;
resp
=
&
(
res
->
d
[
loop
-
1
]);
/* space for temp */
if
(
!
bn_wexpand
(
tmp
,
(
div_n
+
1
)
))
goto
err
;
if
(
!
bn_wexpand
(
tmp
,
div_n
+
1U
))
goto
err
;
/* if res->top == 0 then clear the neg value otherwise decrease
* the resp pointer */
...
...
crypto/bn/bn_exp.c
浏览文件 @
4d6e1e4f
...
...
@@ -521,7 +521,8 @@ err:
* as cache lines are concerned. The following functions are used to transfer a BIGNUM
* from/to that table. */
static
int
MOD_EXP_CTIME_COPY_TO_PREBUF
(
BIGNUM
*
b
,
int
top
,
unsigned
char
*
buf
,
int
idx
,
int
width
)
static
int
MOD_EXP_CTIME_COPY_TO_PREBUF
(
BIGNUM
*
b
,
size_t
top
,
unsigned
char
*
buf
,
int
idx
,
int
width
)
{
size_t
i
,
j
;
...
...
@@ -541,7 +542,9 @@ static int MOD_EXP_CTIME_COPY_TO_PREBUF(BIGNUM *b, int top, unsigned char *buf,
return
1
;
}
static
int
MOD_EXP_CTIME_COPY_FROM_PREBUF
(
BIGNUM
*
b
,
int
top
,
unsigned
char
*
buf
,
int
idx
,
int
width
)
static
int
MOD_EXP_CTIME_COPY_FROM_PREBUF
(
BIGNUM
*
b
,
size_t
top
,
unsigned
char
*
buf
,
int
idx
,
int
width
)
{
size_t
i
,
j
;
...
...
@@ -572,14 +575,14 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
const
BIGNUM
*
m
,
BN_CTX
*
ctx
,
BN_MONT_CTX
*
in_mont
)
{
int
i
,
bits
,
ret
=
0
,
idx
,
window
,
wvalue
;
in
t
top
;
size_
t
top
;
BIGNUM
*
r
;
const
BIGNUM
*
aa
;
BN_MONT_CTX
*
mont
=
NULL
;
int
numPowers
;
unsigned
char
*
powerbufFree
=
NULL
;
in
t
powerbufLen
=
0
;
size_
t
powerbufLen
=
0
;
unsigned
char
*
powerbuf
=
NULL
;
BIGNUM
*
computeTemp
=
NULL
,
*
am
=
NULL
;
...
...
@@ -625,7 +628,7 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
*/
numPowers
=
1
<<
window
;
powerbufLen
=
sizeof
(
m
->
d
[
0
])
*
top
*
numPowers
;
if
((
powerbufFree
=
(
unsigned
char
*
)
OPENSSL_malloc
(
powerbufLen
+
MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH
))
==
NULL
)
if
((
powerbufFree
=
OPENSSL_malloc
(
powerbufLen
+
MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH
))
==
NULL
)
goto
err
;
powerbuf
=
MOD_EXP_CTIME_ALIGN
(
powerbufFree
);
...
...
crypto/bn/bn_lcl.h
浏览文件 @
4d6e1e4f
...
...
@@ -113,6 +113,7 @@
#define HEADER_BN_LCL_H
#include <openssl/bn.h>
#include <unistd.h>
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -468,21 +469,22 @@ void bn_sqr_comba4(BN_ULONG *r,const BN_ULONG *a);
int
bn_cmp_words
(
const
BN_ULONG
*
a
,
const
BN_ULONG
*
b
,
int
n
);
int
bn_cmp_part_words
(
const
BN_ULONG
*
a
,
const
BN_ULONG
*
b
,
int
cl
,
int
dl
);
void
bn_mul_recursive
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
in
t
n2
,
int
dna
,
int
dnb
,
BN_ULONG
*
t
);
void
bn_mul_part_recursive
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
int
n
,
int
tna
,
int
tnb
,
BN_ULONG
*
t
);
void
bn_sqr_recursive
(
BN_ULONG
*
r
,
const
BN_ULONG
*
a
,
int
n2
,
BN_ULONG
*
t
);
void
bn_mul_low_normal
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
int
n
);
void
bn_mul_low_recursive
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
int
n2
,
BN_ULONG
*
t
);
void
bn_mul_high
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
BN_ULONG
*
l
,
int
n2
,
BN_ULONG
*
t
);
void
bn_mul_recursive
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
size_
t
n2
,
int
dna
,
int
dnb
,
BN_ULONG
*
t
);
void
bn_mul_part_recursive
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
int
n
,
int
tna
,
int
tnb
,
BN_ULONG
*
t
);
void
bn_sqr_recursive
(
BN_ULONG
*
r
,
const
BN_ULONG
*
a
,
int
n2
,
BN_ULONG
*
t
);
void
bn_mul_low_normal
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
int
n
);
void
bn_mul_low_recursive
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
int
n2
,
BN_ULONG
*
t
);
void
bn_mul_high
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
BN_ULONG
*
l
,
int
n2
,
BN_ULONG
*
t
);
BN_ULONG
bn_add_part_words
(
BN_ULONG
*
r
,
const
BN_ULONG
*
a
,
const
BN_ULONG
*
b
,
int
cl
,
in
t
dl
);
size_t
cl
,
ssize_
t
dl
);
BN_ULONG
bn_sub_part_words
(
BN_ULONG
*
r
,
const
BN_ULONG
*
a
,
const
BN_ULONG
*
b
,
int
cl
,
int
dl
);
int
bn_mul_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
const
BN_ULONG
*
np
,
const
BN_ULONG
*
n0
,
int
num
);
int
cl
,
int
dl
);
int
bn_mul_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
const
BN_ULONG
*
np
,
const
BN_ULONG
*
n0
,
int
num
);
#ifdef __cplusplus
}
...
...
crypto/bn/bn_lib.c
浏览文件 @
4d6e1e4f
...
...
@@ -315,7 +315,7 @@ BIGNUM *BN_new(void)
/* This is used both by bn_expand2() and bn_dup_expand() */
/* The caller MUST check that words > b->dmax before calling this */
static
BN_ULONG
*
bn_expand_internal
(
const
BIGNUM
*
b
,
in
t
words
)
static
BN_ULONG
*
bn_expand_internal
(
const
BIGNUM
*
b
,
size_
t
words
)
{
BN_ULONG
*
A
,
*
a
=
NULL
;
const
BN_ULONG
*
B
;
...
...
@@ -391,7 +391,7 @@ static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
*/
#ifndef OPENSSL_NO_DEPRECATED
BIGNUM
*
bn_dup_expand
(
const
BIGNUM
*
b
,
in
t
words
)
BIGNUM
*
bn_dup_expand
(
const
BIGNUM
*
b
,
size_
t
words
)
{
BIGNUM
*
r
=
NULL
;
...
...
@@ -442,7 +442,7 @@ BIGNUM *bn_dup_expand(const BIGNUM *b, int words)
* It is mostly used by the various BIGNUM routines. If there is an error,
* NULL is returned. If not, 'b' is returned. */
BIGNUM
*
bn_expand2
(
BIGNUM
*
b
,
in
t
words
)
BIGNUM
*
bn_expand2
(
BIGNUM
*
b
,
size_
t
words
)
{
bn_check_top
(
b
);
...
...
@@ -594,7 +594,7 @@ int BN_set_word(BIGNUM *a, BN_ULONG w)
return
(
1
);
}
BIGNUM
*
BN_bin2bn
(
const
unsigned
char
*
s
,
in
t
len
,
BIGNUM
*
ret
)
BIGNUM
*
BN_bin2bn
(
const
unsigned
char
*
s
,
size_
t
len
,
BIGNUM
*
ret
)
{
unsigned
int
i
,
m
;
unsigned
int
n
;
...
...
@@ -614,7 +614,7 @@ BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret)
}
i
=
((
n
-
1
)
/
BN_BYTES
)
+
1
;
m
=
((
n
-
1
)
%
(
BN_BYTES
));
if
(
bn_wexpand
(
ret
,
(
int
)
i
)
==
NULL
)
if
(
bn_wexpand
(
ret
,
i
)
==
NULL
)
{
if
(
bn
)
BN_free
(
bn
);
return
NULL
;
...
...
@@ -718,7 +718,7 @@ int BN_cmp(const BIGNUM *a, const BIGNUM *b)
int
BN_set_bit
(
BIGNUM
*
a
,
int
n
)
{
in
t
i
,
j
,
k
;
size_
t
i
,
j
,
k
;
if
(
n
<
0
)
return
0
;
...
...
crypto/bn/bn_mpi.c
浏览文件 @
4d6e1e4f
...
...
@@ -88,7 +88,7 @@ int BN_bn2mpi(const BIGNUM *a, unsigned char *d)
return
(
num
+
4
+
ext
);
}
BIGNUM
*
BN_mpi2bn
(
const
unsigned
char
*
d
,
in
t
n
,
BIGNUM
*
a
)
BIGNUM
*
BN_mpi2bn
(
const
unsigned
char
*
d
,
size_
t
n
,
BIGNUM
*
a
)
{
long
len
;
int
neg
=
0
;
...
...
crypto/bn/bn_mul.c
浏览文件 @
4d6e1e4f
...
...
@@ -78,8 +78,8 @@
assembler counterparts for the systems that use assembler files. */
BN_ULONG
bn_sub_part_words
(
BN_ULONG
*
r
,
const
BN_ULONG
*
a
,
const
BN_ULONG
*
b
,
int
cl
,
in
t
dl
)
const
BN_ULONG
*
a
,
const
BN_ULONG
*
b
,
size_t
cl
,
ssize_
t
dl
)
{
BN_ULONG
c
,
t
;
...
...
@@ -126,7 +126,7 @@ BN_ULONG bn_sub_part_words(BN_ULONG *r,
}
else
{
in
t
save_dl
=
dl
;
ssize_
t
save_dl
=
dl
;
#ifdef BN_COUNT
fprintf
(
stderr
,
" bn_sub_part_words %d + %d (dl > 0, c = %d)
\n
"
,
cl
,
dl
,
c
);
#endif
...
...
@@ -205,8 +205,8 @@ BN_ULONG bn_sub_part_words(BN_ULONG *r,
#endif
BN_ULONG
bn_add_part_words
(
BN_ULONG
*
r
,
const
BN_ULONG
*
a
,
const
BN_ULONG
*
b
,
int
cl
,
in
t
dl
)
const
BN_ULONG
*
a
,
const
BN_ULONG
*
b
,
size_t
cl
,
ssize_
t
dl
)
{
BN_ULONG
c
,
l
,
t
;
...
...
@@ -222,7 +222,7 @@ BN_ULONG bn_add_part_words(BN_ULONG *r,
if
(
dl
<
0
)
{
in
t
save_dl
=
dl
;
ssize_
t
save_dl
=
dl
;
#ifdef BN_COUNT
fprintf
(
stderr
,
" bn_add_part_words %d + %d (dl < 0, c = %d)
\n
"
,
cl
,
dl
,
c
);
#endif
...
...
@@ -390,8 +390,8 @@ BN_ULONG bn_add_part_words(BN_ULONG *r,
* a[1]*b[1]
*/
/* dnX may not be positive, but n2/2+dnX has to be */
void
bn_mul_recursive
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
in
t
n2
,
int
dna
,
int
dnb
,
BN_ULONG
*
t
)
void
bn_mul_recursive
(
BN_ULONG
*
r
,
BN_ULONG
*
a
,
BN_ULONG
*
b
,
size_
t
n2
,
int
dna
,
int
dnb
,
BN_ULONG
*
t
)
{
int
n
=
n2
/
2
,
c1
,
c2
;
int
tna
=
n
+
dna
,
tnb
=
n
+
dnb
;
...
...
@@ -505,16 +505,16 @@ void bn_mul_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2,
* r[32] holds (b[1]*b[1])
*/
c1
=
(
int
)(
bn_add_words
(
t
,
r
,
&
(
r
[
n2
]),
n2
)
);
c1
=
bn_add_words
(
t
,
r
,
&
(
r
[
n2
]),
n2
);
if
(
neg
)
/* if t[32] is negative */
{
c1
-=
(
int
)(
bn_sub_words
(
&
(
t
[
n2
]),
t
,
&
(
t
[
n2
]),
n2
)
);
c1
-=
bn_sub_words
(
&
(
t
[
n2
]),
t
,
&
(
t
[
n2
]),
n2
);
}
else
{
/* Might have a carry */
c1
+=
(
int
)(
bn_add_words
(
&
(
t
[
n2
]),
&
(
t
[
n2
]),
t
,
n2
)
);
c1
+=
bn_add_words
(
&
(
t
[
n2
]),
&
(
t
[
n2
]),
t
,
n2
);
}
/* t[32] holds (a[0]-a[1])*(b[1]-b[0])+(a[0]*b[0])+(a[1]*b[1])
...
...
@@ -522,7 +522,7 @@ void bn_mul_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n2,
* r[32] holds (b[1]*b[1])
* c1 holds the carry bits
*/
c1
+=
(
int
)(
bn_add_words
(
&
(
r
[
n
]),
&
(
r
[
n
]),
&
(
t
[
n2
]),
n2
)
);
c1
+=
bn_add_words
(
&
(
r
[
n
]),
&
(
r
[
n
]),
&
(
t
[
n2
]),
n2
);
if
(
c1
)
{
p
=
&
(
r
[
n
+
n2
]);
...
...
crypto/bn/bn_nist.c
浏览文件 @
4d6e1e4f
...
...
@@ -415,7 +415,8 @@ int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
return
1
;
}
typedef
BN_ULONG
(
*
bn_addsub_f
)(
BN_ULONG
*
,
const
BN_ULONG
*
,
const
BN_ULONG
*
,
int
);
typedef
BN_ULONG
(
*
bn_addsub_f
)(
BN_ULONG
*
,
const
BN_ULONG
*
,
const
BN_ULONG
*
,
size_t
);
#define nist_set_224(to, from, a1, a2, a3, a4, a5, a6, a7) \
{ \
...
...
@@ -429,7 +430,7 @@ typedef BN_ULONG (*bn_addsub_f)(BN_ULONG *,const BN_ULONG *,const BN_ULONG *,int
}
int
BN_nist_mod_224
(
BIGNUM
*
r
,
const
BIGNUM
*
a
,
const
BIGNUM
*
field
,
BN_CTX
*
ctx
)
BN_CTX
*
ctx
)
{
int
top
=
a
->
top
,
i
;
int
carry
;
...
...
crypto/bn/bn_print.c
浏览文件 @
4d6e1e4f
...
...
@@ -71,7 +71,7 @@ char *BN_bn2hex(const BIGNUM *a)
char
*
buf
;
char
*
p
;
buf
=
(
char
*
)
OPENSSL_malloc
(
a
->
top
*
BN_BYTES
*
2
+
2
);
buf
=
OPENSSL_malloc
(
a
->
top
*
BN_BYTES
*
2
+
2
);
if
(
buf
==
NULL
)
{
BNerr
(
BN_F_BN_BN2HEX
,
ERR_R_MALLOC_FAILURE
);
...
...
@@ -116,7 +116,7 @@ char *BN_bn2dec(const BIGNUM *a)
i
=
BN_num_bits
(
a
)
*
3
;
num
=
(
i
/
10
+
i
/
1000
+
1
)
+
1
;
bn_data
=
(
BN_ULONG
*
)
OPENSSL_malloc
((
num
/
BN_DEC_NUM
+
1
)
*
sizeof
(
BN_ULONG
));
buf
=
(
char
*
)
OPENSSL_malloc
(
num
+
3
);
buf
=
OPENSSL_malloc
(
num
+
3
);
if
((
buf
==
NULL
)
||
(
bn_data
==
NULL
))
{
BNerr
(
BN_F_BN_BN2DEC
,
ERR_R_MALLOC_FAILURE
);
...
...
crypto/bn/bn_rand.c
浏览文件 @
4d6e1e4f
...
...
@@ -208,18 +208,18 @@ err:
return
(
ret
);
}
int
BN_rand
(
BIGNUM
*
rnd
,
in
t
bits
,
int
top
,
int
bottom
)
int
BN_rand
(
BIGNUM
*
rnd
,
size_
t
bits
,
int
top
,
int
bottom
)
{
return
bnrand
(
0
,
rnd
,
bits
,
top
,
bottom
);
}
int
BN_pseudo_rand
(
BIGNUM
*
rnd
,
in
t
bits
,
int
top
,
int
bottom
)
int
BN_pseudo_rand
(
BIGNUM
*
rnd
,
size_
t
bits
,
int
top
,
int
bottom
)
{
return
bnrand
(
1
,
rnd
,
bits
,
top
,
bottom
);
}
#if 1
int
BN_bntest_rand
(
BIGNUM
*
rnd
,
in
t
bits
,
int
top
,
int
bottom
)
int
BN_bntest_rand
(
BIGNUM
*
rnd
,
size_
t
bits
,
int
top
,
int
bottom
)
{
return
bnrand
(
2
,
rnd
,
bits
,
top
,
bottom
);
}
...
...
@@ -229,7 +229,8 @@ int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom)
/* random number r: 0 <= r < range */
static
int
bn_rand_range
(
int
pseudo
,
BIGNUM
*
r
,
const
BIGNUM
*
range
)
{
int
(
*
bn_rand
)(
BIGNUM
*
,
int
,
int
,
int
)
=
pseudo
?
BN_pseudo_rand
:
BN_rand
;
int
(
*
bn_rand
)(
BIGNUM
*
,
size_t
,
int
,
int
)
=
pseudo
?
BN_pseudo_rand
:
BN_rand
;
int
n
;
int
count
=
100
;
...
...
crypto/bn/bn_recp.c
浏览文件 @
4d6e1e4f
...
...
@@ -214,7 +214,7 @@ err:
* we can do faster division if the remainder is not required.
*/
/* r := 2^len / m */
int
BN_reciprocal
(
BIGNUM
*
r
,
const
BIGNUM
*
m
,
in
t
len
,
BN_CTX
*
ctx
)
int
BN_reciprocal
(
BIGNUM
*
r
,
const
BIGNUM
*
m
,
size_
t
len
,
BN_CTX
*
ctx
)
{
int
ret
=
-
1
;
BIGNUM
*
t
;
...
...
crypto/bn/bn_word.c
浏览文件 @
4d6e1e4f
...
...
@@ -168,6 +168,13 @@ int BN_add_word(BIGNUM *a, BN_ULONG w)
return
(
1
);
}
int
BN_add_signed_word
(
BIGNUM
*
a
,
BN_LONG
w
)
{
if
(
w
<
0
)
return
0
;
return
BN_add_word
(
a
,
(
BN_ULONG
)
w
);
}
int
BN_sub_word
(
BIGNUM
*
a
,
BN_ULONG
w
)
{
int
i
;
...
...
crypto/crypto.h
浏览文件 @
4d6e1e4f
...
...
@@ -365,7 +365,7 @@ int CRYPTO_is_mem_check_on(void);
#define MemCheck_off() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE)
#define is_MemCheck_on() CRYPTO_is_mem_check_on()
#define OPENSSL_malloc(num) CRYPTO_malloc(
(int)
num,__FILE__,__LINE__)
#define OPENSSL_malloc(num) CRYPTO_malloc(num,__FILE__,__LINE__)
#define OPENSSL_strdup(str) CRYPTO_strdup((str),__FILE__,__LINE__)
#define OPENSSL_realloc(addr,num) \
CRYPTO_realloc((char *)addr,(int)num,__FILE__,__LINE__)
...
...
@@ -469,8 +469,10 @@ int CRYPTO_set_mem_ex_functions(void *(*m)(size_t,const char *,int),
void
(
*
f
)(
void
*
));
int
CRYPTO_set_locked_mem_ex_functions
(
void
*
(
*
m
)(
size_t
,
const
char
*
,
int
),
void
(
*
free_func
)(
void
*
));
int
CRYPTO_set_mem_debug_functions
(
void
(
*
m
)(
void
*
,
int
,
const
char
*
,
int
,
int
),
void
(
*
r
)(
void
*
,
void
*
,
int
,
const
char
*
,
int
,
int
),
int
CRYPTO_set_mem_debug_functions
(
void
(
*
m
)(
void
*
,
size_t
,
const
char
*
,
int
,
int
),
void
(
*
r
)(
void
*
,
void
*
,
size_t
,
const
char
*
,
int
,
int
),
void
(
*
f
)(
void
*
,
int
),
void
(
*
so
)(
long
),
long
(
*
go
)(
void
));
...
...
@@ -481,21 +483,23 @@ void CRYPTO_get_mem_ex_functions(void *(**m)(size_t,const char *,int),
void
(
**
f
)(
void
*
));
void
CRYPTO_get_locked_mem_ex_functions
(
void
*
(
**
m
)(
size_t
,
const
char
*
,
int
),
void
(
**
f
)(
void
*
));
void
CRYPTO_get_mem_debug_functions
(
void
(
**
m
)(
void
*
,
int
,
const
char
*
,
int
,
int
),
void
(
**
r
)(
void
*
,
void
*
,
int
,
const
char
*
,
int
,
int
),
void
CRYPTO_get_mem_debug_functions
(
void
(
**
m
)(
void
*
,
size_t
,
const
char
*
,
int
,
int
),
void
(
**
r
)(
void
*
,
void
*
,
size_t
,
const
char
*
,
int
,
int
),
void
(
**
f
)(
void
*
,
int
),
void
(
**
so
)(
long
),
long
(
**
go
)(
void
));
void
*
CRYPTO_malloc_locked
(
in
t
num
,
const
char
*
file
,
int
line
);
void
*
CRYPTO_malloc_locked
(
size_
t
num
,
const
char
*
file
,
int
line
);
void
CRYPTO_free_locked
(
void
*
);
void
*
CRYPTO_malloc
(
in
t
num
,
const
char
*
file
,
int
line
);
void
*
CRYPTO_malloc
(
size_
t
num
,
const
char
*
file
,
int
line
);
char
*
CRYPTO_strdup
(
const
char
*
str
,
const
char
*
file
,
int
line
);
void
CRYPTO_free
(
void
*
);
void
*
CRYPTO_realloc
(
void
*
addr
,
in
t
num
,
const
char
*
file
,
int
line
);
void
*
CRYPTO_realloc_clean
(
void
*
addr
,
int
old_num
,
int
num
,
const
char
*
file
,
int
line
);
void
*
CRYPTO_remalloc
(
void
*
addr
,
in
t
num
,
const
char
*
file
,
int
line
);
void
*
CRYPTO_realloc
(
void
*
addr
,
size_
t
num
,
const
char
*
file
,
int
line
);
void
*
CRYPTO_realloc_clean
(
void
*
addr
,
size_t
old_num
,
size_t
num
,
const
char
*
file
,
int
line
);
void
*
CRYPTO_remalloc
(
void
*
addr
,
size_
t
num
,
const
char
*
file
,
int
line
);
void
OPENSSL_cleanse
(
void
*
ptr
,
size_t
len
);
...
...
@@ -516,8 +520,10 @@ int CRYPTO_remove_all_info(void);
* 0: called before the actual memory allocation has taken place
* 1: called after the actual memory allocation has taken place
*/
void
CRYPTO_dbg_malloc
(
void
*
addr
,
int
num
,
const
char
*
file
,
int
line
,
int
before_p
);
void
CRYPTO_dbg_realloc
(
void
*
addr1
,
void
*
addr2
,
int
num
,
const
char
*
file
,
int
line
,
int
before_p
);
void
CRYPTO_dbg_malloc
(
void
*
addr
,
size_t
num
,
const
char
*
file
,
int
line
,
int
before_p
);
void
CRYPTO_dbg_realloc
(
void
*
addr1
,
void
*
addr2
,
size_t
num
,
const
char
*
file
,
int
line
,
int
before_p
);
void
CRYPTO_dbg_free
(
void
*
addr
,
int
before_p
);
/* Tell the debugging code about options. By default, the following values
* apply:
...
...
crypto/mem.c
浏览文件 @
4d6e1e4f
...
...
@@ -103,9 +103,9 @@ static void (*free_locked_func)(void *) = free;
/* XXX use correct function pointer types */
#ifdef CRYPTO_MDEBUG
/* use default functions from mem_dbg.c */
static
void
(
*
malloc_debug_func
)(
void
*
,
in
t
,
const
char
*
,
int
,
int
)
static
void
(
*
malloc_debug_func
)(
void
*
,
size_
t
,
const
char
*
,
int
,
int
)
=
CRYPTO_dbg_malloc
;
static
void
(
*
realloc_debug_func
)(
void
*
,
void
*
,
in
t
,
const
char
*
,
int
,
int
)
static
void
(
*
realloc_debug_func
)(
void
*
,
void
*
,
size_
t
,
const
char
*
,
int
,
int
)
=
CRYPTO_dbg_realloc
;
static
void
(
*
free_debug_func
)(
void
*
,
int
)
=
CRYPTO_dbg_free
;
static
void
(
*
set_debug_options_func
)(
long
)
=
CRYPTO_dbg_set_options
;
...
...
@@ -178,8 +178,8 @@ int CRYPTO_set_locked_mem_ex_functions(
return
1
;
}
int
CRYPTO_set_mem_debug_functions
(
void
(
*
m
)(
void
*
,
in
t
,
const
char
*
,
int
,
int
),
void
(
*
r
)(
void
*
,
void
*
,
in
t
,
const
char
*
,
int
,
int
),
int
CRYPTO_set_mem_debug_functions
(
void
(
*
m
)(
void
*
,
size_
t
,
const
char
*
,
int
,
int
),
void
(
*
r
)(
void
*
,
void
*
,
size_
t
,
const
char
*
,
int
,
int
),
void
(
*
f
)(
void
*
,
int
),
void
(
*
so
)(
long
),
long
(
*
go
)(
void
))
...
...
@@ -233,8 +233,8 @@ void CRYPTO_get_locked_mem_ex_functions(
if
(
f
!=
NULL
)
*
f
=
free_locked_func
;
}
void
CRYPTO_get_mem_debug_functions
(
void
(
**
m
)(
void
*
,
in
t
,
const
char
*
,
int
,
int
),
void
(
**
r
)(
void
*
,
void
*
,
in
t
,
const
char
*
,
int
,
int
),
void
CRYPTO_get_mem_debug_functions
(
void
(
**
m
)(
void
*
,
size_
t
,
const
char
*
,
int
,
int
),
void
(
**
r
)(
void
*
,
void
*
,
size_
t
,
const
char
*
,
int
,
int
),
void
(
**
f
)(
void
*
,
int
),
void
(
**
so
)(
long
),
long
(
**
go
)(
void
))
...
...
@@ -247,7 +247,7 @@ void CRYPTO_get_mem_debug_functions(void (**m)(void *,int,const char *,int,int),
}
void
*
CRYPTO_malloc_locked
(
in
t
num
,
const
char
*
file
,
int
line
)
void
*
CRYPTO_malloc_locked
(
size_
t
num
,
const
char
*
file
,
int
line
)
{
void
*
ret
=
NULL
;
...
...
@@ -291,7 +291,7 @@ void CRYPTO_free_locked(void *str)
free_debug_func
(
NULL
,
1
);
}
void
*
CRYPTO_malloc
(
in
t
num
,
const
char
*
file
,
int
line
)
void
*
CRYPTO_malloc
(
size_
t
num
,
const
char
*
file
,
int
line
)
{
void
*
ret
=
NULL
;
...
...
@@ -330,7 +330,7 @@ char *CRYPTO_strdup(const char *str, const char *file, int line)
return
ret
;
}
void
*
CRYPTO_realloc
(
void
*
str
,
in
t
num
,
const
char
*
file
,
int
line
)
void
*
CRYPTO_realloc
(
void
*
str
,
size_
t
num
,
const
char
*
file
,
int
line
)
{
void
*
ret
=
NULL
;
...
...
@@ -351,8 +351,8 @@ void *CRYPTO_realloc(void *str, int num, const char *file, int line)
return
ret
;
}
void
*
CRYPTO_realloc_clean
(
void
*
str
,
int
old_len
,
int
num
,
const
char
*
file
,
int
line
)
void
*
CRYPTO_realloc_clean
(
void
*
str
,
size_t
old_len
,
size_t
num
,
const
char
*
file
,
int
line
)
{
void
*
ret
=
NULL
;
...
...
@@ -393,10 +393,10 @@ void CRYPTO_free(void *str)
free_debug_func
(
NULL
,
1
);
}
void
*
CRYPTO_remalloc
(
void
*
a
,
in
t
num
,
const
char
*
file
,
int
line
)
void
*
CRYPTO_remalloc
(
void
*
a
,
size_
t
num
,
const
char
*
file
,
int
line
)
{
if
(
a
!=
NULL
)
OPENSSL_free
(
a
);
a
=
(
char
*
)
OPENSSL_malloc
(
num
);
a
=
OPENSSL_malloc
(
num
);
return
(
a
);
}
...
...
crypto/mem_dbg.c
浏览文件 @
4d6e1e4f
...
...
@@ -478,7 +478,7 @@ int CRYPTO_remove_all_info(void)
static
unsigned
long
break_order_num
=
0
;
void
CRYPTO_dbg_malloc
(
void
*
addr
,
in
t
num
,
const
char
*
file
,
int
line
,
void
CRYPTO_dbg_malloc
(
void
*
addr
,
size_
t
num
,
const
char
*
file
,
int
line
,
int
before_p
)
{
MEM
*
m
,
*
mm
;
...
...
@@ -602,8 +602,8 @@ void CRYPTO_dbg_free(void *addr, int before_p)
}
}
void
CRYPTO_dbg_realloc
(
void
*
addr1
,
void
*
addr2
,
in
t
num
,
const
char
*
file
,
int
line
,
int
before_p
)
void
CRYPTO_dbg_realloc
(
void
*
addr1
,
void
*
addr2
,
size_
t
num
,
const
char
*
file
,
int
line
,
int
before_p
)
{
MEM
m
,
*
mp
;
...
...
@@ -666,7 +666,7 @@ static void print_leak_doall_arg(const MEM *m, MEM_LEAK *l)
char
buf
[
1024
];
char
*
bufp
=
buf
;
APP_INFO
*
amip
;
in
t
ami_cnt
;
size_
t
ami_cnt
;
struct
tm
*
lcl
=
NULL
;
CRYPTO_THREADID
ti
;
...
...
@@ -712,7 +712,7 @@ static void print_leak_doall_arg(const MEM *m, MEM_LEAK *l)
do
{
in
t
buf_len
;
size_
t
buf_len
;
int
info_len
;
ami_cnt
++
;
...
...
crypto/objects/o_names.c
浏览文件 @
4d6e1e4f
...
...
@@ -289,7 +289,7 @@ void OBJ_NAME_do_all(int type,void (*fn)(const OBJ_NAME *,void *arg),void *arg)
struct
doall_sorted
{
int
type
;
in
t
n
;
size_
t
n
;
const
OBJ_NAME
**
names
;
};
...
...
@@ -322,7 +322,7 @@ void OBJ_NAME_do_all_sorted(int type,void (*fn)(const OBJ_NAME *,void *arg),
d
.
n
=
0
;
OBJ_NAME_do_all
(
type
,
do_all_sorted_fn
,
&
d
);
qsort
(
(
void
*
)
d
.
names
,
d
.
n
,
sizeof
*
d
.
names
,
do_all_sorted_cmp
);
qsort
(
d
.
names
,
d
.
n
,
sizeof
*
d
.
names
,
do_all_sorted_cmp
);
for
(
n
=
0
;
n
<
d
.
n
;
++
n
)
fn
(
d
.
names
[
n
],
arg
);
...
...
crypto/objects/obj_dat.c
浏览文件 @
4d6e1e4f
...
...
@@ -431,7 +431,8 @@ ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name)
unsigned
char
*
buf
;
unsigned
char
*
p
;
const
unsigned
char
*
cp
;
int
i
,
j
;
size_t
i
;
size_t
j
;
if
(
!
no_name
)
{
if
(
((
nid
=
OBJ_sn2nid
(
s
))
!=
NID_undef
)
||
...
...
@@ -441,7 +442,7 @@ ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name)
/* Work out size of content octets */
i
=
a2d_ASN1_OBJECT
(
NULL
,
0
,
s
,
-
1
);
if
(
i
<
=
0
)
{
if
(
i
=
=
0
)
{
/* Don't clear the error */
/*ERR_clear_error();*/
return
NULL
;
...
...
@@ -449,7 +450,7 @@ ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name)
/* Work out total size */
j
=
ASN1_object_size
(
0
,
i
,
V_ASN1_OBJECT
);
if
((
buf
=
(
unsigned
char
*
)
OPENSSL_malloc
(
j
))
==
NULL
)
return
NULL
;
if
((
buf
=
OPENSSL_malloc
(
j
))
==
NULL
)
return
NULL
;
p
=
buf
;
/* Write out tag+length */
...
...
@@ -463,7 +464,7 @@ ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name)
return
op
;
}
int
OBJ_obj2txt
(
char
*
buf
,
in
t
buf_len
,
const
ASN1_OBJECT
*
a
,
int
no_name
)
int
OBJ_obj2txt
(
char
*
buf
,
size_
t
buf_len
,
const
ASN1_OBJECT
*
a
,
int
no_name
)
{
int
i
,
n
=
0
,
len
,
nid
,
first
,
use_bn
;
BIGNUM
*
bl
;
...
...
@@ -508,7 +509,7 @@ int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name)
goto
err
;
if
(
use_bn
)
{
if
(
!
BN_add_word
(
bl
,
c
&
0x7f
))
if
(
!
BN_add_word
(
bl
,
c
&
0x7f
U
))
goto
err
;
}
else
...
...
@@ -782,12 +783,13 @@ int OBJ_create(const char *oid, const char *sn, const char *ln)
int
ok
=
0
;
ASN1_OBJECT
*
op
=
NULL
;
unsigned
char
*
buf
;
in
t
i
;
size_
t
i
;
i
=
a2d_ASN1_OBJECT
(
NULL
,
0
,
oid
,
-
1
);
if
(
i
<=
0
)
return
(
0
);
if
(
i
==
0
)
return
0
;
if
((
buf
=
(
unsigned
char
*
)
OPENSSL_malloc
(
i
))
==
NULL
)
if
((
buf
=
OPENSSL_malloc
(
i
))
==
NULL
)
{
OBJerr
(
OBJ_F_OBJ_CREATE
,
ERR_R_MALLOC_FAILURE
);
return
(
0
);
...
...
@@ -795,7 +797,7 @@ int OBJ_create(const char *oid, const char *sn, const char *ln)
i
=
a2d_ASN1_OBJECT
(
buf
,
i
,
oid
,
-
1
);
if
(
i
==
0
)
goto
err
;
op
=
(
ASN1_OBJECT
*
)
ASN1_OBJECT_create
(
OBJ_new_nid
(
1
),
buf
,
i
,
sn
,
ln
);
op
=
ASN1_OBJECT_create
(
OBJ_new_nid
(
1
),
buf
,
i
,
sn
,
ln
);
if
(
op
==
NULL
)
goto
err
;
ok
=
OBJ_add_object
(
op
);
...
...
crypto/objects/objects.h
浏览文件 @
4d6e1e4f
...
...
@@ -1006,7 +1006,8 @@ const char * OBJ_nid2ln(int n);
const
char
*
OBJ_nid2sn
(
int
n
);
int
OBJ_obj2nid
(
const
ASN1_OBJECT
*
o
);
ASN1_OBJECT
*
OBJ_txt2obj
(
const
char
*
s
,
int
no_name
);
int
OBJ_obj2txt
(
char
*
buf
,
int
buf_len
,
const
ASN1_OBJECT
*
a
,
int
no_name
);
int
OBJ_obj2txt
(
char
*
buf
,
size_t
buf_len
,
const
ASN1_OBJECT
*
a
,
int
no_name
);
int
OBJ_txt2nid
(
const
char
*
s
);
int
OBJ_ln2nid
(
const
char
*
s
);
int
OBJ_sn2nid
(
const
char
*
s
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录