Skip to content

Commit 13de832

Browse files
committed
fix MSVC build
1 parent faa4b0f commit 13de832

27 files changed

+488
-476
lines changed

.clang-format

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
Standard: c++20
3+
Language: Cpp
4+
BasedOnStyle: LLVM
5+
ColumnLimit: 200
6+
IndentWidth: 4
7+
TabWidth: 4
8+
AccessModifierOffset: -4
9+
InsertBraces: true
10+
Cpp11BracedListStyle: true
11+
AllowShortBlocksOnASingleLine: Empty
12+
AllowShortFunctionsOnASingleLine: Empty
13+
PointerAlignment: Left
14+
DerivePointerAlignment: false
15+
IncludeBlocks: Preserve
16+
AlwaysBreakTemplateDeclarations: Yes
17+
AlignAfterOpenBracket: BlockIndent
18+
AlignEscapedNewlines: Left
19+
PackConstructorInitializers: CurrentLine
20+
AllowAllArgumentsOnNextLine: true
21+
BinPackArguments: true

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,4 @@ dkms.conf
5353

5454
.vscode/
5555
build/
56+
cmake-build/

CMakeLists.txt

100644100755
+17-1
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,26 @@ project(zcrypto VERSION 0.1.0)
44
include(CTest)
55
enable_testing()
66

7-
add_compile_options(-Wall -Wextra -Wuninitialized -Wsign-conversion)
87
set(CMAKE_C_STANDARD 17)
98
set(CMAKE_CXX_STANDARD 17)
109

10+
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
11+
12+
# add_compile_options(/Wall /WX)
13+
add_compile_options(/bigobj /utf-8)
14+
add_definitions(/D_WIN32_WINNT=0x0A00) # Windows 10
15+
add_definitions(/D__ZCRYPO_BYTE_ORDER__=1)
16+
17+
else ()
18+
19+
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
20+
add_compile_options (-fdiagnostics-color=always)
21+
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
22+
add_compile_options (-fcolor-diagnostics)
23+
endif ()
24+
25+
endif()
26+
1127
include_directories(include)
1228
add_subdirectory(src)
1329
add_subdirectory(tests)

include/zcrypto/aes.h

