aboutsummaryrefslogtreecommitdiff
path: root/gost_grasshopper_cipher.c
diff options
context:
space:
mode:
authorVitaly Chikunov <vt@altlinux.org>2018-07-20 04:52:40 +0300
committerVitaly Chikunov <vt@altlinux.org>2018-07-20 04:52:40 +0300
commit0ee4f8fc839278672e47213549bfb152ad3d2654 (patch)
tree252bc810409c732623f0641e82e907fc13a8c13f /gost_grasshopper_cipher.c
parent4c6fcee148d708f035edaa43e7f26785c15fa7a5 (diff)
parentbca47af46027b1b84c23af1c84aef1bf901778f8 (diff)
downloadgost-engine-0ee4f8fc839278672e47213549bfb152ad3d2654.zip
gost-engine-0ee4f8fc839278672e47213549bfb152ad3d2654.tar.gz
gost-engine-0ee4f8fc839278672e47213549bfb152ad3d2654.tar.bz2
Merge branch 'magma_impl' into openssl_1_0_2_alt
Diffstat (limited to 'gost_grasshopper_cipher.c')
-rw-r--r--gost_grasshopper_cipher.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/gost_grasshopper_cipher.c b/gost_grasshopper_cipher.c
index 2cce251..da68057 100644
--- a/gost_grasshopper_cipher.c
+++ b/gost_grasshopper_cipher.c
@@ -17,6 +17,7 @@ extern "C" {
#include <openssl/err.h>
#include <string.h>
+#include "gost_lcl.h"
#include "e_gost_err.h"
enum GRASSHOPPER_CIPHER_TYPE {
@@ -279,11 +280,10 @@ int gost_grasshopper_cipher_do_cbc(EVP_CIPHER_CTX* ctx, unsigned char* out,
return 1;
}
-/* increment counter (128-bit int) by 1 */
-static void ctr128_inc(unsigned char *counter)
+void inc_counter(unsigned char* counter, size_t counter_bytes)
{
- unsigned int n = 16;
unsigned char c;
+ unsigned int n = counter_bytes;
do {
--n;
@@ -294,6 +294,12 @@ static void ctr128_inc(unsigned char *counter)
} while (n);
}
+/* increment counter (128-bit int) by 1 */
+static void ctr128_inc(unsigned char *counter)
+{
+ inc_counter(counter, 16);
+}
+
int gost_grasshopper_cipher_do_ctr(EVP_CIPHER_CTX* ctx, unsigned char* out,
const unsigned char* in, size_t inl) {
gost_grasshopper_cipher_ctx_ctr* c = (gost_grasshopper_cipher_ctx_ctr*) EVP_CIPHER_CTX_get_cipher_data(ctx);
@@ -541,7 +547,7 @@ int gost_grasshopper_set_asn1_parameters(EVP_CIPHER_CTX* ctx, ASN1_TYPE* params)
if (!os || !ASN1_OCTET_STRING_set(os, buf, len)) {
OPENSSL_free(buf);
- GOSTerr(GOST_F_GOST89_SET_ASN1_PARAMETERS, ERR_R_MALLOC_FAILURE);
+ GOSTerr(GOST_F_GOST_GRASSHOPPER_SET_ASN1_PARAMETERS, ERR_R_MALLOC_FAILURE);
return 0;
}
OPENSSL_free(buf);
@@ -564,13 +570,13 @@ int gost_grasshopper_cipher_ctl(EVP_CIPHER_CTX* ctx, int type, int arg, void* pt
switch (type) {
case EVP_CTRL_RAND_KEY: {
if (RAND_bytes((unsigned char*) ptr, EVP_CIPHER_CTX_key_length(ctx)) <= 0) {
- GOSTerr(GOST_F_GOST_CIPHER_CTL, GOST_R_RNG_ERROR);
+ GOSTerr(GOST_F_GOST_GRASSHOPPER_CIPHER_CTL, GOST_R_RNG_ERROR);
return -1;
}
break;
}
default:
- GOSTerr(GOST_F_GOST_CIPHER_CTL, GOST_R_UNSUPPORTED_CIPHER_CTL_COMMAND);
+ GOSTerr(GOST_F_GOST_GRASSHOPPER_CIPHER_CTL, GOST_R_UNSUPPORTED_CIPHER_CTL_COMMAND);
return -1;
}
return 1;