RK3399 驱动开发 _ 08 - 加密芯片atsha204a驱动开发

前言

在RK3399平台开发过程中,为了确保数据安全性,需要使用加密芯片。本文旨在介绍一款型号为atsha204a的加密芯片。

系统:Android8.1
内核 : Kernel 4.4.167
加密芯片型号:atsha204a
通信方式:I2C

一、加密芯片 atsha204a

1. 简介

关于简介可参考博客:https://blog.csdn.net/zhanghaochen_/article/details/88693749

2. linux driver源码

atsha204a linux driver源码 :https://download.csdn.net/download/chenkanuo/88158252

二、驱动移植

1. DTS节点配置

atsha204a 的DTS节点定义在 kernel/arch/arm64/boot/dts/rockchip/rk3399-xxx.dtsi 文件中,如下所示:

&i2c7 {
	status = "okay";
	i2c-scl-rising-time-ns = <150>;
	i2c-scl-falling-time-ns = <30>;
	clock-frequency = <400000>;
	
	atsha204a@64 {
		compatible = "atmel,atsha204a";
		status = "okay";
		reg = <0x64>;
	};
};

2. 内核中添加驱动源码

  • 驱动添加在 kernel/drivers/cryptol/路径下:
  • 在 kernel/drivers/cryptol/Makefile 中添加:
obj-$(CONFIG_CRYPTO_DEV_ATSHA204A) := atsha204a.o
atsha204a-objs := sha204_helper.o atsha204a_api.o atsha204a_i2c.o atsha204a_module.o
  • 在 kernel/drivers/cryptol/Kconfig 中添加:
config CRYPTO_DEV_ATSHA204A
	tristate "Support for Atmel atsha204a authentication devices."
	depends on I2C
	help
	  This option enables the driver for atsha204a hardware authentication devices

	  To compile this driver as a module, choose M here.

  • 在 kernel/arch/arm64/configs/xxx_defconfig 中新增宏定义:
CONFIG_CRYPTO_DEV_ATSHA204A=y 

3. 重新编译并烧录

重新编译内核并烧录生效。

三、测试

更新内核后,设备上电,生成生成ioctl节点 : /dev/atsha204a
读取加密芯片SN:
cat /sys/class/crypto/atsha204a/sn

读取加密芯片配置:
cat /sys/class/crypto/atsha204a/config