100644100755
+21-25
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,28 @@ extern "C" {
88
#include <stdint.h>
99
#include <string.h>
1010

11-
#define AES_FUNC_DEF_NO_IV(KEY, MODE, EN) void aes_ ## KEY ## _ ## MODE ## _ ## EN (const uint8_t *, size_t, const uint8_t*, uint8_t*)
12-
#define AES_FUNC_DEF_HAS_IV(KEY, MODE, EN) void aes_ ## KEY ## _ ## MODE ## _ ## EN (const uint8_t *, const uint8_t*, size_t, const uint8_t*, uint8_t*)
13-
14-
#define AES_FUNC_DEF(KEY) \
15-
AES_FUNC_DEF_NO_IV(KEY, ecb, encrypt); \
16-
AES_FUNC_DEF_NO_IV(KEY, ecb, decrypt); \
17-
\
18-
AES_FUNC_DEF_HAS_IV(KEY, cbc, encrypt); \
19-
AES_FUNC_DEF_HAS_IV(KEY, cbc, decrypt); \
20-
\
21-
AES_FUNC_DEF_HAS_IV(KEY, cfb, encrypt); \
22-
AES_FUNC_DEF_HAS_IV(KEY, cfb, decrypt); \
23-
\
24-
AES_FUNC_DEF_HAS_IV(KEY, ofb, encrypt); \
25-
AES_FUNC_DEF_HAS_IV(KEY, ofb, decrypt);
26-
11+
#define AES_FUNC_DEF_NO_IV(KEY, MODE, EN) void aes_##KEY##_##MODE##_##EN(const uint8_t*, size_t, const uint8_t*, uint8_t*)
12+
#define AES_FUNC_DEF_HAS_IV(KEY, MODE, EN) void aes_##KEY##_##MODE##_##EN(const uint8_t*, const uint8_t*, size_t, const uint8_t*, uint8_t*)
13+
14+
#define AES_FUNC_DEF(KEY) \
15+
AES_FUNC_DEF_NO_IV(KEY, ecb, encrypt); \
16+
AES_FUNC_DEF_NO_IV(KEY, ecb, decrypt); \
17+
\
18+
AES_FUNC_DEF_HAS_IV(KEY, cbc, encrypt); \
19+
AES_FUNC_DEF_HAS_IV(KEY, cbc, decrypt); \
20+
\
21+
AES_FUNC_DEF_HAS_IV(KEY, cfb, encrypt); \
22+
AES_FUNC_DEF_HAS_IV(KEY, cfb, decrypt); \
23+
\
24+
AES_FUNC_DEF_HAS_IV(KEY, ofb, encrypt); \
25+
AES_FUNC_DEF_HAS_IV(KEY, ofb, decrypt);
2726

2827
AES_FUNC_DEF(128)
2928

3029
AES_FUNC_DEF(192)
3130

3231
AES_FUNC_DEF(256)
3332

34-
35-
3633
#define AES_ECB_MODE 1
3734
#define AES_CBC_MODE 2
3835
#define AES_CFB_MODE 3
@@ -45,12 +42,11 @@ typedef struct {
4542
uint8_t mode;
4643
} aes_ctx_t;
4744

48-
void aes_close(aes_ctx_t *ctx);
49-
int aes_init(aes_ctx_t *ctx, uint8_t mode, size_t keylen, const uint8_t *key, const uint8_t iv[16]);
50-
int aes_encrypt(aes_ctx_t *ctx, size_t len, const uint8_t *plain, uint8_t *cipher);
51-
int aes_decrypt(aes_ctx_t *ctx, size_t len, const uint8_t *cipher, uint8_t *plain);
45+
void aes_close(aes_ctx_t* ctx);
46+
int aes_init(aes_ctx_t* ctx, uint8_t mode, size_t keylen, const uint8_t* key, const uint8_t iv[16]);
47+
int aes_encrypt(aes_ctx_t* ctx, size_t len, const uint8_t* plain, uint8_t* cipher);
48+
int aes_decrypt(aes_ctx_t* ctx, size_t len, const uint8_t* cipher, uint8_t* plain);
5249

53-
54-
# ifdef __cplusplus
50+
#ifdef __cplusplus
5551
}
56-
# endif
52+
#endif

include/zcrypto/base64.h

100644100755
+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ extern "C" {
66

77
#include <string.h>
88

9-
size_t base64_encode(const void *bin, size_t len, void *text);
10-
size_t base64_decode(const void *text, size_t len, void *bin);
9+
size_t base64_encode(const void* bin, size_t len, void* text);
10+
size_t base64_decode(const void* text, size_t len, void* bin);
1111

1212
#ifdef __cplusplus
1313
}

include/zcrypto/hash.h

