Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Samuel Thibault
mariadb-10.1
Commits
bdc809ec
Commit
bdc809ec
authored
Oct 28, 2016
by
Otto Kekäläinen
Browse files
Imported Upstream version 10.0.28
parent
8eb96cb6
Changes
307
Hide whitespace changes
Inline
Side-by-side
CREDITS
View file @
bdc809ec
...
...
@@ -10,6 +10,7 @@ Visma http://visma.com (2015 - 2016)
Acronis http://acronis.com (2016)
Nexedi https://www.nexedi.com (2016)
Automattic https://automattic.com (2014 - 2016)
Tencent Game DBA http://tencentdba.com/about (2016)
Verkkokauppa.com https://www.verkkokauppa.com (2015 - 2016)
Virtuozzo https://virtuozzo.com (2016)
...
...
Docs/INFO_SRC
View file @
bdc809ec
commit:
5bbe929d706e26cb3f9b291da6009526a17b1545
date: 2016-0
8
-2
4
1
7:39:57
+0
3
00
build-date: 2016-0
8
-2
4
1
7:07:45
+0200
short:
5bbe929
commit:
eca8c324e9a02f530853580991b11b587f54b24a
date: 2016-
1
0-2
7
1
9:07:55
+0
2
00
build-date: 2016-
1
0-2
7
1
9:16:51
+0200
short:
eca8c32
branch: HEAD
MySQL source 10.0.2
7
MySQL source 10.0.2
8
VERSION
View file @
bdc809ec
MYSQL_VERSION_MAJOR=10
MYSQL_VERSION_MINOR=0
MYSQL_VERSION_PATCH=2
7
MYSQL_VERSION_PATCH=2
8
client/mysql.cc
View file @
bdc809ec
...
...
@@ -245,7 +245,8 @@ static void end_pager();
static
void
init_tee
(
const
char
*
);
static
void
end_tee
();
static
const
char
*
construct_prompt
();
static
char
*
get_arg
(
char
*
line
,
my_bool
get_next_arg
);
enum
get_arg_mode
{
CHECK
,
GET
,
GET_NEXT
};
static
char
*
get_arg
(
char
*
line
,
get_arg_mode
mode
);
static
void
init_username
();
static
void
add_int_to_prompt
(
int
toadd
);
static
int
get_result_width
(
MYSQL_RES
*
res
);
...
...
@@ -2257,7 +2258,7 @@ static COMMANDS *find_command(char *name)
if
(
!
my_strnncoll
(
&
my_charset_latin1
,
(
uchar
*
)
name
,
len
,
(
uchar
*
)
commands
[
i
].
name
,
len
)
&&
(
commands
[
i
].
name
[
len
]
==
'\0'
)
&&
(
!
end
||
commands
[
i
].
takes_params
))
(
!
end
||
(
commands
[
i
].
takes_params
&&
get_arg
(
name
,
CHECK
))
))
{
index
=
i
;
break
;
...
...
@@ -3177,7 +3178,7 @@ com_charset(String *buffer __attribute__((unused)), char *line)
char
buff
[
256
],
*
param
;
CHARSET_INFO
*
new_cs
;
strmake_buf
(
buff
,
line
);
param
=
get_arg
(
buff
,
0
);
param
=
get_arg
(
buff
,
GET
);
if
(
!
param
||
!*
param
)
{
return
put_info
(
"Usage:
\\
C charset_name | charset charset_name"
,
...
...
@@ -4263,12 +4264,12 @@ com_connect(String *buffer, char *line)
#ifdef EXTRA_DEBUG
tmp
[
1
]
=
0
;
#endif
tmp
=
get_arg
(
buff
,
0
);
tmp
=
get_arg
(
buff
,
GET
);
if
(
tmp
&&
*
tmp
)
{
my_free
(
current_db
);
current_db
=
my_strdup
(
tmp
,
MYF
(
MY_WME
));
tmp
=
get_arg
(
buff
,
1
);
tmp
=
get_arg
(
buff
,
GET_NEXT
);
if
(
tmp
)
{
my_free
(
current_host
);
...
...
@@ -4371,7 +4372,7 @@ com_delimiter(String *buffer __attribute__((unused)), char *line)
char
buff
[
256
],
*
tmp
;
strmake_buf
(
buff
,
line
);
tmp
=
get_arg
(
buff
,
0
);
tmp
=
get_arg
(
buff
,
GET
);
if
(
!
tmp
||
!*
tmp
)
{
...
...
@@ -4402,7 +4403,7 @@ com_use(String *buffer __attribute__((unused)), char *line)
bzero
(
buff
,
sizeof
(
buff
));
strmake_buf
(
buff
,
line
);
tmp
=
get_arg
(
buff
,
0
);
tmp
=
get_arg
(
buff
,
GET
);
if
(
!
tmp
||
!*
tmp
)
{
put_info
(
"USE must be followed by a database name"
,
INFO_ERROR
);
...
...
@@ -4487,23 +4488,22 @@ com_nowarnings(String *buffer __attribute__((unused)),
}
/*
Gets argument from a command on the command line. If get_next_arg is
not defined, skips the command and returns the first argument. The
line is modified by adding zero to the end of the argument. If
get_next_arg is defined, then the function searches for end of string
first, after found, returns the next argument and adds zero to the
end. If you ever wish to use this feature, remember to initialize all
items in the array to zero first.
Gets argument from a command on the command line. If mode is not GET_NEXT,
skips the command and returns the first argument. The line is modified by
adding zero to the end of the argument. If mode is GET_NEXT, then the
function searches for end of string first, after found, returns the next
argument and adds zero to the end. If you ever wish to use this feature,
remember to initialize all items in the array to zero first.
*/
char
*
get_arg
(
char
*
line
,
my_bool
get_next_arg
)
static
char
*
get_arg
(
char
*
line
,
get_arg_mode
mode
)
{
char
*
ptr
,
*
start
;
my_
bool
quoted
=
0
,
valid_arg
=
0
;
bool
short_cmd
=
false
;
char
qtype
=
0
;
ptr
=
line
;
if
(
get_next_arg
)
if
(
mode
==
GET_NEXT
)
{
for
(;
*
ptr
;
ptr
++
)
;
if
(
*
(
ptr
+
1
))
...
...
@@ -4514,7 +4514,7 @@ char *get_arg(char *line, my_bool get_next_arg)
/* skip leading white spaces */
while
(
my_isspace
(
charset_info
,
*
ptr
))
ptr
++
;
if
(
*
ptr
==
'\\'
)
// short command was used
if
(
(
short_cmd
=
*
ptr
==
'\\'
)
)
// short command was used
ptr
+=
2
;
else
while
(
*
ptr
&&!
my_isspace
(
charset_info
,
*
ptr
))
// skip command
...
...
@@ -4527,24 +4527,28 @@ char *get_arg(char *line, my_bool get_next_arg)
if
(
*
ptr
==
'\''
||
*
ptr
==
'\"'
||
*
ptr
==
'`'
)
{
qtype
=
*
ptr
;
quoted
=
1
;
ptr
++
;
}
for
(
start
=
ptr
;
*
ptr
;
ptr
++
)
{
if
(
*
ptr
==
'\\'
&&
ptr
[
1
])
// escaped character
if
((
*
ptr
==
'\\'
&&
ptr
[
1
])
||
// escaped character
(
!
short_cmd
&&
qtype
&&
*
ptr
==
qtype
&&
ptr
[
1
]
==
qtype
))
// quote
{
// Remove the backslash
strmov_overlapp
(
ptr
,
ptr
+
1
);
// Remove (or skip) the backslash (or a second quote)
if
(
mode
!=
CHECK
)
strmov_overlapp
(
ptr
,
ptr
+
1
);
else
ptr
++
;
}
else
if
(
(
!
quoted
&&
*
ptr
==
' '
)
||
(
quoted
&&
*
ptr
==
qtype
))
else
if
(
*
ptr
==
(
qtype
?
qtype
:
' '
))
{
*
ptr
=
0
;
qtype
=
0
;
if
(
mode
!=
CHECK
)
*
ptr
=
0
;
break
;
}
}
valid_arg
=
ptr
!=
start
;
return
valid_arg
?
start
:
NullS
;
return
ptr
!=
start
&&
!
qtype
?
start
:
NullS
;
}
...
...
client/mysqldump.c
View file @
bdc809ec
...
...
@@ -575,9 +575,7 @@ static int dump_all_tablespaces();
static
int
dump_tablespaces_for_tables
(
char
*
db
,
char
**
table_names
,
int
tables
);
static
int
dump_tablespaces_for_databases
(
char
**
databases
);
static
int
dump_tablespaces
(
char
*
ts_where
);
static
void
print_comment
(
FILE
*
sql_file
,
my_bool
is_error
,
const
char
*
format
,
...);
static
void
print_comment
(
FILE
*
,
my_bool
,
const
char
*
,
...);
/*
Print the supplied message if in verbose mode
...
...
@@ -655,6 +653,30 @@ static void short_usage(FILE *f)
}
/** returns a string fixed to be safely printed inside a -- comment
that is, any new line in it gets prefixed with --
*/
static
const
char
*
fix_for_comment
(
const
char
*
ident
)
{
static
char
buf
[
1024
];
char
c
,
*
s
=
buf
;
while
((
c
=
*
s
++=
*
ident
++
))
{
if
(
s
>=
buf
+
sizeof
(
buf
)
-
10
)
{
strmov
(
s
,
"..."
);
break
;
}
if
(
c
==
'\n'
)
s
=
strmov
(
s
,
"-- "
);
}
return
buf
;
}
static
void
write_header
(
FILE
*
sql_file
,
char
*
db_name
)
{
if
(
opt_xml
)
...
...
@@ -677,8 +699,8 @@ static void write_header(FILE *sql_file, char *db_name)
DUMP_VERSION
,
MYSQL_SERVER_VERSION
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
print_comment
(
sql_file
,
0
,
"-- Host: %s Database: %s
\n
"
,
current_host
?
current_host
:
"localhost"
,
db_name
?
db_name
:
""
);
fix_for_comment
(
current_host
?
current_host
:
"localhost"
)
,
fix_for_comment
(
db_name
?
db_name
:
""
)
)
;
print_comment
(
sql_file
,
0
,
"-- ------------------------------------------------------
\n
"
);
...
...
@@ -2224,7 +2246,8 @@ static uint dump_events_for_db(char *db)
/* nice comments */
print_comment
(
sql_file
,
0
,
"
\n
--
\n
-- Dumping events for database '%s'
\n
--
\n
"
,
db
);
"
\n
--
\n
-- Dumping events for database '%s'
\n
--
\n
"
,
fix_for_comment
(
db
));
/*
not using "mysql_query_with_error_report" because we may have not
...
...
@@ -2436,7 +2459,8 @@ static uint dump_routines_for_db(char *db)
/* nice comments */
print_comment
(
sql_file
,
0
,
"
\n
--
\n
-- Dumping routines for database '%s'
\n
--
\n
"
,
db
);
"
\n
--
\n
-- Dumping routines for database '%s'
\n
--
\n
"
,
fix_for_comment
(
db
));
/*
not using "mysql_query_with_error_report" because we may have not
...
...
@@ -2731,11 +2755,11 @@ static uint get_table_structure(char *table, char *db, char *table_type,
if
(
strcmp
(
table_type
,
"VIEW"
)
==
0
)
/* view */
print_comment
(
sql_file
,
0
,
"
\n
--
\n
-- Temporary table structure for view %s
\n
--
\n\n
"
,
result_table
);
fix_for_comment
(
result_table
)
)
;
else
print_comment
(
sql_file
,
0
,
"
\n
--
\n
-- Table structure for table %s
\n
--
\n\n
"
,
result_table
);
fix_for_comment
(
result_table
)
)
;
if
(
opt_drop
)
{
...
...
@@ -2977,7 +3001,7 @@ static uint get_table_structure(char *table, char *db, char *table_type,
print_comment
(
sql_file
,
0
,
"
\n
--
\n
-- Table structure for table %s
\n
--
\n\n
"
,
result_table
);
fix_for_comment
(
result_table
)
)
;
if
(
opt_drop
)
fprintf
(
sql_file
,
"DROP TABLE IF EXISTS %s;
\n
"
,
result_table
);
if
(
!
opt_xml
)
...
...
@@ -3684,21 +3708,21 @@ static void dump_table(char *table, char *db)
{
print_comment
(
md_result_file
,
0
,
"
\n
--
\n
-- Dumping data for table %s
\n
--
\n
"
,
result_table
);
fix_for_comment
(
result_table
)
)
;
dynstr_append_checked
(
&
query_string
,
"SELECT /*!40001 SQL_NO_CACHE */ * FROM "
);
dynstr_append_checked
(
&
query_string
,
result_table
);
if
(
where
)
{
print_comment
(
md_result_file
,
0
,
"-- WHERE: %s
\n
"
,
where
);
print_comment
(
md_result_file
,
0
,
"-- WHERE: %s
\n
"
,
fix_for_comment
(
where
)
)
;
dynstr_append_checked
(
&
query_string
,
" WHERE "
);
dynstr_append_checked
(
&
query_string
,
where
);
}
if
(
order_by
)
{
print_comment
(
md_result_file
,
0
,
"-- ORDER BY: %s
\n
"
,
order_by
);
print_comment
(
md_result_file
,
0
,
"-- ORDER BY: %s
\n
"
,
fix_for_comment
(
order_by
)
)
;
dynstr_append_checked
(
&
query_string
,
" ORDER BY "
);
dynstr_append_checked
(
&
query_string
,
order_by
);
...
...
@@ -4208,7 +4232,7 @@ static int dump_tablespaces(char* ts_where)
if
(
first
)
{
print_comment
(
md_result_file
,
0
,
"
\n
--
\n
-- Logfile group: %s
\n
--
\n
"
,
row
[
0
]);
fix_for_comment
(
row
[
0
])
)
;
fprintf
(
md_result_file
,
"
\n
CREATE"
);
}
...
...
@@ -4277,7 +4301,8 @@ static int dump_tablespaces(char* ts_where)
first
=
1
;
if
(
first
)
{
print_comment
(
md_result_file
,
0
,
"
\n
--
\n
-- Tablespace: %s
\n
--
\n
"
,
row
[
0
]);
print_comment
(
md_result_file
,
0
,
"
\n
--
\n
-- Tablespace: %s
\n
--
\n
"
,
fix_for_comment
(
row
[
0
]));
fprintf
(
md_result_file
,
"
\n
CREATE"
);
}
else
...
...
@@ -4481,7 +4506,8 @@ static int init_dumping(char *database, int init_func(char*))
char
*
qdatabase
=
quote_name
(
database
,
quoted_database_buf
,
opt_quoted
);
print_comment
(
md_result_file
,
0
,
"
\n
--
\n
-- Current Database: %s
\n
--
\n
"
,
qdatabase
);
"
\n
--
\n
-- Current Database: %s
\n
--
\n
"
,
fix_for_comment
(
qdatabase
));
/* Call the view or table specific function */
init_func
(
qdatabase
);
...
...
@@ -5672,7 +5698,7 @@ static my_bool get_view_structure(char *table, char* db)
print_comment
(
sql_file
,
0
,
"
\n
--
\n
-- Final view structure for view %s
\n
--
\n\n
"
,
result_table
);
fix_for_comment
(
result_table
)
)
;
/* Table might not exist if this view was dumped with --tab. */
fprintf
(
sql_file
,
"/*!50001 DROP TABLE IF EXISTS %s*/;
\n
"
,
opt_quoted_table
);
...
...
client/mysqltest.cc
View file @
bdc809ec
...
...
@@ -3373,10 +3373,6 @@ void do_exec(struct st_command *command)
#endif
#endif
/* exec command is interpreted externally and will not take newlines */
while(replace(&ds_cmd, "\n", 1, " ", 1) == 0)
;
DBUG_PRINT
(
"info"
,
(
"Executing '%s' as '%s'"
,
command
->
first_argument
,
ds_cmd
.
str
));
...
...
cmake/cpack_rpm.cmake
View file @
bdc809ec
...
...
@@ -220,6 +220,9 @@ SETA(CPACK_RPM_test_PACKAGE_PROVIDES
"perl(mtr_io.pl)"
"perl(mtr_match)"
"perl(mtr_misc.pl)"
"perl(mtr_gcov.pl)"
"perl(mtr_gprof.pl)"
"perl(mtr_process.pl)"
"perl(mtr_report)"
"perl(mtr_results)"
"perl(mtr_unique)"
)
...
...
cmake/package_name.cmake
View file @
bdc809ec
...
...
@@ -30,6 +30,10 @@ IF(NOT VERSION)
SET
(
64BIT 1
)
ENDIF
()
IF
(
NOT 64BIT AND CMAKE_SYSTEM_PROCESSOR MATCHES
"^mips64"
)
SET
(
DEFAULT_MACHINE
"mips"
)
ENDIF
()
IF
(
CMAKE_SYSTEM_NAME MATCHES
"Windows"
)
SET
(
NEED_DASH_BETWEEN_PLATFORM_AND_MACHINE 0
)
SET
(
DEFAULT_PLATFORM
"win"
)
...
...
extra/innochecksum.cc
View file @
bdc809ec
...
...
@@ -243,10 +243,9 @@ int main(int argc, char **argv)
time_t
lastt
;
/* last time */
ulint
oldcsum
,
oldcsumfield
,
csum
,
csumfield
,
crc32
,
logseq
,
logseqfield
;
/* ulints for checksum storage */
struct
stat
st
;
/* for stat, if you couldn't guess */
unsigned
long
long
int
size
;
/* size of file (has to be 64 bits) */
ulint
pages
;
/* number of pages in file */
off_t
offset
=
0
;
long
long
offset
=
0
;
int
fd
;
printf
(
"InnoDB offline file checksum utility.
\n
"
);
...
...
@@ -269,6 +268,47 @@ int main(int argc, char **argv)
goto
error
;
}
#ifdef _WIN32
/* Switch off OS file buffering for the file. */
HANDLE
h
=
CreateFile
(
filename
,
GENERIC_READ
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
,
0
,
OPEN_EXISTING
,
FILE_FLAG_NO_BUFFERING
,
0
);
if
(
!
h
)
{
fprintf
(
stderr
,
"Error; cant open file
\n
"
);
goto
error
;
}
if
(
!
GetFileSizeEx
(
h
,
(
LARGE_INTEGER
*
)
&
size
))
{
fprintf
(
stderr
,
"Error; GetFileSize() failed
\n
"
);
goto
error
;
}
fd
=
_open_osfhandle
((
intptr_t
)
h
,
_O_RDONLY
);
if
(
fd
<
0
)
{
fprintf
(
stderr
,
"Error; _open_osfhandle() failed
\n
"
);
goto
error
;
}
f
=
_fdopen
(
fd
,
"rb"
);
if
(
!
f
)
{
fprintf
(
stderr
,
"Error; fdopen() failed
\n
"
);
goto
error
;
}
/*
Disable stdio buffering (FILE_FLAG_NO_BUFFERING requires properly IO buffers
which stdio does not guarantee.
*/
setvbuf
(
f
,
NULL
,
_IONBF
,
0
);
#else
struct
stat
st
;
/* stat the file to get size and page count */
if
(
stat
(
filename
,
&
st
))
{
...
...
@@ -279,6 +319,8 @@ int main(int argc, char **argv)
/* Open the file for reading */
f
=
fopen
(
filename
,
"rb"
);
#endif
if
(
f
==
NULL
)
{
fprintf
(
stderr
,
"Error; %s cannot be opened"
,
filename
);
...
...
@@ -323,7 +365,7 @@ int main(int argc, char **argv)
}
else
if
(
verbose
)
{
printf
(
"file %s = %llu bytes (%lu pages)...
\n
"
,
filename
,
size
,
pages
);
printf
(
"file %s = %llu bytes (%lu pages)...
\n
"
,
filename
,
size
,
(
ulong
)
pages
);
if
(
do_one_page
)
printf
(
"InnoChecksum; checking page %lu
\n
"
,
do_page
);
else
...
...
@@ -348,9 +390,12 @@ int main(int argc, char **argv)
goto
error
;
}
offset
=
(
off_t
)
start_page
*
(
off_t
)
physical_page_size
;
offset
=
(
longlong
)
start_page
*
(
longlong
)
physical_page_size
;
#ifdef _WIN32
if
(
_lseeki64
(
fd
,
offset
,
SEEK_SET
)
!=
offset
)
#else
if
(
lseek
(
fd
,
offset
,
SEEK_SET
)
!=
offset
)
#endif
{
perror
(
"Error; Unable to seek to necessary offset"
);
goto
error
;
...
...
extra/yassl/README
View file @
bdc809ec
...
...
@@ -12,6 +12,24 @@ before calling SSL_new();
*** end Note ***
yaSSL Release notes, version 2.4.2 (9/22/2016)
This release of yaSSL fixes a medium security vulnerability. A fix for
potential AES side channel leaks is included that a local user monitoring
the same CPU core cache could exploit. VM users, hyper-threading users,
and users where potential attackers have access to the CPU cache will need
to update if they utilize AES.
DSA padding fixes for unusual sizes is included as well. Users with DSA
certficiates should update.
yaSSL Release notes, version 2.4.0 (5/20/2016)
This release of yaSSL fixes the OpenSSL compatibility function
SSL_CTX_load_verify_locations() when using the path directory to allow
unlimited path sizes. Minor Windows build fixes are included.
No high level security fixes in this version but we always recommend
updating.
yaSSL Release notes, version 2.3.9b (2/03/2016)
This release of yaSSL fixes the OpenSSL compatibility function
X509_NAME_get_index_by_NID() to use the actual index of the common name
...
...
extra/yassl/certs/dsa-cert.pem
View file @
bdc809ec
-----BEGIN CERTIFICATE-----
MIID
q
zCCA2
u
gAwIBAgIJA
MGqrgDU6Dyh
MAkGByqGSM44BAMwg
Y4
xCzAJBgNVBAYT
MIID
r
zCCA2
+
gAwIBAgIJA
K1zRM7YFcNj
MAkGByqGSM44BAMwg
ZA
xCzAJBgNVBAYT
AlVTMQ8wDQYDVQQIDAZPcmVnb24xETAPBgNVBAcMCFBvcnRsYW5kMRAwDgYDVQQK
DAd3b2xmU1NMMRAwDgYDVQQLDAd0ZXN0aW5nMR
Y
wF
A
YDVQQDDA
1
3d3cu
eWFzc2wu
Y29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tMB4XDTEzMDQyMjIw
M
Dk0NFoXDTE2MDExNzIwMDk0NFowgY4xC
zA
J
BgNVBA
YTAlVTMQ8wDQYDVQQIDAZP
cmVnb24xETAPBgNVBAcMCFBvcnRsYW5kMRAwDgYDVQQKDAd3b2xmU1NMMRAwDgYD
VQQLDAd0ZXN0aW5nMRYwFAYDVQQDDA13d3cueWFzc2wuY29tMR8wHQYJKoZIhvcN
AQkBFhBpbmZvQHdvbGZzc2wuY29tMIIBuDCCASwGByqGSM44BAEwggEfAoGBAL1R
7koy4IrH6sbh6nDEUUPPKgfhxxLCWCVexF2+qzANEr+hC9M002haJXFOfeS9DyoO
WFbL0qMZOuqv+22CaHnoUWl7q3PjJOAI3JH0P54ZyUPuU1909RzgTdIDp5+ikbr7
KYjnltL73FQVMbjTZQKthIpPn3MjYcF+4jp2W2zFAhUAkcntYND6MGf+eYzIJDN2
L7SonHUCgYEAklpxErfqznIZjVvqqHFaq+mgAL5J8QrKVmdhYZh/Y8z4jCjoCA8
o
TDoFKxf7s2ZzgaPKvglaEKiYqLqic9qY78DYJswzQMLFvjsF4sFZ+pYCBdWPQI4N
PgxCiznK6Ce+JH9ikSBvMvG+tevjr2UpawDIHX3+AWYaZBZwKADAaboDgYUAAoGB
A
J3LY89yHyvQ/TsQ6zlYbovjbk/ogndsMqPdNUvL4RuPTgJP/caaDDa0XJ7ak6A7
TJ+QheLNwOXoZPYJC4EGFSDAXpYniGhbWIrVTCGe6lmZDfnx40WXS0kk3m/DHaC0
3ElLAiybxVGxyqoUfbT3Zv1JwftWMuiqHH5uADhdXuXVo1AwTjAdBgNVHQ4EFgQU
IJjk416o4v8qpH9LBtXlR9v8gccwHwYDVR0jBBgwFoAUIJjk416o4v8qpH9LBtXl
R9v8gccwDAYDVR0TBAUwAwEB/zAJBgcqhkjOOAQDAy8AMCwCFCjGKIdOSV12LcTu
k08owGM6YkO1AhQe+K173VuaO/OsDNsxZlKpyH8+1g=
=
DAd3b2xmU1NMMRAwDgYDVQQLDAd0ZXN0aW5nMR
g
wF
g
YDVQQDDA
9
3d3cu
d29sZnNz
bC5jb20xHzAdBgkqhkiG9w0BCQEWEGluZm9Ad29sZnNzbC5jb20wHhcNMTYwOTIy
M
jEyMzA0WhcNMjIwMzE1MjEyMzA0WjCBkDELMAkGA1UEBhMCVVMxD
zA
N
BgNVBA
gM
Bk9yZWdvbjERMA8GA1UEBwwIUG9ydGxhbmQxEDAOBgNVBAoMB3dvbGZTU0wxEDAO
BgNVBAsMB3Rlc3RpbmcxGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqG
SIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCAbgwggEsBgcqhkjOOAQBMIIBHwKB
gQC9Ue5KMuCKx+rG4epwxFFDzyoH4ccSwlglXsRdvqswDRK/oQvTNNNoWiVxTn3k
vQ8qDlhWy9KjGTrqr/ttgmh56FFpe6tz4yTgCNyR9D+eGclD7lNfdPUc4E3SA6ef
opG6+ymI55bS+9xUFTG402UCrYSKT59zI2HBfuI6dltsxQIVAJHJ7WDQ+jBn/nmM
yCQzdi+0qJx1AoGBAJJacRK36s5yGY1b6qhxWqvpoAC+SfEKylZnYWGYf2PM+Iw
o
6AgPKEw6BSsX+7Nmc4Gjyr4JWhComKi6onPamO/A2CbMM0DCxb47BeLBWfqWAgXV
j0CODT4MQos5yugnviR/YpEgbzLxvrXr469lKWsAyB19/gFmGmQWcCgAwGm6A4GF
A
AKBgQCdy2PPch8r0P07EOs5WG6L425P6IJ3bDKj3TVLy+Ebj04CT/3Gmgw2tFye
2pOgO0yfkIXizcDl6GT2CQuBBhUgwF6WJ4hoW1iK1UwhnupZmQ358eNFl0tJJN5v
wx2gtNxJSwIsm8VRscqqFH2092b9ScH7VjLoqhx+bgA4XV7l1aNQME4wHQYDVR0O
BBYEFCCY5ONeqOL/KqR/SwbV5Ufb/IHHMB8GA1UdIwQYMBaAFCCY5ONeqOL/KqR/
SwbV5Ufb/IHHMAwGA1UdEwQFMAMBAf8wCQYHKoZIzjgEAwMvADAsAhQRYSCVN/Ge
agV3mffU3qNZ92fI0QIUPH7Jp+iASI7U1ocaYDc10qXGaGY
=
-----END CERTIFICATE-----
extra/yassl/include/openssl/ssl.h
View file @
bdc809ec
...
...
@@ -34,7 +34,7 @@
#include
"rsa.h"
#define YASSL_VERSION "2.
3.9b
"
#define YASSL_VERSION "2.
4.2
"
#if defined(__cplusplus)
...
...
extra/yassl/src/ssl.cpp
View file @
bdc809ec
...
...
@@ -162,7 +162,7 @@ int read_file(SSL_CTX* ctx, const char* file, int format, CertType type)
TaoCrypt
::
DSA_PrivateKey
dsaKey
;
dsaKey
.
Initialize
(
dsaSource
);
if
(
r
saSource
.
GetError
().
What
())
{
if
(
d
saSource
.
GetError
().
What
())
{
// neither worked
ret
=
SSL_FAILURE
;
}
...
...
@@ -785,40 +785,67 @@ int SSL_CTX_load_verify_locations(SSL_CTX* ctx, const char* file,
WIN32_FIND_DATA
FindFileData
;
HANDLE
hFind
;
char
name
[
MAX_PATH
+
1
];
// directory specification
strncpy
(
name
,
path
,
MAX_PATH
-
3
);
strncat
(
name
,
"
\\
*"
,
3
);
const
int
DELIMITER_SZ
=
2
;
const
int
DELIMITER_STAR_SZ
=
3
;
int
pathSz
=
(
int
)
strlen
(
path
);
int
nameSz
=
pathSz
+
DELIMITER_STAR_SZ
+
1
;
// plus 1 for terminator
char
*
name
=
NEW_YS
char
[
nameSz
];
// directory specification
memset
(
name
,
0
,
nameSz
);
strncpy
(
name
,
path
,
nameSz
-
DELIMITER_STAR_SZ
-
1
);
strncat
(
name
,
"
\\
*"
,
DELIMITER_STAR_SZ
);
hFind
=
FindFirstFile
(
name
,
&
FindFileData
);
if
(
hFind
==
INVALID_HANDLE_VALUE
)
return
SSL_BAD_PATH
;
if
(
hFind
==
INVALID_HANDLE_VALUE
)
{
ysArrayDelete
(
name
);
return
SSL_BAD_PATH
;
}
do
{
if
(
FindFileData
.
dwFileAttributes
!=
FILE_ATTRIBUTE_DIRECTORY
)
{
strncpy
(
name
,
path
,
MAX_PATH
-
2
-
HALF_PATH
);
strncat
(
name
,
"
\\
"
,
2
);
strncat
(
name
,
FindFileData
.
cFileName
,
HALF_PATH
);
if
(
!
(
FindFileData
.
dwFileAttributes
&
FILE_ATTRIBUTE_DIRECTORY
))
{
int
curSz
=
(
int
)
strlen
(
FindFileData
.
cFileName
);
if
(
pathSz
+
curSz
+
DELIMITER_SZ
+
1
>
nameSz
)
{
ysArrayDelete
(
name
);
// plus 1 for terminator
nameSz
=
pathSz
+
curSz
+
DELIMITER_SZ
+
1
;
name
=
NEW_YS
char
[
nameSz
];
}
memset
(
name
,
0
,
nameSz
);
strncpy
(
name
,
path
,
nameSz
-
curSz
-
DELIMITER_SZ
-
1
);
strncat
(
name
,
"
\\
"
,
DELIMITER_SZ
);
strncat
(
name
,
FindFileData
.
cFileName
,
nameSz
-
pathSz
-
DELIMITER_SZ
-
1
);
ret
=
read_file
(
ctx
,
name
,
SSL_FILETYPE_PEM
,
CA
);
}
}
while
(
ret
==
SSL_SUCCESS
&&
FindNextFile
(
hFind
,
&
FindFileData
));
ysArrayDelete
(
name
);
FindClose
(
hFind
);
#else // _WIN32
const
int
MAX_PATH
=
260
;
DIR
*
dir
=
opendir
(
path
);
if
(
!
dir
)
return
SSL_BAD_PATH
;
struct
dirent
*
entry
;
struct
stat
buf
;
char
name
[
MAX_PATH
+
1
];
const
int
DELIMITER_SZ
=
1
;
int
pathSz
=
(
int
)
strlen
(
path
);
int
nameSz
=
pathSz
+
DELIMITER_SZ
+
1
;
//plus 1 for null terminator
char
*
name
=
NEW_YS
char
[
nameSz
];
// directory specification
while
(
ret
==
SSL_SUCCESS
&&
(
entry
=
readdir
(
dir
)))
{
strncpy
(
name
,
path
,
MAX_PATH
-
1
-
HALF_PATH
);
strncat
(
name
,
"/"
,
1
);
strncat
(
name
,
entry
->
d_name
,
HALF_PATH
);
int
curSz
=
(
int
)
strlen
(
entry
->
d_name
);
if
(
pathSz
+
curSz
+
DELIMITER_SZ
+
1
>
nameSz
)
{
ysArrayDelete
(
name
);
nameSz
=
pathSz
+
DELIMITER_SZ
+
curSz
+
1
;
name
=
NEW_YS
char
[
nameSz
];
}
memset
(
name
,
0
,
nameSz
);
strncpy
(
name
,
path
,
nameSz
-
curSz
-
1
);
strncat
(
name
,
"/"
,
DELIMITER_SZ
);
strncat
(
name
,
entry
->
d_name
,
nameSz
-
pathSz
-
DELIMITER_SZ
-
1
);
if
(
stat
(
name
,
&
buf
)
<
0
)
{
ysArrayDelete
(
name
);
closedir
(
dir
);
return
SSL_BAD_STAT
;
}
...
...
@@ -827,6 +854,7 @@ int SSL_CTX_load_verify_locations(SSL_CTX* ctx, const char* file,
ret
=
read_file
(
ctx
,
name
,
SSL_FILETYPE_PEM
,
CA
);
}
ysArrayDelete
(
name
);
closedir
(
dir
);
#endif
...
...
extra/yassl/taocrypt/include/aes.hpp
View file @
bdc809ec
...
...
@@ -60,6 +60,7 @@ private:
static
const
word32
Te
[
5
][
256
];
static
const
word32
Td
[
5
][
256
];
static
const
byte
CTd4
[
256
];
static
const
word32
*
Te0
;
static
const
word32
*
Te1
;
...
...
@@ -80,11 +81,68 @@ private:
void
ProcessAndXorBlock
(
const
byte
*
,
const
byte
*
,
byte
*
)
const
;
word32
PreFetchTe
()
const
;
word32
PreFetchTd
()
const
;
word32
PreFetchCTd4
()
const
;
AES
(
const
AES
&
);
// hide copy
AES
&
operator
=
(
const
AES
&
);
// and assign
};
#if defined(__x86_64__) || defined(_M_X64) || \
(defined(__ILP32__) && (__ILP32__ >= 1))
#define TC_CACHE_LINE_SZ 64
#else
/* default cache line size */
#define TC_CACHE_LINE_SZ 32
#endif
inline
word32
AES
::
PreFetchTe
()
const
{
word32
x
=
0
;
/* 4 tables of 256 entries */
for
(
int
i
=
0
;
i
<
4
;
i
++
)
{
/* each entry is 4 bytes */
for
(
int
j
=
0
;
j
<
256
;
j
+=
TC_CACHE_LINE_SZ
/
4
)
{
x
&=
Te
[
i
][
j
];
}
}
return
x
;
}
inline
word32
AES
::
PreFetchTd
()
const
{
word32
x
=
0
;
/* 4 tables of 256 entries */
for
(
int
i
=
0
;
i
<
4
;
i
++
)
{
/* each entry is 4 bytes */
for
(
int
j
=
0
;
j
<
256
;
j
+=
TC_CACHE_LINE_SZ
/
4
)
{
x
&=
Td
[
i
][
j
];
}
}
return
x
;
}
inline
word32
AES
::
PreFetchCTd4
()
const
{
word32
x
=
0
;
int
i
;
for
(
i
=
0
;
i
<
256
;
i
+=
TC_CACHE_LINE_SZ
)
{
x
&=
CTd4
[
i
];
}
return
x
;
}
typedef
BlockCipher
<
ENCRYPTION
,
AES
,
ECB
>
AES_ECB_Encryption
;
typedef
BlockCipher
<
DECRYPTION
,
AES
,
ECB
>
AES_ECB_Decryption
;
...
...
extra/yassl/taocrypt/include/integer.hpp
View file @
bdc809ec
...
...
@@ -119,6 +119,9 @@ namespace TaoCrypt {
#ifdef _WIN32
#undef max // avoid name clash
#endif
// general MAX
template
<
typename
T
>
inline
const
T
&
max
(
const
T
&
a
,
const
T
&
b
)
...
...
extra/yassl/taocrypt/src/aes.cpp
View file @
bdc809ec
...
...
@@ -109,10 +109,10 @@ void AES::SetKey(const byte* userKey, word32 keylen, CipherDir /*dummy*/)
{
temp
=
rk
[
3
];
rk
[
4
]
=
rk
[
0
]
^
(
Te
4
[
GETBYTE
(
temp
,
2
)]
&
0xff000000
)
^
(
Te
4
[
GETBYTE
(
temp
,
1
)]
&
0x00ff0000
)
^
(
Te
4
[
GETBYTE
(
temp
,
0
)]
&
0x0000ff00
)
^
(
Te
4
[
GETBYTE
(
temp
,
3
)]
&
0x000000ff
)
^
(
Te
2
[
GETBYTE
(
temp
,
2
)]
&
0xff000000
)
^
(
Te
3
[
GETBYTE
(
temp
,
1
)]
&
0x00ff0000
)
^
(
Te
0
[
GETBYTE
(
temp
,
0
)]
&
0x0000ff00
)
^
(
Te
1
[
GETBYTE
(
temp
,
3
)]
&
0x000000ff
)
^
rcon_
[
i
];
rk
[
5
]
=
rk
[
1
]
^
rk
[
4
];
rk
[
6
]
=
rk
[
2
]
^
rk
[
5
];
...
...
@@ -128,10 +128,10 @@ void AES::SetKey(const byte* userKey, word32 keylen, CipherDir /*dummy*/)
{
temp
=
rk
[
5
];
rk
[
6
]
=
rk
[
0
]
^
(
Te
4
[
GETBYTE
(
temp
,
2
)]
&
0xff000000
)
^
(
Te
4
[
GETBYTE
(
temp
,
1
)]
&
0x00ff0000
)
^
(
Te
4
[
GETBYTE
(
temp
,
0
)]
&
0x0000ff00
)
^
(
Te
4
[
GETBYTE
(
temp
,
3
)]
&
0x000000ff
)
^
(
Te
2
[
GETBYTE
(
temp
,
2
)]
&
0xff000000
)
^
(
Te
3
[
GETBYTE
(
temp
,
1
)]
&
0x00ff0000
)
^
(
Te
0
[
GETBYTE
(
temp
,
0
)]
&
0x0000ff00
)
^
(
Te
1
[
GETBYTE
(
temp
,
3
)]
&
0x000000ff
)
^
rcon_
[
i
];
rk
[
7
]
=
rk
[
1
]
^
rk
[
6
];
rk
[
8
]
=
rk
[
2
]
^
rk
[
7
];
...
...
@@ -149,10 +149,10 @@ void AES::SetKey(const byte* userKey, word32 keylen, CipherDir /*dummy*/)
{
temp
=
rk
[
7
];
rk
[
8
]
=
rk
[
0
]
^
(
Te
4
[
GETBYTE
(
temp
,
2
)]
&
0xff000000
)
^
(
Te
4
[
GETBYTE
(
temp
,
1
)]
&
0x00ff0000
)
^
(
Te
4
[
GETBYTE
(
temp
,
0
)]
&
0x0000ff00
)
^
(
Te
4
[
GETBYTE
(
temp
,
3
)]
&
0x000000ff
)
^
(
Te
2
[
GETBYTE
(
temp
,
2
)]
&
0xff000000
)
^
(
Te
3
[
GETBYTE
(
temp
,
1
)]
&
0x00ff0000
)
^
(
Te
0
[
GETBYTE
(
temp
,
0
)]
&
0x0000ff00
)
^
(
Te
1
[
GETBYTE
(
temp
,
3
)]
&
0x000000ff
)
^
rcon_
[
i
];
rk
[
9
]
=
rk
[
1
]
^
rk
[
8
];
rk
[
10
]
=
rk
[
2
]
^
rk
[
9
];
...
...
@@ -161,10 +161,10 @@ void AES::SetKey(const byte* userKey, word32 keylen, CipherDir /*dummy*/)
break
;
temp
=
rk
[
11
];
rk
[
12
]
=
rk
[
4
]
^
(
Te
4
[
GETBYTE
(
temp
,
3
)]
&
0xff000000
)
^
(
Te
4
[
GETBYTE
(
temp
,
2
)]
&
0x00ff0000
)
^
(
Te
4
[
GETBYTE
(
temp
,
1
)]
&
0x0000ff00
)
^
(
Te
4
[
GETBYTE
(
temp
,
0
)]
&
0x000000ff
);
(
Te
2
[
GETBYTE
(
temp
,
3
)]
&
0xff000000
)
^
(
Te
3
[
GETBYTE
(
temp
,
2
)]
&
0x00ff0000
)
^
(
Te
0
[
GETBYTE
(
temp
,
1
)]
&
0x0000ff00
)
^
(
Te
1
[
GETBYTE
(
temp
,
0
)]
&
0x000000ff
);
rk
[
13
]
=
rk
[
5
]
^
rk
[
12
];
rk
[
14
]
=
rk
[
6
]
^
rk
[
13
];
rk
[
15
]
=
rk
[
7
]
^
rk
[
14
];
...
...
@@ -191,25 +191,25 @@ void AES::SetKey(const byte* userKey, word32 keylen, CipherDir /*dummy*/)
for
(
i
=
1
;
i
<
rounds_
;
i
++
)
{
rk
+=
4
;
rk
[
0
]
=
Td0
[
Te
4
[
GETBYTE
(
rk
[
0
],
3
)]
&
0xff
]
^
Td1
[
Te
4
[
GETBYTE
(
rk
[
0
],
2
)]
&
0xff
]
^
Td2
[
Te
4
[
GETBYTE
(
rk
[
0
],
1
)]
&
0xff
]
^
Td3
[
Te
4
[
GETBYTE
(
rk
[
0
],
0
)]
&
0xff
];
Td0
[
Te
1
[
GETBYTE
(
rk
[
0
],
3
)]
&
0xff
]
^
Td1
[
Te
1
[
GETBYTE
(
rk
[
0
],
2
)]
&
0xff
]
^
Td2
[
Te
1
[
GETBYTE
(
rk
[
0
],
1
)]
&
0xff
]
^
Td3
[
Te
1
[
GETBYTE
(
rk
[
0
],
0
)]
&
0xff
];
rk
[
1
]
=
Td0
[
Te
4
[
GETBYTE
(
rk
[
1
],
3
)]
&
0xff
]
^
Td1
[
Te
4
[
GETBYTE
(
rk
[
1
],
2
)]
&
0xff
]
^
Td2
[
Te
4
[
GETBYTE
(
rk
[
1
],
1
)]
&
0xff
]
^
Td3
[
Te
4
[
GETBYTE
(
rk
[
1
],
0
)]
&
0xff
];
Td0
[
Te
1
[
GETBYTE
(
rk
[
1
],
3
)]
&
0xff
]
^
Td1
[
Te
1
[
GETBYTE
(
rk
[
1
],
2
)]
&
0xff
]
^
Td2
[
Te
1
[
GETBYTE
(
rk
[
1
],
1
)]
&
0xff
]
^
Td3
[
Te
1
[
GETBYTE
(
rk
[
1
],
0
)]
&
0xff
];
rk
[
2
]
=
Td0
[
Te
4
[
GETBYTE
(
rk
[
2
],
3
)]
&
0xff
]
^
Td1
[
Te
4
[
GETBYTE
(
rk
[
2
],
2
)]
&
0xff
]
^
Td2
[
Te
4
[
GETBYTE
(
rk
[
2
],
1
)]
&
0xff
]
^
Td3
[
Te
4
[
GETBYTE
(
rk
[
2
],
0
)]
&
0xff
];
Td0
[
Te
1
[
GETBYTE
(
rk
[
2
],
3
)]
&
0xff
]
^
Td1
[
Te
1
[
GETBYTE
(
rk
[
2
],
2
)]
&
0xff
]
^
Td2
[
Te
1
[
GETBYTE
(
rk
[
2
],
1
)]
&
0xff
]
^
Td3
[
Te
1
[
GETBYTE
(
rk
[
2
],
0
)]
&
0xff
];
rk
[
3
]
=
Td0
[
Te
4
[
GETBYTE
(
rk
[
3
],
3
)]
&
0xff
]
^
Td1
[
Te
4
[
GETBYTE
(
rk
[
3
],
2
)]
&
0xff
]
^
Td2
[
Te
4
[
GETBYTE
(
rk
[
3
],
1
)]
&
0xff
]
^
Td3
[
Te
4
[
GETBYTE
(
rk
[
3
],
0
)]
&
0xff
];
Td0
[
Te
1
[
GETBYTE
(
rk
[
3
],
3
)]
&
0xff
]
^
Td1
[
Te
1
[
GETBYTE
(
rk
[
3
],
2
)]
&
0xff
]
^
Td2
[
Te
1
[
GETBYTE
(
rk
[
3
],
1
)]
&
0xff
]
^
Td3
[
Te
1
[
GETBYTE
(
rk
[
3
],
0
)]
&
0xff
];
}
}
}
...
...
@@ -244,6 +244,7 @@ void AES::encrypt(const byte* inBlock, const byte* xorBlock,
s2
^=
rk
[
2
];
s3
^=
rk
[
3
];
s0
|=
PreFetchTe
();
/*
* Nr - 1 full rounds:
*/
...
...
@@ -312,28 +313,28 @@ void AES::encrypt(const byte* inBlock, const byte* xorBlock,
*/
s0
=
(
Te
4
[
GETBYTE
(
t0
,
3
)]
&
0xff000000
)
^
(
Te
4
[
GETBYTE
(
t1
,
2
)]
&
0x00ff0000
)
^
(
Te
4
[
GETBYTE
(
t2
,
1
)]
&
0x0000ff00
)
^
(
Te
4
[
GETBYTE
(
t3
,
0
)]
&
0x000000ff
)
^
(
Te
2
[
GETBYTE
(
t0
,
3
)]
&
0xff000000
)
^
(
Te
3
[
GETBYTE
(
t1
,
2
)]
&
0x00ff0000
)
^
(
Te
0
[
GETBYTE
(
t2
,
1
)]
&
0x0000ff00
)
^
(
Te
1
[
GETBYTE
(
t3
,
0
)]
&
0x000000ff
)
^
rk
[
0
];
s1
=
(
Te
4
[
GETBYTE
(
t1
,
3
)]
&
0xff000000
)
^
(
Te
4
[
GETBYTE
(
t2
,
2
)]
&
0x00ff0000
)
^
(
Te
4
[
GETBYTE
(
t3
,
1
)]
&
0x0000ff00
)
^
(
Te
4
[
GETBYTE
(
t0
,
0
)]
&
0x000000ff
)
^
(
Te
2
[
GETBYTE
(
t1
,
3
)]
&
0xff000000
)
^
(
Te
3
[
GETBYTE
(
t2
,
2
)]
&
0x00ff0000
)
^
(
Te
0
[
GETBYTE
(
t3
,
1
)]
&
0x0000ff00
)
^
(
Te
1
[
GETBYTE
(
t0
,
0
)]
&
0x000000ff
)
^
rk
[
1
];
s2
=
(
Te
4
[
GETBYTE
(
t2
,
3
)]
&
0xff000000
)
^
(
Te
4
[
GETBYTE
(
t3
,
2
)]
&
0x00ff0000
)
^
(
Te
4
[
GETBYTE
(
t0
,
1
)]
&
0x0000ff00
)
^
(
Te
4
[
GETBYTE
(
t1
,
0
)]
&
0x000000ff
)
^
(
Te
2
[
GETBYTE
(
t2
,
3
)]
&
0xff000000
)
^
(
Te
3
[
GETBYTE
(
t3
,
2
)]
&
0x00ff0000
)
^
(
Te
0
[
GETBYTE
(
t0
,
1
)]
&
0x0000ff00
)
^
(
Te
1
[
GETBYTE
(
t1
,
0
)]
&
0x000000ff
)
^
rk
[
2
];
s3
=
(
Te
4
[
GETBYTE
(
t3
,
3
)]
&
0xff000000
)
^
(
Te
4
[
GETBYTE
(
t0
,
2
)]
&
0x00ff0000
)
^
(
Te
4
[
GETBYTE
(
t1
,
1
)]
&
0x0000ff00
)
^
(
Te
4
[
GETBYTE
(
t2
,
0
)]
&
0x000000ff
)
^
(
Te
2
[
GETBYTE
(
t3
,
3
)]
&
0xff000000
)
^
(
Te
3
[
GETBYTE
(
t0
,
2
)]
&
0x00ff0000
)
^
(
Te
0
[
GETBYTE
(
t1
,
1
)]
&
0x0000ff00
)
^
(
Te
1
[
GETBYTE
(
t2
,
0
)]
&
0x000000ff
)
^
rk
[
3
];
...
...
@@ -358,6 +359,8 @@ void AES::decrypt(const byte* inBlock, const byte* xorBlock,
s2
^=
rk
[
2
];
s3
^=
rk
[
3
];
s0
|=
PreFetchTd
();
/*
* Nr - 1 full rounds:
*/
...
...
@@ -423,29 +426,32 @@ void AES::decrypt(const byte* inBlock, const byte* xorBlock,
* apply last round and
* map cipher state to byte array block:
*/
t0
|=
PreFetchCTd4
();
s0
=
(
Td4
[
GETBYTE
(
t0
,
3
)]
&
0xff000000
)
^
(
Td4
[
GETBYTE
(
t3
,
2
)]
&
0x00ff0000
)
^
(
Td4
[
GETBYTE
(
t2
,
1
)]
&
0x0000ff00
)
^
(
Td4
[
GETBYTE
(
t1
,
0
)]
&
0x000000ff
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t0
,
3
)]
<<
24
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t3
,
2
)]
<<
16
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t2
,
1
)]
<<
8
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t1
,
0
)])
^
rk
[
0
];
s1
=
(
Td4
[
GETBYTE
(
t1
,
3
)]
&
0xff000000
)
^
(
Td4
[
GETBYTE
(
t0
,
2
)]
&
0x00ff0000
)
^
(
Td4
[
GETBYTE
(
t3
,
1
)]
&
0x0000ff00
)
^
(
Td4
[
GETBYTE
(
t2
,
0
)]
&
0x000000ff
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t1
,
3
)]
<<
24
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t0
,
2
)]
<<
16
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t3
,
1
)]
<<
8
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t2
,
0
)])
^
rk
[
1
];
s2
=
(
Td4
[
GETBYTE
(
t2
,
3
)]
&
0xff000000
)
^
(
Td4
[
GETBYTE
(
t1
,
2
)]
&
0x00ff0000
)
^
(
Td4
[
GETBYTE
(
t0
,
1
)]
&
0x0000ff00
)
^
(
Td4
[
GETBYTE
(
t3
,
0
)]
&
0x000000ff
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t2
,
3
)]
<<
24
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t1
,
2
)]
<<
16
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t0
,
1
)]
<<
8
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t3
,
0
)])
^
rk
[
2
];
s3
=
(
Td4
[
GETBYTE
(
t3
,
3
)]
&
0xff000000
)
^
(
Td4
[
GETBYTE
(
t2
,
2
)]
&
0x00ff0000
)
^
(
Td4
[
GETBYTE
(
t1
,
1
)]
&
0x0000ff00
)
^
(
Td4
[
GETBYTE
(
t0
,
0
)]
&
0x000000ff
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t3
,
3
)]
<<
24
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t2
,
2
)]
<<
16
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t1
,
1
)]
<<
8
)
^
(
(
word32
)
C
Td4
[
GETBYTE
(
t0
,
0
)])
^
rk
[
3
];
gpBlock
::
Put
(
xorBlock
,
outBlock
)(
s0
)(
s1
)(
s2
)(
s3
);
...
...
@@ -1826,18 +1832,52 @@ const word32 AES::Td[5][256] = {
}
};
const
byte
AES
::
CTd4
[
256
]
=
{
0x52U
,
0x09U
,
0x6aU
,
0xd5U
,
0x30U
,
0x36U
,
0xa5U
,
0x38U
,
0xbfU
,
0x40U
,
0xa3U
,
0x9eU
,
0x81U
,
0xf3U
,
0xd7U
,
0xfbU
,
0x7cU
,
0xe3U
,
0x39U
,
0x82U
,
0x9bU
,
0x2fU
,
0xffU
,
0x87U
,
0x34U
,
0x8eU
,
0x43U
,
0x44U
,
0xc4U
,
0xdeU
,
0xe9U
,
0xcbU
,
0x54U
,
0x7bU
,
0x94U
,
0x32U
,
0xa6U
,
0xc2U
,
0x23U
,
0x3dU
,
0xeeU
,
0x4cU
,
0x95U
,
0x0bU
,
0x42U
,
0xfaU
,
0xc3U
,
0x4eU
,
0x08U
,
0x2eU
,
0xa1U
,
0x66U
,
0x28U
,
0xd9U
,
0x24U
,
0xb2U
,
0x76U
,
0x5bU
,
0xa2U
,
0x49U
,
0x6dU
,
0x8bU
,
0xd1U
,
0x25U
,
0x72U
,
0xf8U
,
0xf6U
,
0x64U
,
0x86U
,
0x68U
,
0x98U
,
0x16U
,
0xd4U
,
0xa4U
,
0x5cU
,
0xccU
,
0x5dU
,
0x65U
,
0xb6U
,
0x92U
,
0x6cU
,
0x70U
,
0x48U
,
0x50U
,
0xfdU
,
0xedU
,
0xb9U
,
0xdaU
,
0x5eU
,
0x15U
,
0x46U
,
0x57U
,
0xa7U
,
0x8dU
,
0x9dU
,
0x84U
,
0x90U
,
0xd8U
,
0xabU
,
0x00U
,
0x8cU
,
0xbcU
,
0xd3U
,
0x0aU
,
0xf7U
,
0xe4U
,
0x58U
,
0x05U
,
0xb8U
,
0xb3U
,
0x45U
,
0x06U
,
0xd0U
,
0x2cU
,
0x1eU
,
0x8fU
,
0xcaU
,
0x3fU
,
0x0fU
,
0x02U
,
0xc1U
,
0xafU
,
0xbdU
,
0x03U
,
0x01U
,
0x13U
,
0x8aU
,
0x6bU
,
0x3aU
,
0x91U
,
0x11U
,
0x41U
,
0x4fU
,
0x67U
,
0xdcU
,
0xeaU
,
0x97U
,
0xf2U
,
0xcfU
,
0xceU
,
0xf0U
,
0xb4U
,
0xe6U
,
0x73U
,
0x96U
,
0xacU
,
0x74U
,
0x22U
,
0xe7U
,
0xadU
,
0x35U
,
0x85U
,
0xe2U
,
0xf9U
,
0x37U
,
0xe8U
,
0x1cU
,
0x75U
,
0xdfU
,
0x6eU
,
0x47U
,
0xf1U
,
0x1aU
,
0x71U
,
0x1dU
,
0x29U
,
0xc5U
,
0x89U
,
0x6fU
,
0xb7U
,
0x62U
,
0x0eU
,
0xaaU
,
0x18U
,
0xbeU
,
0x1bU
,
0xfcU
,
0x56U
,
0x3eU
,
0x4bU
,
0xc6U
,
0xd2U
,
0x79U
,
0x20U
,
0x9aU
,
0xdbU
,
0xc0U
,
0xfeU
,
0x78U
,
0xcdU
,
0x5aU
,
0xf4U
,
0x1fU
,
0xddU
,
0xa8U
,
0x33U
,
0x88U
,
0x07U
,
0xc7U
,
0x31U
,
0xb1U
,
0x12U
,
0x10U
,
0x59U
,
0x27U
,
0x80U
,
0xecU
,
0x5fU
,
0x60U
,
0x51U
,
0x7fU
,
0xa9U
,
0x19U
,
0xb5U
,
0x4aU
,
0x0dU
,
0x2dU
,
0xe5U
,
0x7aU
,
0x9fU
,
0x93U
,
0xc9U
,
0x9cU
,
0xefU
,
0xa0U
,
0xe0U
,
0x3bU
,
0x4dU
,
0xaeU
,
0x2aU
,
0xf5U
,
0xb0U
,
0xc8U
,
0xebU
,
0xbbU
,
0x3cU
,
0x83U
,
0x53U
,
0x99U
,
0x61U
,
0x17U
,
0x2bU
,
0x04U
,
0x7eU
,
0xbaU
,
0x77U
,
0xd6U
,
0x26U
,
0xe1U
,
0x69U
,
0x14U
,
0x63U
,
0x55U
,
0x21U
,
0x0cU
,
0x7dU
,
};
const
word32
*
AES
::
Te0
=
AES
::
Te
[
0
];
const
word32
*
AES
::
Te1
=
AES
::
Te
[
1
];
const
word32
*
AES
::
Te2
=
AES
::
Te
[
2
];
const
word32
*
AES
::
Te3
=
AES
::
Te
[
3
];
const
word32
*
AES
::
Te4
=
AES
::
Te
[
4
];
const
word32
*
AES
::
Td0
=
AES
::
Td
[
0
];
const
word32
*
AES
::
Td1
=
AES
::
Td
[
1
];
const
word32
*
AES
::
Td2
=
AES
::
Td
[
2
];
const
word32
*
AES
::
Td3
=
AES
::
Td
[
3
];
const
word32
*
AES
::
Td4
=
AES
::
Td
[
4
];
...
...
extra/yassl/taocrypt/src/asn.cpp
View file @
bdc809ec
...
...
@@ -1219,17 +1219,17 @@ word32 DecodeDSA_Signature(byte* decoded, const byte* encoded, word32 sz)
}
word32
rLen
=
GetLength
(
source
);
if
(
rLen
!=
20
)
{
if
(
rLen
==
21
)
{
// zero at front, eat
while
(
rLen
>
20
&&
source
.
remaining
()
>
0
)
{
// zero
's
at front, eat
source
.
next
();
--
rLen
;
}
else
if
(
rLen
==
19
)
{
// add zero to front so 20 bytes
if
(
rLen
<
20
)
{
// add zero's to front so 20 bytes
word32
tmpLen
=
rLen
;
while
(
tmpLen
<
20
)
{
decoded
[
0
]
=
0
;
decoded
++
;
tmpLen
++
;
}
else
{
source
.
SetError
(
DSA_SZ_E
);
return
0
;
}
}
memcpy
(
decoded
,
source
.
get_buffer
()
+
source
.
get_index
(),
rLen
);
...
...
@@ -1242,17 +1242,17 @@ word32 DecodeDSA_Signature(byte* decoded, const byte* encoded, word32 sz)
}
word32
sLen
=
GetLength
(
source
);
if
(
sLen
!=
20
)
{
if
(
sLen
==
21
)
{
source
.
next
();
// zero at front, eat
while
(
sLen
>
20
&&
source
.
remaining
()
>
0
)
{
source
.
next
();
// zero
's
at front, eat
--
sLen
;
}
else
if
(
sLen
==
19
)
{
decoded
[
rLen
]
=
0
;
// add zero to front so 20 bytes
if
(
sLen
<
20
)
{
// add zero's to front so 20 bytes
word32
tmpLen
=
sLen
;
while
(
tmpLen
<
20
)
{
decoded
[
rLen
]
=
0
;
decoded
++
;
tmpLen
++
;
}
else
{
source
.
SetError
(
DSA_SZ_E
);
return
0
;
}
}
memcpy
(
decoded
+
rLen
,
source
.
get_buffer
()
+
source
.
get_index
(),
sLen
);
...
...
extra/yassl/taocrypt/src/dsa.cpp
View file @
bdc809ec
...
...
@@ -172,6 +172,7 @@ word32 DSA_Signer::Sign(const byte* sha_digest, byte* sig,
const
Integer
&
q
=
key_
.
GetSubGroupOrder
();
const
Integer
&
g
=
key_
.
GetSubGroupGenerator
();
const
Integer
&
x
=
key_
.
GetPrivatePart
();
byte
*
tmpPtr
=
sig
;
// initial signature output
Integer
k
(
rng
,
1
,
q
-
1
);
...
...
@@ -187,22 +188,23 @@ word32 DSA_Signer::Sign(const byte* sha_digest, byte* sig,
return
(
word32
)
-
1
;
int
rSz
=
r_
.
ByteCount
();
int
tmpSz
=
rSz
;
if
(
rSz
==
19
)
{
sig
[
0
]
=
0
;
sig
++
;
while
(
tmpSz
++
<
SHA
::
DIGEST_SIZE
)
{
*
sig
++
=
0
;
}
r_
.
Encode
(
sig
,
rSz
);
sig
=
tmpPtr
+
SHA
::
DIGEST_SIZE
;
// advance sig output to s
int
sSz
=
s_
.
ByteCount
();
tmpSz
=
sSz
;
if
(
sSz
==
19
)
{
sig
[
rSz
]
=
0
;
sig
++
;
while
(
tmpSz
++
<
SHA
::
DIGEST_SIZE
)
{
*
sig
++
=
0
;
}
s_
.
Encode
(
sig
+
rSz
,
sSz
);
s_
.
Encode
(
sig
,
sSz
);
return
40
;
}
...
...
extra/yassl/taocrypt/src/integer.cpp
View file @
bdc809ec
...
...
@@ -193,8 +193,9 @@ DWord() {}
"a"
(
a
),
"rm"
(
b
)
:
"cc"
);
#elif defined(__mips64)
__asm__
(
"dmultu %2,%3"
:
"=d"
(
r
.
halfs_
.
high
),
"=l"
(
r
.
halfs_
.
low
)
:
"r"
(
a
),
"r"
(
b
));
unsigned
__int128
t
=
(
unsigned
__int128
)
a
*
b
;
r
.
halfs_
.
high
=
t
>>
64
;
r
.
halfs_
.
low
=
(
word
)
t
;
#elif defined(_M_IX86)
// for testing
...
...
extra/yassl/taocrypt/test/test.cpp
View file @
bdc809ec
...
...
@@ -1281,6 +1281,9 @@ int dsa_test()
if
(
!
verifier
.
Verify
(
digest
,
decoded
))
return
-
90
;
if
(
!
verifier
.
Verify
(
digest
,
signature
))
return
-
91
;
return
0
;
}
...
...
Prev
1
2
3
4
5
…
16
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment