From 858f8f8833a3cf639a8111a770917d554d3c0653 Mon Sep 17 00:00:00 2001 From: Zhi Guan Date: Mon, 1 Aug 2022 15:59:23 +0800 Subject: [PATCH] Add ZUC demo --- demos/zuc/Makefile | 8 ++++++++ demos/zuc/zuc_demo.c | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 demos/zuc/Makefile create mode 100644 demos/zuc/zuc_demo.c diff --git a/demos/zuc/Makefile b/demos/zuc/Makefile new file mode 100644 index 00000000..18e178f8 --- /dev/null +++ b/demos/zuc/Makefile @@ -0,0 +1,8 @@ +all: + cc zuc_demo.c -lgmssl -o zuc_encrypt_demo + cc zuc_demo.c -lgmssl -o zuc_decrypt_demo + +clean: + rm -fr zuc_encrypt_demo + rm -fr zuc_decrypt_demo + diff --git a/demos/zuc/zuc_demo.c b/demos/zuc/zuc_demo.c new file mode 100644 index 00000000..8b483035 --- /dev/null +++ b/demos/zuc/zuc_demo.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include + + +int main(void) +{ + ZUC_CTX zuc_ctx; + unsigned char key[16] = { + 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38, + 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38, + }; + unsigned char iv[16] = { + 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38, + 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38, + }; + unsigned char inbuf[1024]; + unsigned char outbuf[1024 + 32]; + ssize_t inlen; + size_t outlen; + + if (zuc_encrypt_init(&zuc_ctx, key, iv) != 1) { + fprintf(stderr, "%s %d: error\n", __FILE__, __LINE__); + return 1; + } + while ((inlen = fread(inbuf, 1, sizeof(inbuf), stdin)) > 0) { + if (zuc_encrypt_update(&zuc_ctx, inbuf, inlen, outbuf, &outlen) != 1) { + fprintf(stderr, "%s %d: error\n", __FILE__, __LINE__); + return 1; + } + fwrite(outbuf, 1, outlen, stdout); + } + if (zuc_encrypt_finish(&zuc_ctx, outbuf, &outlen) != 1) { + fprintf(stderr, "%s %d: error\n", __FILE__, __LINE__); + return 1; + } + fwrite(outbuf, 1, outlen, stdout); + + return 0; +}