100644100755
+12-12
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,24 @@ extern "C" {
88
#include <stdint.h>
99
#include <string.h>
1010

11-
#define _hash_store_len(EE, LEN, DATA) \
12-
do { \
13-
LEN *= 8; \
14-
_store_##EE##_u64(LEN, DATA); \
11+
#define _hash_store_len(EE, LEN, DATA) \
12+
do { \
13+
LEN *= 8; \
14+
_z_store_##EE##_u64(LEN, DATA); \
1515
} while (0)
1616

17-
#define _hash_digest(EE, HASH, LEN, DATA) \
18-
do { \
19-
for (size_t i = 0; i < LEN; ++i) { \
20-
_store_##EE##_u32(HASH[i], DATA + i * 4); \
21-
} \
17+
#define _hash_digest(EE, HASH, LEN, DATA) \
18+
do { \
19+
for (size_t i = 0; i < LEN; ++i) { \
20+
_z_store_##EE##_u32(HASH[i], DATA + i * 4); \
21+
} \
2222
} while (0)
2323

2424
#define HASH_BLK_SIZE 64
2525

26-
typedef void (*hash_blk_update_func)(uint32_t *, const uint8_t *);
27-
void _hash_update(hash_blk_update_func blk_update, uint32_t *hash, uint8_t *blk, const uint8_t *data, size_t len, uint64_t *total);
28-
void _hash_done(hash_blk_update_func blk_update, uint32_t *hash, const uint8_t *data, uint64_t total, bool le);
26+
typedef void (*hash_blk_update_func)(uint32_t*, const uint8_t*);
27+
void _hash_update(hash_blk_update_func blk_update, uint32_t* hash, uint8_t* blk, const uint8_t* data, size_t len, uint64_t* total);
28+
void _hash_done(hash_blk_update_func blk_update, uint32_t* hash, const uint8_t* data, uint64_t total, bool le);
2929

3030
#ifdef __cplusplus
3131
}

include/zcrypto/hashlib.h

100644100755
+8-8
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
extern "C" {
55
#endif
66

7+
#include <stddef.h>
78
#include <stdint.h>
89

9-
#define HASH_ALG_SM3 1
10-
#define HASH_ALG_MD5 2
11-
#define HASH_ALG_SHA1 3
10+
#define HASH_ALG_SM3 1
11+
#define HASH_ALG_MD5 2
12+
#define HASH_ALG_SHA1 3
1213
#define HASH_ALG_SHA256 4
1314

1415
typedef struct {
@@ -19,11 +20,10 @@ typedef struct {
1920
int alg;
2021
} hash_ctx_t;
2122

22-
void hash_init(hash_ctx_t *ctx, int alg);
23-
void hash_update(hash_ctx_t *ctx, const uint8_t *data, size_t len);
24-
void hash_digest(hash_ctx_t *ctx, uint8_t *data);
25-
void hash_hexdigest(hash_ctx_t *ctx, uint8_t *data);
26-
23+
void hash_init(hash_ctx_t* ctx, int alg);
24+
void hash_update(hash_ctx_t* ctx, const uint8_t* data, size_t len);
25+
void hash_digest(hash_ctx_t* ctx, uint8_t* data);
26+
void hash_hexdigest(hash_ctx_t* ctx, uint8_t* data);
2727

2828
#ifdef __cplusplus
2929
}

include/zcrypto/md5.h

100644100755
+6-6
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ typedef struct {
1313
uint8_t blk[64];
1414
} md5_ctx_t;
1515

16-
void md5_init(md5_ctx_t *ctx);
17-
void md5_update(md5_ctx_t *ctx, const uint8_t *data, size_t len);
18-
void md5_digest(md5_ctx_t *ctx, uint8_t *data);
19-
void md5_hexdigest(md5_ctx_t *ctx, uint8_t *data);
16+
void md5_init(md5_ctx_t* ctx);
17+
void md5_update(md5_ctx_t* ctx, const uint8_t* data, size_t len);
18+
void md5_digest(md5_ctx_t* ctx, uint8_t* data);
19+
void md5_hexdigest(md5_ctx_t* ctx, uint8_t* data);
2020

2121
void md5_hash_init(uint32_t hash[4]);
2222
void md5_blk_update(uint32_t hash[4], const uint8_t blk[64]);
2323

24-
# ifdef __cplusplus
24+
#ifdef __cplusplus
2525
}
26-
# endif
26+
#endif

include/zcrypto/oaep.h

100644100755
+4-4
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
extern "C" {
55
#endif
66

7-
#include <stdlib.h>
87
#include "rsa.h"
8+
#include <stdlib.h>
99

1010
// see https://tools.ietf.org/html/rfc8017
1111
// using SHA256
@@ -14,8 +14,8 @@ extern "C" {
1414
#define HASH_BYTES 32
1515
#define MSG_MAX_LEN (RSA_BYTES - HASH_BYTES * 2 - 2)
1616

17-
void rsa_pub_oaep_encrypt(const rsa_ctx_t *ctx, const uint8_t *msg, size_t len, const char *label, uint8_t cipher[RSA_BYTES]);
17+
void rsa_pub_oaep_encrypt(const rsa_ctx_t* ctx, const uint8_t* msg, size_t len, const char* label, uint8_t cipher[RSA_BYTES]);
1818

19-
# ifdef __cplusplus
19+
#ifdef __cplusplus
2020
}
21-
# endif
21+
#endif

include/zcrypto/rsa.h

100644100755
+4-4
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ typedef struct {
2222
uint32_t E;
2323
} rsa_ctx_t;
2424

25-
void rsa_pub_naive(const rsa_ctx_t *ctx, const uint32_t data[RSA_SIZE], uint32_t output[RSA_SIZE]);
25+
void rsa_pub_naive(const rsa_ctx_t* ctx, const uint32_t data[RSA_SIZE], uint32_t output[RSA_SIZE]);
2626

2727
#if ENABLE_RSA_PRIVATE_KEY
28-
void rsa_pri_naive(const rsa_ctx_t *ctx, const uint32_t data[RSA_SIZE], uint32_t output[RSA_SIZE]);
28+
void rsa_pri_naive(const rsa_ctx_t* ctx, const uint32_t data[RSA_SIZE], uint32_t output[RSA_SIZE]);
2929
#endif
3030

31-
# ifdef __cplusplus
31+
#ifdef __cplusplus
3232
}
33-
# endif
33+
#endif

include/zcrypto/sha1.h

100644100755
+6-6
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ typedef struct {
1313
uint8_t blk[64];
1414
} sha1_ctx_t;
1515

16-
void sha1_init(sha1_ctx_t *ctx);
17-
void sha1_update(sha1_ctx_t *ctx, const uint8_t *data, size_t len);
18-
void sha1_digest(sha1_ctx_t *ctx, uint8_t *data);
19-
void sha1_hexdigest(sha1_ctx_t *ctx, uint8_t *data);
16+
void sha1_init(sha1_ctx_t* ctx);
17+
void sha1_update(sha1_ctx_t* ctx, const uint8_t* data, size_t len);
18+
void sha1_digest(sha1_ctx_t* ctx, uint8_t* data);
19+
void sha1_hexdigest(sha1_ctx_t* ctx, uint8_t* data);
2020

2121
void sha1_hash_init(uint32_t hash[5]);
2222
void sha1_blk_update(uint32_t hash[5], const uint8_t blk[64]);
2323

24-
# ifdef __cplusplus
24+
#ifdef __cplusplus
2525
}
26-
# endif
26+
#endif

include/zcrypto/sha256.h

100644100755
+6-6
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ typedef struct {
1313
uint8_t blk[64];
1414
} sha256_ctx_t;
1515

16-
void sha256_init(sha256_ctx_t *ctx);
17-
void sha256_update(sha256_ctx_t *ctx, const uint8_t *data, size_t len);
18-
void sha256_digest(sha256_ctx_t *ctx, uint8_t *data);
19-
void sha256_hexdigest(sha256_ctx_t *ctx, uint8_t *data);
16+
void sha256_init(sha256_ctx_t* ctx);
17+
void sha256_update(sha256_ctx_t* ctx, const uint8_t* data, size_t len);
18+
void sha256_digest(sha256_ctx_t* ctx, uint8_t* data);
19+
void sha256_hexdigest(sha256_ctx_t* ctx, uint8_t* data);
2020

2121
void sha256_hash_init(uint32_t hash[8]);
2222
void sha256_blk_update(uint32_t hash[8], const uint8_t blk[64]);
2323

24-
# ifdef __cplusplus
24+
#ifdef __cplusplus
2525
}
26-
# endif
26+
#endif

