* SHA-256 process buffer */
| 246 | * SHA-256 process buffer |
| 247 | */ |
| 248 | void sha256_update( sha256_context *ctx, const unsigned char *input, |
| 249 | size_t ilen ) |
| 250 | { |
| 251 | size_t fill; |
| 252 | uint32_t left; |
| 253 | |
| 254 | if( ilen == 0 ) |
| 255 | return; |
| 256 | |
| 257 | left = ctx->total[0] & 0x3F; |
| 258 | fill = 64 - left; |
| 259 | |
| 260 | ctx->total[0] += (uint32_t) ilen; |
| 261 | ctx->total[0] &= 0xFFFFFFFF; |
| 262 | |
| 263 | if( ctx->total[0] < (uint32_t) ilen ) |
| 264 | ctx->total[1]++; |
| 265 | |
| 266 | if( left && ilen >= fill ) |
| 267 | { |
| 268 | memcpy( (void *) (ctx->buffer + left), input, fill ); |
| 269 | sha256_process( ctx, ctx->buffer ); |
| 270 | input += fill; |
| 271 | ilen -= fill; |
| 272 | left = 0; |
| 273 | } |
| 274 | |
| 275 | while( ilen >= 64 ) |
| 276 | { |
| 277 | sha256_process( ctx, input ); |
| 278 | input += 64; |
| 279 | ilen -= 64; |
| 280 | } |
| 281 | |
| 282 | if( ilen > 0 ) |
| 283 | memcpy( (void *) (ctx->buffer + left), input, ilen ); |
| 284 | } |
| 285 | |
| 286 | static const unsigned char sha256_padding[64] = |
| 287 | { |
no test coverage detected