123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #include <stdio.h>
- #include<string.h>
- #include "CMBSMDLL.h"
- #include "utils.h"
- static int SM3hash()
- {
- printf("version: %s\n", CMBSMGetVersion());
- CMBSMSetLog("/opt/log/");
- unsigned char msg[9000] = "C3A5200002005F48454C4C4F5F0000449C000000000000000000000000000000";
- unsigned char msgbcd[9000] = { 0 };
- int msglen = Aschex_2_bcdhex(msg, strlen((char*)msg), msgbcd);
- unsigned char outmsg[65] = { 0 };
- unsigned char outmsgbcd[33] = { 0 };
- printf("to CMBSM3Digest, msglen: %d, sizeof(long):%d\n", msglen, sizeof(long));
- printfHEX(msgbcd, msglen);
- int ret = CMBSM3Digest(msgbcd, msglen, outmsgbcd);
- if (ret != 0) {
- printf("CMBSM3Digest ERROR(正常案例,应该成功),ret[%d]\n", ret);
- return -1;
- } else {
- printf("CMBSM3Digest SUCC(正常案例,应该成功!!)\n");
- Bcdhex_2_aschex(outmsgbcd, 32, outmsg);
- printf("SM3:%s\n", outmsg);
- return 0;
- }
- }
- void SM3hash_ParaErr()
- {
- unsigned char msg[9000] = "";
- unsigned char msgbcd[9000] = { 0 };
- int msglen = Aschex_2_bcdhex(msg, strlen((char*)msg), msgbcd);
- unsigned char outmsg[65] = { 0 };
- unsigned char outmsgbcd[33] = { 0 };
- int ret = CMBSM3Digest(NULL, msglen, outmsgbcd);
- if (ret != 0) {
- printf("CMBSM3Digest ERROR(参数不正确,msg指针为空,-10400, -20103) ret[%d]\n", ret);
- } else {
- printf("CMBSM3Digest SUCC(msg参数不正确,应该报错!!) ret[%d]\n", ret);
- }
- ret = CMBSM3Digest(msgbcd, 0, outmsgbcd);
- if (ret != 0) {
- printf("CMBSM3Digest ERROR(参数不正确,msg长度为0,-10415,-20601) ret[%d]\n", ret);
- } else {
- printf("CMBSM3Digest SUCC(msg长度为0,应该报错!!) ret[%d]\n", ret);
- }
- ret = CMBSM3Digest(msgbcd, -1, outmsgbcd);
- if (ret != 0) {
- printf("CMBSM3Digest ERROR(参数不正确,msg长度为-1,-10415,-20601) ret[%d]\n", ret);
- } else {
- printf("CMBSM3Digest SUCC(msg长度为-1,应该报错!!) ret[%d]\n", ret);
- }
- ret = CMBSM3Digest(msgbcd, msglen, NULL);
- if (ret != 0) {
- printf("CMBSM3Digest ERROR(参数不正确,outsmg指针为空,-10400,-20103) ret[%d]\n", ret);
- } else {
- printf("CMBSM3Digest SUCC(outsmg指针为空,应该报错!!) ret[%d]\n", ret);
- }
- }
- void SM3hmac()
- {
- unsigned char key[1024] = "4A65463855397748464F4D66733259384A65463855397748464F4D66733259384A65463855397748464F4D66733259384A65463855397748464F4D6673325938";
- unsigned char msg[128] = "4A65463855397748464F4D6673325939";
- unsigned char msgbcd[9000] = { 0 };
- unsigned char keybcd[9000] = { 0 };
- int msglen = Aschex_2_bcdhex(msg, strlen((char*)msg), msgbcd);
- Aschex_2_bcdhex(key, strlen((char*)key), keybcd);
- unsigned char outmsg[65] = { 0 };
- unsigned char outmsgbcd[33] = { 0 };
- int ret = CMBSM3HMAC(keybcd, msgbcd, msglen, outmsgbcd);
- if (ret != 0) {
- printf("CMBSM3Digest ERROR(正常案例,应该成功),ret[%d]\n", ret);
- } else {
- printf("CMBSM3HMAC SUCC(正常案例,应该成功!!)\n");
- Bcdhex_2_aschex(outmsgbcd, 32, outmsg);
- printf("SM3HMAC:%s\n", outmsg);
- }
- }
- void SM3hmac_ParaErr()
- {
- unsigned char key[1024] = "4A65463855397748464F4D66733259384A65463855397748464F4D66733259384A65463855397748464F4D66733259384A65463855397748464F4D6673325938";
- unsigned char msg[128] = "4A65463855397748464F4D6673325939";
- unsigned char msgbcd[9000] = { 0 };
- unsigned char keybcd[9000] = { 0 };
- int msglen = Aschex_2_bcdhex(msg, strlen((char*)msg), msgbcd);
- Aschex_2_bcdhex(key, strlen((char*)key), keybcd);
- unsigned char outmsg[65] = { 0 };
- unsigned char outmsgbcd[33] = { 0 };
- int ret = CMBSM3HMAC(NULL, msg, msglen, outmsgbcd);
- if (ret != 0) {
- printf("CMBSM3HMAC ERROR(参数不正确,key指针为空,-10400, -20103) ret[%d]\n", ret);
- } else {
- printf("CMBSM3HMAC SUCC(key指针为空,应该报错!!) ret[%d]\n", ret);
- }
- ret = CMBSM3HMAC(key, NULL, msglen, outmsgbcd);
- if (ret != 0) {
- printf("CMBSM3HMAC ERROR(参数不正确,msg指针为空,-10400, -20103) ret[%d]\n", ret);
- } else {
- printf("CMBSM3HMAC SUCC(msg参数不正确,应该报错!!) ret[%d]\n", ret);
- }
- ret = CMBSM3HMAC(key, msgbcd, 0, outmsgbcd);
- if (ret != 0) {
- printf("CMBSM3HMAC ERROR(参数不正确,msg长度为0,-10415,-20602) ret[%d]\n", ret);
- } else {
- printf("CMBSM3HMAC SUCC(msg长度为0,应该报错!!) ret[%d]\n", ret);
- }
- ret = CMBSM3HMAC(key, msgbcd, -1, outmsgbcd);
- if (ret != 0) {
- printf("CMBSM3HMAC ERROR(参数不正确,msg长度为-1,-10415,-20601) ret[%d]\n", ret);
- } else {
- printf("CMBSM3HMAC SUCC(msg长度为-1,应该报错!!) ret[%d]\n", ret);
- }
- ret = CMBSM3HMAC(key, msgbcd, msglen, NULL);
- if (ret != 0) {
- printf("CMBSM3HMAC ERROR(参数不正确,outsmg指针为空,-10400,-20103) ret[%d]\n", ret);
- } else {
- printf("CMBSM3HMAC SUCC(outsmg指针为空,应该报错!!) ret[%d]\n", ret);
- }
- }
- void SM3_Test()
- {
- printf("\n---------------------------------------------------------\n\n");
- SM3hash();
- SM3hash();
- SM3hash_ParaErr();
- SM3hmac();
- SM3hmac_ParaErr();
- printf("\n---------------------------------------------------------\n\n");
- }
- int main(int argc, char* argv[])
- {
- SM3_Test();
- }
|