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

定制东莞网站制作公司网站兼容性

定制东莞网站制作公司,网站兼容性,游戏网站建设计划书,做网站爱游戏说明 公司SOC上有一个新思的真随机数#xff08;TRNG#xff09;模块#xff0c;Linux平台上需要提供接口给外部使用。早期方式是提供一个独立的TRNG驱动#xff0c;实现比较简单的#xff0c;但是使用方式不open#xff0c;为了加入Linux生态环境#xff0c;对接linux…说明 公司SOC上有一个新思的真随机数TRNG模块Linux平台上需要提供接口给外部使用。早期方式是提供一个独立的TRNG驱动实现比较简单的但是使用方式不open为了加入Linux生态环境对接linux原生的随机数框架。 硬件随机数框架(hwrng) 目录结构 drivers/char/hw_random/ // 框架根目录 core.c //框架核心代码 omap-rng.c // 各种类型的rng驱动 hisi-trng-v2.c ...驱动适配 驱动结构体和需要实现接口定义如下 // file: include/linux/hw_random.h /*** struct hwrng - Hardware Random Number Generator driver* name: Unique RNG name.* init: Initialization callback (can be NULL).* cleanup: Cleanup callback (can be NULL).* data_present: Callback to determine if data is available* on the RNG. If NULL, it is assumed that* there is always data available. *OBSOLETE** data_read: Read data from the RNG device.* Returns the number of lower random bytes in data.* Must not be NULL. *OBSOLETE** read: New API. drivers can fill up to max bytes of data* into the buffer. The buffer is aligned for any type* and max is a multiple of 4 and 32 bytes.* priv: Private data, for use by the RNG driver.* quality: Estimation of true entropy in RNGs bitstream* (in bits of entropy per 1024 bits of input;* valid values: 1 to 1024, or 0 for unknown).*/ struct hwrng {const char *name;int (*init)(struct hwrng *rng);void (*cleanup)(struct hwrng *rng);int (*data_present)(struct hwrng *rng, int wait);int (*data_read)(struct hwrng *rng, u32 *data);int (*read)(struct hwrng *rng, void *data, size_t max, bool wait);unsigned long priv;unsigned short quality;/* internal. */struct list_head list;struct kref ref;struct completion cleanup_done; };驱动实现需要在probe中定义一个struct hwrng对象并按需实现相关接口最后使用以下接口向框架注册该驱动。 // file: include/linux/hw_random.h /** Register a new Hardware Random Number Generator driver. */ extern int hwrng_register(struct hwrng *rng); extern int devm_hwrng_register(struct device *dev, struct hwrng *rng); /** Unregister a Hardware Random Number Generator driver. */ extern void hwrng_unregister(struct hwrng *rng); extern void devm_hwrng_unregister(struct device *dve, struct hwrng *rng); /** Feed random bits into the pool. */ extern void add_hwgenerator_randomness(const char *buffer, size_t count, size_t entropy);具体实现比较简单可以看下 hisi-trng-v2.c 实现。接口说明 init初始化接口可以为NULLcleanup清理接口可以为NULLdata_present/data_read: 获取数据接口已过时根据core.c rng_get_data函数可知早期使用先调用data_present做些处理确认是否可以获取随机数可以再调用data_read获取随机数。read获取数据新接口。 属性说明 name设备名称如果有多个不能重复priv驱动私有数据quality返回随机数的质量评值0表示未知1~1024越大表示越随机。 框架核心core.c 框架module init时会创建缓存和注册misc设备节点/dev/hwrng。设备节点/dev/hwrng一直存在但是没有当前rngcurrent_rng是不可用的。 hwrng注册 遍历rng链表rng_list如果rng name重复直接退出。根据rng的quality值插入到的降序链表rng_list对应的位置。若当前rngcurrent_rng为空或者当前rng不为空非用户设定并且注册的rng quality大于当前rng则将rng设置为current_rng, 并调用其init接口做初始化等。 详细请看hwrng_register实现。 用户操作 用户可以通过以下文件节点做些配置 ~# ls -l /sys/devices/virtual/misc/hw_random/ total 0 -r--r--r-- 1 root root 4096 Jan 1 16:05 dev -r--r--r-- 1 root root 4096 Jan 1 16:05 rng_available // 可选的rng即rng list -rw-r--r-- 1 root root 4096 Jan 1 16:05 rng_current // 当前rng设备名称可以写入名称来选择指定rng设备 -r--r--r-- 1 root root 4096 Jan 1 16:05 rng_selected //是否由用户空间选择rng设备1表示是 lrwxrwxrwx 1 root root 0 Jan 1 16:05 subsystem - ../../../../class/misc -rw-r--r-- 1 root root 4096 Jan 1 16:05 uevent用户可以通过设备节点/dev/hwrng获取生成的随机数如果当前rng为空会返回错误设备不存在。 hwrng 初始化 hwrng注册或者用户选择rng时会做hwrng初始化hwrng init),启动一个内核线程hwrng每隔10s读取当前hwrng生成的随机数保存到缓存中通过函数add_hwgenerator_randomness将硬件产生的随机数添加到inpu_pool熵池中给/dev/random和/dev/urandom使用。 /dev/random和/dev/urandom 由于hwrng不一定可用Linux提供了另外两个随机数发生器。 两者区别 熵是一种可以体现随机性的值充当生成随机数时使用的种子熵越随机越好hwrng添加到inpu_pool熵池中的随机数就是给/dev/random和/dev/urandom使用当然还有别的熵来源如硬件噪声这两个设备文件都使用熵池entropy pool来收集熵。/dev/random和/dev/urandom的区别主要在于它们如何收集并使用熵entropy。/dev/random 使用一个阻塞式的熵池当熵池的熵耗尽时它会阻塞读取操作直到收集到足够的熵。这种行为使得 /dev/random 更适合生成高质量的随机数如密钥、证书等。/dev/urandom 使用一个非阻塞式的熵池当熵耗尽时它不会阻塞而是使用内部的伪随机数生成器PRNG继续生成随机数这使得 /dev/urandom 在熵耗尽时仍能提供随机数但生成的随机数可能没有 /dev/random 那么高的质量。 系统调用 getrandom() 默认是返回 /dev/urandom 中的 entropy。
http://www.hkea.cn/news/14583594/

