/*
#include <linux/string.h>
#include <linux/list.h>
#include <linux/slab.h>
*/
#include <string.h>
#include <stdlib.h>
#include "list.h"
#include "data_type.h"
#include "radix64.h"
#define MAX_LINE_CHAR 1024
BYTE * pem2der(int * len,char * pem)
{
BYTE * der;
int offset1,offset2;
int i,j;
int derlen,convertlen;
BYTE * Buffer;
offset1 = 0;
offset2=strlen(pem)-1;
// 从pem串首开始,找到第一个换行符
while(pem[offset1] != 0x0a)
{
if(pem[offset1] == 0)
return NULL;
offset1++;
}
offset1++;
// 从pem段倒数第二个字符开始,找到第二个换行符
while(pem[--offset2]!= 0x0a);
// 如果长度不合理,则退出
if(offset1 >= offset2)
return NULL;
// 分配缓存空间
Buffer = (BYTE *) kmalloc(offset2-offset1,GFP_KERNEL);
if(Buffer == NULL)
return NULL;
// 复制pem中证书内容,清除其中换行符
j=0;
for(i=offset1;i<offset2;i++)
{
if(pem[i]!=0x0a)
{
Buffer[j++] = pem[i];
}
}
Buffer[j]=0;
offset1=j;
// 计算der格式长度
derlen = radix_to_bin_len(offset1);
// 为der格式分配空间
if((der = (BYTE *)kmalloc(derlen,GFP_KERNEL))==NULL)
{
kfree(Buffer);
return NULL;
}
// 进行转换
convertlen = radix64_to_bin(der, offset1, Buffer);
kfree(Buffer);
// 检查转换结果是否正确
if(convertlen != derlen)
{
kfree(der);
return NULL;
}
// 正常返回
*len = derlen;
return der;
}
周楷雯
- 粉丝: 93
- 资源: 1万+
最新资源
- 与 FrontendMasters 课程 JavaScript 和 React 模式相关的 repo.zip
- win11系统有ie浏览器,打开ie浏览器自动跳转edge浏览器解决方案
- 基于Spark的新闻推荐系统源码+文档说明(高分项目)
- 27个常用分布函数详细汇总-名称+类别+用途+概率密度曲线+公式-PPT版本
- 一个易于使用的多线程库,用于用 Java 创建 Discord 机器人 .zip
- 最新2024行政区划5级数据结构和数据总集
- 《实战突击Java Web项目集成开发》源码.zip
- 不同语言的删除重复字符实现.pdf
- 嵌入式系统应用-LVGL的应用-智能时钟 part 3
- jdk 官方版v1.7 64位
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