当前位置: 首页 > news >正文

网站建设要考虑哪些内容辽宁网站建设专业学校

网站建设要考虑哪些内容,辽宁网站建设专业学校,网站必须备案,网站建设 模板网站前言 最近在做一个换电柜的项目,需要和云端平台对接json协议,由于服务端规定了,需要采用sm2 sm3 sm4用来加密。在嵌入式方面只能用北京大学的GmSSL了。 下载GmSSL 在https://github.com/guanzhi/GmSSL下载库 也可以通过git命令下载&#x…

前言

最近在做一个换电柜的项目,需要和云端平台对接json协议,由于服务端规定了,需要采用sm2 sm3 sm4用来加密。在嵌入式方面只能用北京大学的GmSSL了。

下载GmSSL

https://github.com/guanzhi/GmSSL下载库
也可以通过git命令下载,下载不了,请注意科学上网。
git clone https://github.com/guanzhi/GmSSL
我采用的3.0.0版本
git checkout 3.0.0

在linux下测试一下库是否能用

编译
mkdir build
cd build
cmake ..
cmake --build .
在build\bin可以看到有aestest block_ciphertest cmstest ectest gmssl hkdftest...等等可执行文件了。
测试通过后下面可以移植到嵌入式平台了。

添加一些缺少的C标准库函数

添加syscalls.c文件放到src目录下

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <time.h>  // 包含timegm需要的头文件
#include <stdio.h> // 用于assert// 用于断言的简单实现
void _exit(int status) { return; }void *_sbrk_r(struct _reent *r, int nbytes)
{extern char _end; // 末尾符号static char *heap_end;char *prev_heap_end;if (heap_end == 0){heap_end = &_end; // 初始化堆指针}prev_heap_end = heap_end;heap_end += nbytes;return (char *)prev_heap_end;
}int _write(int file, char *ptr, int len)
{// 将数据写入特定的输出设备,通常是串口return -1;
}int _open(const char *pathname, int flags)
{return -1;
}
int _close(int file) { return-1; }int _fstat(int file, struct stat *st) { return -1; }int _isatty(int file)
{return 1; // 默认所有文件为终端
}int _lseek(int file, int ptr, int dir) { return -1; }int _read(int file, char *ptr, int len)
{return -1;
}// 添加 _assert 函数
void _assert(const char *expr, const char *file, int line)
{// 这里可以根据需要处理// 例如:输出错误信息,或进入死循环while (1){// 进入死循环,或者根据需要重启系统}
}// 添加 timegm 函数
time_t timegm(struct tm *tm)
{// 这里可以实现根据 tm 结构计算 UTC 时间// 一个简单的实现示例,具体实现可能需要根据需要调整time_t seconds = 0;// 计算总秒数(这是一个简化的示例,实际可能需要更多处理)seconds += tm->tm_sec;seconds += tm->tm_min * 60;seconds += tm->tm_hour * 3600;seconds += (tm->tm_year - 70) * 31536000; // 1970年起的年数seconds += (tm->tm_mon) * 2592000;        // 简化的月份处理seconds += (tm->tm_mday - 1) * 86400;     // 日数return seconds;
}

GmSSL依赖随机数

修改src/rand.c为如下伪随机数函数

/**  Copyright 2014-2022 The GmSSL Project. All Rights Reserved.**  Licensed under the Apache License, Version 2.0 (the License); you may*  not use this file except in compliance with the License.**  http://www.apache.org/licenses/LICENSE-2.0*/#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <gmssl/rand.h>
#include <gmssl/error.h>#define RAND_MAX_BUF_SIZE 4096
static uint32_t seed = 123456789; // 初始种子static uint32_t lcg_rand()
{seed = (1103515245 * seed + 12345) % (1U << 31);return seed;
}int rand_bytes(uint8_t *buf, size_t len)
{if (!buf) {return -1;}if (len > RAND_MAX_BUF_SIZE) {return -1;}if (!len) {return 0;}for (size_t i = 0; i < len; i++) {buf[i] = lcg_rand() & 0xFF; // 取低8位}return 1;
}

编译通过,可以生成sm2test.elf没有链接错误了。

http://www.yayakq.cn/news/308651/

相关文章:

  • 个人网站模板吧保定网站推广公司
  • python是做网站的吗遵义在线遵义晚报
  • 企业工商信用查询烟台网站seo外包
  • 淘宝天猫做网站咨询pos机网站报单怎么做
  • 做旅游网站的好处wordpress本地环境404
  • 合肥网站建设电话网站建设岗位所需技能
  • 网站积分方案惠州企业建站系统
  • 青岛网站设计哪家便宜建筑公司取名参考
  • 吉林省电力建设总公司网站外贸网站做流量
  • 网站建设费用个人网站代码模板
  • 建个什么网站吗局域网里做网站
  • 澄迈网站新闻建设网站建设起到计划和指导作用
  • 手机电脑网站排名营销方案ppt模板
  • 安全的合肥网站建设邯郸市瑞荣网络科技有限公司
  • 学校网站做网页飘窗怎么做百度seo按天计费
  • 网站建站工具租网站服务器一个月多少钱
  • 做暖暖视频网站gps建站步骤视频
  • 网站接口设置炒币做合约哪个网站最好
  • 企业vi设计的几大特点做seo的网站有那些
  • 公司网站首页设计有什么平台可以推广
  • 手机端h5网站模板下载建设一个网站大概需要多久
  • 乐陵seo网站wordpress utc时间设置
  • 专业的营销型网站百度口碑官网
  • 怎样免费建立自己的网站台州市知名专业做网站
  • 泉州建设网站制作seo优化方案案例
  • copyright技术支持 东莞网站建设网站建设规划模板
  • 响应式网站开发周期网站域名注册流程
  • 手机网站翻译成中文最稳定的免费的资源共享网站
  • 网站跟客户端推广怎么做保定网站制作推广
  • 潍坊网站模板在哪网站访问次数受限