相关文章:

  • 东方城乡与住房建设部网站移动平台
  • 黄骅做网站|黄骅网站|黄骅百度优化|黄骅百度推广|黄骅微信|黄骅好看的ppt模板
  • 深圳市路桥建设集团有限公司招标采购网站医院咨询男科
  • 网站在百度搜索不到公众号登录超时
  • wordpress网站下方中国制造网官方网站首页
  • app开发网站模板手机免费创建个人网站
  • 网站手机开免费安装电脑wordpress
  • 企业门户网站实现网站和网页的不同
  • 网站建设用免费素材湖南移动网站建设
  • 公众号开发网站公司西安稳定的seo
  • 山东省和住房建设厅网站有了域名 做网站
  • 南充网站建设多少钱中山做网站公司
  • 龙门石窟网站建设策划报告设计一个营销方案
  • 如何搭建php网站长春有什么好的网站制作公司
  • 做疏通什么网站推广好河北建设工程招标协会网站
  • 包头住房和城乡建设厅网站佛山哪里做网站
  • 免费手机网站建站卫浴网站模板
  • 自助建站信息网ci框架建设网站
  • 设计网站公司网站建设方案范文2000字
  • 个人网站课程设计报告光伏电站建设的行业网站
  • 建模网站素材南宁哪家公司建设网站比较好
  • windows系统怎么做ppt下载网站做海报的素材网站
  • 这么攻击网站自己做网站做什么内容
  • 徐州高端网站建设重庆新闻联播回放今天
  • 网站seo收费湖南常德地图
  • 网站建设初期怎么添加内容深圳装修公司生产厂家
  • 有什么网站可以做平面兼职品牌网站设计网站
  • 西安seo网站设计公司网站建设捌金手指下拉十九
  • 静态网站怎么做去电商公司上班怎么样
  • 下载好了网站模板怎么开始做网站工程建筑网