include/zcrypto/sm3.h

100644100755
+6-6
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ typedef struct {
1313
uint8_t blk[64];
1414
} sm3_ctx_t;
1515

16-
void sm3_init(sm3_ctx_t *ctx);
17-
void sm3_update(sm3_ctx_t *ctx, const uint8_t *data, size_t len);
18-
void sm3_digest(sm3_ctx_t *ctx, uint8_t *data);
19-
void sm3_hexdigest(sm3_ctx_t *ctx, uint8_t *data);
16+
void sm3_init(sm3_ctx_t* ctx);
17+
void sm3_update(sm3_ctx_t* ctx, const uint8_t* data, size_t len);
18+
void sm3_digest(sm3_ctx_t* ctx, uint8_t* data);
19+
void sm3_hexdigest(sm3_ctx_t* ctx, uint8_t* data);
2020

2121
void sm3_hash_init(uint32_t hash[8]);
2222
void sm3_blk_update(uint32_t hash[8], const uint8_t blk[64]);
2323

24-
# ifdef __cplusplus
24+
#ifdef __cplusplus
2525
}
26-
# endif
26+
#endif

include/zcrypto/sm4.h

100644100755
+14-15
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,17 @@ extern "C" {
88
#include <stdint.h>
99
#include <string.h>
1010

11-
void sm4_ecb_encrypt(const uint8_t key[16], size_t len, const uint8_t *plain, uint8_t *cipher);
12-
void sm4_ecb_decrypt(const uint8_t key[16], size_t len, const uint8_t *cipher, uint8_t *plain);
11+
void sm4_ecb_encrypt(const uint8_t key[16], size_t len, const uint8_t* plain, uint8_t* cipher);
12+
void sm4_ecb_decrypt(const uint8_t key[16], size_t len, const uint8_t* cipher, uint8_t* plain);
1313

14-
void sm4_cbc_encrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t *plain, uint8_t *cipher);
15-
void sm4_cbc_decrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t *cipher, uint8_t *plain);
14+
void sm4_cbc_encrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t* plain, uint8_t* cipher);
15+
void sm4_cbc_decrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t* cipher, uint8_t* plain);
1616

