diff options
-rw-r--r-- | src/lib/libcrypto/gost/streebog.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/lib/libcrypto/gost/streebog.c b/src/lib/libcrypto/gost/streebog.c index 902472bd9e..61bce0e32c 100644 --- a/src/lib/libcrypto/gost/streebog.c +++ b/src/lib/libcrypto/gost/streebog.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: streebog.c,v 1.5 2015/09/10 15:56:25 jsing Exp $ */ | 1 | /* $OpenBSD: streebog.c,v 1.6 2019/05/09 22:54:28 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> | 3 | * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> |
4 | * Copyright (c) 2005-2006 Cryptocom LTD | 4 | * Copyright (c) 2005-2006 Cryptocom LTD |
@@ -1240,6 +1240,7 @@ static void | |||
1240 | streebog_single_block(STREEBOG_CTX *ctx, const unsigned char *in, size_t num) | 1240 | streebog_single_block(STREEBOG_CTX *ctx, const unsigned char *in, size_t num) |
1241 | { | 1241 | { |
1242 | STREEBOG_LONG64 M[8], l; | 1242 | STREEBOG_LONG64 M[8], l; |
1243 | STREEBOG_LONG64 CF; | ||
1243 | int i; | 1244 | int i; |
1244 | 1245 | ||
1245 | for (i = 0; i < 8; i++) | 1246 | for (i = 0; i < 8; i++) |
@@ -1258,12 +1259,13 @@ streebog_single_block(STREEBOG_CTX *ctx, const unsigned char *in, size_t num) | |||
1258 | } | 1259 | } |
1259 | } | 1260 | } |
1260 | 1261 | ||
1262 | CF = 0; | ||
1261 | ctx->Sigma[0] += M[0]; | 1263 | ctx->Sigma[0] += M[0]; |
1262 | for (i = 1; i < 8; i++) | 1264 | for (i = 1; i < 8; i++) { |
1263 | if (ctx->Sigma[i-1] < M[i-1]) | 1265 | if (ctx->Sigma[i-1] != M[i-1]) |
1264 | ctx->Sigma[i] += M[i] + 1; | 1266 | CF = (ctx->Sigma[i-1] < M[i-1]); |
1265 | else | 1267 | ctx->Sigma[i] += M[i] + CF; |
1266 | ctx->Sigma[i] += M[i]; | 1268 | } |
1267 | } | 1269 | } |
1268 | 1270 | ||
1269 | 1271 | ||