OpenCoverage

e_sm4.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/evp/e_sm4.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.-
3 * Copyright 2017 Ribose Inc. All Rights Reserved.-
4 * Ported from Ribose contributions from Botan.-
5 *-
6 * Licensed under the OpenSSL license (the "License"). You may not use-
7 * this file except in compliance with the License. You can obtain a copy-
8 * in the file LICENSE in the source distribution or at-
9 * https://www.openssl.org/source/license.html-
10 */-
11-
12#include "internal/cryptlib.h"-
13#ifndef OPENSSL_NO_SM4-
14# include <openssl/evp.h>-
15# include <openssl/modes.h>-
16# include "internal/sm4.h"-
17# include "internal/evp_int.h"-
18-
19typedef struct {-
20 SM4_KEY ks;-
21} EVP_SM4_KEY;-
22-
23static int sm4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,-
24 const unsigned char *iv, int enc)-
25{-
26 SM4_set_key(key, EVP_CIPHER_CTX_get_cipher_data(ctx));-
27 return 1;
executed 152 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
152
28}-
29-
30static void sm4_cbc_encrypt(const unsigned char *in, unsigned char *out,-
31 size_t len, const SM4_KEY *key,-
32 unsigned char *ivec, const int enc)-
33{-
34 if (enc)
encDescription
TRUEevaluated 96 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 74 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
74-96
35 CRYPTO_cbc128_encrypt(in, out, len, key, ivec,
executed 96 times by 1 test: CRYPTO_cbc128_encrypt(in, out, len, key, ivec, (block128_f)SM4_encrypt);
Executed by:
  • libcrypto.so.1.1
96
36 (block128_f)SM4_encrypt);
executed 96 times by 1 test: CRYPTO_cbc128_encrypt(in, out, len, key, ivec, (block128_f)SM4_encrypt);
Executed by:
  • libcrypto.so.1.1
96
37 else-
38 CRYPTO_cbc128_decrypt(in, out, len, key, ivec,
executed 74 times by 1 test: CRYPTO_cbc128_decrypt(in, out, len, key, ivec, (block128_f)SM4_decrypt);
Executed by:
  • libcrypto.so.1.1
74
39 (block128_f)SM4_decrypt);
executed 74 times by 1 test: CRYPTO_cbc128_decrypt(in, out, len, key, ivec, (block128_f)SM4_decrypt);
Executed by:
  • libcrypto.so.1.1
74
40}-
41-
42static void sm4_cfb128_encrypt(const unsigned char *in, unsigned char *out,-
43 size_t length, const SM4_KEY *key,-
44 unsigned char *ivec, int *num, const int enc)-
45{-
46 CRYPTO_cfb128_encrypt(in, out, length, key, ivec, num, enc,-
47 (block128_f)SM4_encrypt);-
48}
executed 118 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
118
49-
50static void sm4_ecb_encrypt(const unsigned char *in, unsigned char *out,-
51 const SM4_KEY *key, const int enc)-
52{-
53 if (enc)
encDescription
TRUEevaluated 405 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 405 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
405
54 SM4_encrypt(in, out, key);
executed 405 times by 1 test: SM4_encrypt(in, out, key);
Executed by:
  • libcrypto.so.1.1
405
55 else-
56 SM4_decrypt(in, out, key);
executed 405 times by 1 test: SM4_decrypt(in, out, key);
Executed by:
  • libcrypto.so.1.1
405
57}-
58-
59static void sm4_ofb128_encrypt(const unsigned char *in, unsigned char *out,-
60 size_t length, const SM4_KEY *key,-
61 unsigned char *ivec, int *num)-
62{-
63 CRYPTO_ofb128_encrypt(in, out, length, key, ivec, num,-
64 (block128_f)SM4_encrypt);-
65}
executed 118 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
118
66-
67IMPLEMENT_BLOCK_CIPHER(sm4, ks, sm4, EVP_SM4_KEY, NID_sm4,
never executed: end of block
executed 170 times by 1 test: sm4_cbc_encrypt(in, out, (long)inl, &((EVP_SM4_KEY *)EVP_CIPHER_CTX_get_cipher_data(ctx))->ks, EVP_CIPHER_CTX_iv_noconst(ctx), EVP_CIPHER_CTX_encrypting(ctx));
Executed by:
  • libcrypto.so.1.1
executed 170 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
never executed: chunk >>= 3;
executed 118 times by 1 test: chunk = inl;
Executed by:
  • libcrypto.so.1.1
executed 118 times by 1 test: chunk = inl;
Executed by:
  • libcrypto.so.1.1
executed 118 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
executed 118 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
never executed: return 1;
executed 810 times by 1 test: sm4_ecb_encrypt(in + i, out + i, &((EVP_SM4_KEY *)EVP_CIPHER_CTX_get_cipher_data(ctx))->ks, EVP_CIPHER_CTX_encrypting(ctx));
Executed by:
  • libcrypto.so.1.1
executed 155 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
never executed: end of block
executed 118 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
executed 118 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
executed 1962 times by 1 test: return &sm4_cbc;
Executed by:
  • libcrypto.so.1.1
executed 1962 times by 1 test: return &sm4_cfb128;
Executed by:
  • libcrypto.so.1.1
executed 1962 times by 1 test: return &sm4_ofb;
Executed by:
  • libcrypto.so.1.1
executed 1962 times by 1 test: return &sm4_ecb;
Executed by:
  • libcrypto.so.1.1
inlDescription
TRUEevaluated 170 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
128 == 1Description
TRUEnever evaluated
FALSEevaluated 118 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
inl < chunkDescription
TRUEevaluated 118 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
inl < chunkDescription
TRUEevaluated 118 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
inl < blDescription
TRUEnever evaluated
FALSEevaluated 155 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
inlDescription
TRUEevaluated 118 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
inl>=((size_t)...of(long)*8-2))Description
TRUEnever evaluated
FALSEevaluated 170 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
inl>=((size_t)...of(long)*8-2))Description
TRUEnever evaluated
FALSEevaluated 118 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
i <= inlDescription
TRUEevaluated 810 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 155 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
inlDescription
TRUEevaluated 118 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 118 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
inl >= chunkDescription
TRUEevaluated 118 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-1962
68 16, 16, 16, 128, EVP_CIPH_FLAG_DEFAULT_ASN1,-
69 sm4_init_key, 0, 0, 0, 0)-
70-
71static int sm4_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,-
72 const unsigned char *in, size_t len)-
73{-
74 unsigned int num = EVP_CIPHER_CTX_num(ctx);-
75 EVP_SM4_KEY *dat = EVP_C_DATA(EVP_SM4_KEY, ctx);-
76-
77 CRYPTO_ctr128_encrypt(in, out, len, &dat->ks,-
78 EVP_CIPHER_CTX_iv_noconst(ctx),-
79 EVP_CIPHER_CTX_buf_noconst(ctx), &num,-
80 (block128_f)SM4_encrypt);-
81 EVP_CIPHER_CTX_set_num(ctx, num);-
82 return 1;
executed 118 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
118
83}-
84-
85static const EVP_CIPHER sm4_ctr_mode = {-
86 NID_sm4_ctr, 1, 16, 16,-
87 EVP_CIPH_CTR_MODE,-
88 sm4_init_key,-
89 sm4_ctr_cipher,-
90 NULL,-
91 sizeof(EVP_SM4_KEY),-
92 NULL, NULL, NULL, NULL-
93};-
94-
95const EVP_CIPHER *EVP_sm4_ctr(void)-
96{-
97 return &sm4_ctr_mode;
executed 1962 times by 1 test: return &sm4_ctr_mode;
Executed by:
  • libcrypto.so.1.1
1962
98}-
99-
100#endif-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2