Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
BIND
Commits
472ce617
Commit
472ce617
authored
Feb 24, 2006
by
Mark Andrews
Browse files
1988. [bug] Remove a bus error from the SHA256/SHA512 support.
[RT #15878]
parent
eae67738
Changes
3
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
472ce617
1988. [bug] Remove a bus error from the SHA256/SHA512 support.
[RT #15878]
1987. [func] DS/DLV SHA256 digest algorithm support. [RT #15608]
1986. [func] Report when a zone is removed. [RT #15849]
...
...
lib/isc/include/isc/sha2.h
View file @
472ce617
...
...
@@ -14,7 +14,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: sha2.h,v 1.
5
2006/0
1/31 23:01:23
marka Exp $ */
/* $Id: sha2.h,v 1.
6
2006/0
2/24 00:03:15
marka Exp $ */
/* $FreeBSD: src/sys/crypto/sha2/sha2.h,v 1.1.2.1 2001/07/03 11:01:36 ume Exp $ */
/* $KAME: sha2.h,v 1.3 2001/03/12 08:27:48 itojun Exp $ */
...
...
@@ -79,12 +79,18 @@ ISC_LANG_BEGINDECLS
/*** SHA-256/384/512 Context Structures *******************************/
/*
* Keep buffer immediately after bitcount to preserve alignment.
*/
typedef
struct
{
isc_uint32_t
state
[
8
];
isc_uint64_t
bitcount
;
isc_uint8_t
buffer
[
ISC_SHA256_BLOCK_LENGTH
];
}
isc_sha256_t
;
/*
* Keep buffer immediately after bitcount to preserve alignment.
*/
typedef
struct
{
isc_uint64_t
state
[
8
];
isc_uint64_t
bitcount
[
2
];
...
...
lib/isc/sha2.c
View file @
472ce617
...
...
@@ -14,7 +14,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: sha2.c,v 1.
7
2006/0
1/31 23:01:23
marka Exp $ */
/* $Id: sha2.c,v 1.
8
2006/0
2/24 00:03:15
marka Exp $ */
/* $FreeBSD: src/sys/crypto/sha2/sha2.c,v 1.2.2.2 2002/03/05 08:36:47 ume Exp $ */
/* $KAME: sha2.c,v 1.8 2001/11/08 01:07:52 itojun Exp $ */
...
...
@@ -592,7 +592,8 @@ isc_sha256_update(isc_sha256_t *context, const isc_uint8_t *data, size_t len) {
context
->
bitcount
+=
freespace
<<
3
;
len
-=
freespace
;
data
+=
freespace
;
isc_sha256_transform
(
context
,
(
isc_uint32_t
*
)
context
->
buffer
);
isc_sha256_transform
(
context
,
(
isc_uint32_t
*
)
context
->
buffer
);
}
else
{
/* The buffer is not yet full */
memcpy
(
&
context
->
buffer
[
usedspace
],
data
,
len
);
...
...
@@ -604,7 +605,8 @@ isc_sha256_update(isc_sha256_t *context, const isc_uint8_t *data, size_t len) {
}
while
(
len
>=
ISC_SHA256_BLOCK_LENGTH
)
{
/* Process as many complete blocks as we can */
isc_sha256_transform
(
context
,
(
const
isc_uint32_t
*
)
data
);
memcpy
(
context
->
buffer
,
data
,
ISC_SHA256_BLOCK_LENGTH
);
isc_sha256_transform
(
context
,
(
isc_uint32_t
*
)
context
->
buffer
);
context
->
bitcount
+=
ISC_SHA256_BLOCK_LENGTH
<<
3
;
len
-=
ISC_SHA256_BLOCK_LENGTH
;
data
+=
ISC_SHA256_BLOCK_LENGTH
;
...
...
@@ -648,7 +650,8 @@ isc_sha256_final(isc_uint8_t digest[], isc_sha256_t *context) {
usedspace
);
}
/* Do second-to-last transform: */
isc_sha256_transform
(
context
,
(
isc_uint32_t
*
)
context
->
buffer
);
isc_sha256_transform
(
context
,
(
isc_uint32_t
*
)
context
->
buffer
);
/* And set-up for the last transform: */
memset
(
context
->
buffer
,
0
,
...
...
@@ -926,7 +929,8 @@ void isc_sha512_update(isc_sha512_t *context, const isc_uint8_t *data, size_t le
ADDINC128
(
context
->
bitcount
,
freespace
<<
3
);
len
-=
freespace
;
data
+=
freespace
;
isc_sha512_transform
(
context
,
(
isc_uint64_t
*
)
context
->
buffer
);
isc_sha512_transform
(
context
,
(
isc_uint64_t
*
)
context
->
buffer
);
}
else
{
/* The buffer is not yet full */
memcpy
(
&
context
->
buffer
[
usedspace
],
data
,
len
);
...
...
@@ -938,7 +942,8 @@ void isc_sha512_update(isc_sha512_t *context, const isc_uint8_t *data, size_t le
}
while
(
len
>=
ISC_SHA512_BLOCK_LENGTH
)
{
/* Process as many complete blocks as we can */
isc_sha512_transform
(
context
,
(
const
isc_uint64_t
*
)
data
);
memcpy
(
context
->
buffer
,
data
,
ISC_SHA512_BLOCK_LENGTH
);
isc_sha512_transform
(
context
,
(
isc_uint64_t
*
)
context
->
buffer
);
ADDINC128
(
context
->
bitcount
,
ISC_SHA512_BLOCK_LENGTH
<<
3
);
len
-=
ISC_SHA512_BLOCK_LENGTH
;
data
+=
ISC_SHA512_BLOCK_LENGTH
;
...
...
@@ -975,7 +980,8 @@ void isc_sha512_last(isc_sha512_t *context) {
ISC_SHA512_BLOCK_LENGTH
-
usedspace
);
}
/* Do second-to-last transform: */
isc_sha512_transform
(
context
,
(
isc_uint64_t
*
)
context
->
buffer
);
isc_sha512_transform
(
context
,
(
isc_uint64_t
*
)
context
->
buffer
);
/* And set-up for the last transform: */
memset
(
context
->
buffer
,
0
,
ISC_SHA512_BLOCK_LENGTH
-
2
);
...
...
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