17-
void sm4_cfb_encrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t *plain, uint8_t *cipher);
18-
void sm4_cfb_decrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t *cipher, uint8_t *plain);
19-
20-
void sm4_ofb_encrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t *plain, uint8_t *cipher);
21-
void sm4_ofb_decrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t *cipher, uint8_t *plain);
17+
void sm4_cfb_encrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t* plain, uint8_t* cipher);
18+
void sm4_cfb_decrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t* cipher, uint8_t* plain);
2219

20+
void sm4_ofb_encrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t* plain, uint8_t* cipher);
21+
void sm4_ofb_decrypt(const uint8_t key[16], const uint8_t iv[16], size_t len, const uint8_t* cipher, uint8_t* plain);
2322

2423
#define SM4_MIN_MODE SM4_ECB_MODE
2524
#define SM4_ECB_MODE 1
@@ -34,11 +33,11 @@ typedef struct {
3433
uint8_t mode;
3534
} sm4_ctx_t;
3635

37-
void sm4_close(sm4_ctx_t *ctx);
38-
int sm4_init(sm4_ctx_t *ctx, uint8_t mode, const uint8_t key[16], const uint8_t iv[16]);
39-
int sm4_encrypt(sm4_ctx_t *ctx, size_t len, const uint8_t *plain, uint8_t *cipher);
40-
int sm4_decrypt(sm4_ctx_t *ctx, size_t len, const uint8_t *cipher, uint8_t *plain);
36+
void sm4_close(sm4_ctx_t* ctx);
37+
int sm4_init(sm4_ctx_t* ctx, uint8_t mode, const uint8_t key[16], const uint8_t iv[16]);
38+
int sm4_encrypt(sm4_ctx_t* ctx, size_t len, const uint8_t* plain, uint8_t* cipher);
39+
int sm4_decrypt(sm4_ctx_t* ctx, size_t len, const uint8_t* cipher, uint8_t* plain);
4140

42-
# ifdef __cplusplus
41+
#ifdef __cplusplus
4342
}
44-
# endif
43+
#endif

0 commit comments

Comments
 (0)