在这里插入图片描述


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于希望自己软件加密的,绝对值得你研究,我自己就从书中代码获益颇多,给自己的商业软件加密了。共分为五个文件,希望对你有帮助。本人缺分,也希望多些人下载,(*^__^*) 嘻嘻…… 光盘目录说明 {第1章 基础知识} chap01\Regedit...................注册表读写示例 \IniFile...................Ini文件读写示例 \CustomFile................自定义文件读写示例 \CreateDLL.................DLL的创建示例 \YSCall....................DLL的隐式调用 \XSCall....................DLL的显式调用 \CreateComponent...........包的示例 \FindWindow................防止多个实例运行(查找窗口法) \Mutex.....................防止多个实例运行(互斥对象) \ATom......................防止多个实例运行(全局原子) \OnceRun(File).............防止多个实例运行(文件保存标志法) \BASM-Source...............Delphi中嵌入汇编例子 \BASM-Class................BASM中访问Delphi对象 \BASM-JMP..................BASM的跳转示例 \BASM-DB、DD、DW...........BASM中的汇编指令 \BASM-Call.................BASM中调用Delphi中的函数和过程 \BASM-CallApi..............BASM中调用API函数 \BASM-Var..................BASM访问函数或过程的参数 \BASM-Asm..................Delphi中的全汇编例程 {第2章 加密算法} chap02\CRC32-Dym.................CRC32算法动态码表实现 \CRC32-Static..............CRC32算法静态码表实现 \MD5.......................MD5算法示例 \SHA.......................SHA算法示例 \DES.......................DES算法示例 \2DES......................双重DES算法示例 \3DES......................两个密钥的三重DES算法示例 \3DES3.....................三个密钥的三重DES算法示例 \Blowfish..................BlowFish算法示例 \AES.......................AES算法示例 \RSA.......................RSA算法示例 \BASE64....................BASE64算法示例 {第3章 软件试用期} chap03\TrialTime(Reg)............软件试用次数(信息写入注册表) \TrialTime(Ini)............软件试用次数(信息写入Ini文件) \TrialDate(Reg)............软件试用天数(信息写入注册表) \TrialDate(Ini)............软件试用天数(信息写入Ini文件) \LastDate(Reg).............软件最后试用日期(信息写入注册表) \LastDate(Ini).............软件最后试用日期(信息写入Ini文件) \RunTime-Timer.............限制软件启动后的执行时间(Timer控件) \RunTime-APi...............限制软件启动后的执行时间(API) \Nag.......................实现Nag窗口的第一种方法 \Nag-Time..................实现Nag窗口的第二种方法 \Time-ing..................时间段限制的第一种方法 \Time-run..................时间段限制的第二种方法 {第4章 反跟踪技术} chap04\Anti-SoftICE..............Anti-SoftICE示例 ├──BackDoor...........SoftICE后门指令 ├──Service............判断NTICE服务是否运行 ├──UEF................利用UnhandledExceptionFilter检测; └──INT41..............INT 41子类型; \Anti-Loader...............Anti-Loader示例 ├──PEB................利用TEB检测 ├──FindWindow.........查找句柄检测 ├──IsDebuggerPresent..利用IsDebuggerPresent检测 ├──Parent.............检查父进程 └──STARTUPINFO........检查STARTUPINFO结构 \Anti-Monitor..............Anti-Monitor示例 ├──FindWindow.........通过查找窗口标题栏 └──Process............通过查找进程 \Anti-Static...............反静态分析示例 ├──Example1...........一般程序示例 ├──Example2...........插入花指令示例 └──Example3...........12组花指令 \Anti-DeDe.................Anti-DeDe示例 ├──Find...............查找进程和窗口 └──Hide...............隐藏事件 \Anti-Unpacking............反脱壳示例 ├──FileSize...........用文件大小校验软件 └──FileCRC32..........校验文件完整性 \Message-Hide..............信息隐藏示例 ├──FileSelf...........把信息隐藏在程序本身 └──OtherFile..........信息隐藏于外部文件中 {第5章 注册认证和注册机} chap05\Algorithms................选用加密算法 ├──MD5Check...........Hash算法作为注册码验证算法 ├──DESCheck...........对称算法作为注册码验证算法 ├──MoreAlg............多种对称算法实现注册验证 └──RSACheck...........公开密钥算法作为注册码验证算法 \Check.....................验证模式 ├──CurrentCheck.......注册码直接验证示例 └──RebootCheck........注册码重启校验示例 \Serial....................硬盘系列号保护方式 ├──HDID...............获取硬盘系列号示例 ├──Check..............硬件系列号保护示例 └──KeyGen.............注册机制作示例 \UserName..................用户名保护方式 ├──Check..............用户名保护示例 └──KeyGen.............注册机制作示例 \SerilaAndName.............硬件系列号与用户名保护方式 ├──Check..............硬件系列号与用户名保护示例 └──KeyGen.............注册机制作示例 \Random....................随机注册码模式 ├──Check..............随及注册码保护示例 └──KeyGen.............注册机制作示例 \KeyFile...................KeyFile保护方式 ├──Check..............KeyFile保护示例 └──KeyGen.............注册机制作示例 \CallDllCheck..............用DLL实现注册认证 └──CallCheck..........用DLL实现注册认证的示例 \DLLProtect................DLL控件保护示例 ├──Delphi.............Delphi调用示例 └──VB.................VB调用示例 \BPLProtect................BPL控件保护示例 └──CallBPL............调用BPL控件示例 \Compelet..................一套完整的软件保护示例 ├──Check..............软件保护示例 └──KeyGen.............注册机制作示例 {第6章 网络验证} chap06\WebCheck..................WEB服务器验证 ├──Client.............客户端实现示例 └──LocalControl.......本地控制程序实现示例 \ServerCheck...............本地服务器验证 ├──Client.............客户端实现示例 └──Server.............服务器实现示例 \Update....................在线升级验证示例 {第7章 PE文件知识} chap07\DOS Header................获取DOS头部信息示例 \PE Header.................获取PE头部信息示例 \Optional Header...........获取可选头部信息示例 \Section Table.............获取区块表信息示例 \Import Table..............获取输入表信息示例 \Export Table..............获取输出表信息示例 {其它源码} ToolsTest\OllyDbg................OllyDbg调试例子 \DeDe...................DeDe反编译例子

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值