blob: 63bc6fbbb9466c2a4d17cab1a7cbba888daea17f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/* ISC license. */
#include <sys/types.h>
#include <skalibs/bytestr.h>
#include <skalibs/sha512.h>
#include "sha512-internal.h"
void sha512_update (SHA512Schedule *ctx, char const *buf, size_t len)
{
register unsigned int pad = ctx->len & 0x7fU ;
ctx->len += len ;
if (pad && len >= 128 - pad)
{
byte_copy((char *)ctx->buf + pad, 128 - pad, buf) ;
buf += 128 - pad ; len -= 128 - pad ; pad = 0 ;
sha512_transform(ctx, ctx->buf) ;
}
while (len >= 128)
{
sha512_transform(ctx, (unsigned char const *)buf) ;
buf += 128 ; len -= 128 ;
}
byte_copy((char *)ctx->buf + pad, len, buf) ;
}
|