比特币源码研读(三)之椭圆曲线为什么不可逆

比特币源码研读(三)之椭圆曲线为什么不可逆
说起比特币加密,椭圆曲线是被经常提到的词,之前读《精通比特币》是也只是大致浏览了一下。认为太过高深,所以没有仔细研究。 最近几天偶然间有翻起了这段,难得有闲,便沉下心来仔细研读了一番,自认还是有些收获的,分享出来,为外人解谜的同时也权当最近学习的一个记录。 正文 生成公钥 以一个随机生成的私钥 k(可以理解为一个极大的数) 为起点,我们将其与曲线上已定义的生成点 G 相乘以获得曲线上的...

suricata 3.1 源码分析29 (数据包队列)

suricata 3.1 源码分析29 (数据包队列)
th,td,tr{border:1px solid #eee;text-align:center;padding:10px;}/* css注释:只对table标签设置红色边框样式 */ 这块的东西我现在还没有用到,所以很不厚道的抄了背着笔记本流浪的原文下来。 简介 Suricata中使用队列来缓存数据包,包括缓存线程模块内部新产生数据包的线程内队列,以及线程之间用来传递数据包的线程间队列。 用于表示数据包队列的结构体为PacketQueue,其定义如下(省略了调试相关字...

suricata 3.1 源码分析30 (packet_pool处理流程)

suricata 3.1 源码分析30 (packet_pool处理流程)
简介 suricata中的packet_poo是专门用于存放receive线程抓到的数据包的。 receive线程初始化时在TmThreadsSlotPktAcqLoop中调用PacketPoolInit来初始化它的packet_pool,并为packet_pool划分内存空间。默认是申请1024个packet结构大小的空间,以链表的开示存储。这里的packet_pool被记为“my_pool”,也就是receive的线程全局变量thread_pkt_pool。 worker线程初始化时在TmThreadsSlotVar中调用PacketPoolIn...

suricata 3.1 源码分析5

suricata 3.1 源码分析5
if (PostConfLoadedSetup(&suri) != TM_ECODE_OK) { exit(EXIT_FAILURE); } 执行PostConfLoadedSetup,即运行那些需要在配置载入完成后就立马执行的函数。这里面涉及的流程和函数非常多 /** * This function is meant to contain code that needs * to be run once the configuration has been loaded. */ static int PostConfLoadedSetup(SCInstance *su...

suricata 3.1 源码分析32 (FlowWorker处理流程1)

suricata 3.1 源码分析32 (FlowWorker处理流程1)
TmEcode FlowWorker(ThreadVars *tv, Packet *p, void *data, PacketQueue *preq, PacketQueue *unused) { FlowWorkerThreadData *fw = data; /*FlowWorkerThreadInit中初始化,包含大量stats统计指标, decode指标在DecodeThreadVars中, tcp指标在StreamTcpThread中*/ void *detect_thread = SC_ATOMIC_GET(fw->detect_thread); //获取detect线程(3.1中的worker线程)的数据 S...

Netmap分析(三)

Netmap分析(三)
Netmap_linux.c 两个重要的结构 struct miscdevice netmap_cdevsw = { /* same name as FreeBSD */ MISC_DYNAMIC_MINOR, "netmap", &netmap_fops, }; static struct file_operations netmap_fops = { .owner = THIS_MODULE, .open = linux_netmap_open, //malloc the private_data from memory .mmap = linux_netmap_mmap, //设置netmap内存映射...

Netmap分析(六)

Netmap分析(六)
netmap.c NIOCTXSYNC和NIOCRXSYNC 这两个使用相同的代码,同步ring case NIOCTXSYNC: case NIOCRXSYNC: nifp = priv->np_nifp; if (nifp == NULL) { error = ENXIO; break; } mb(); /* make sure following reads are not from cache */ na = priv->np_na; /* we have a reference */ if (na == NULL) { D("Internal error: nifp != NULL && n...

suricata 3.1 源码分析4

suricata 3.1 源码分析4
GlobalInits(); 初始化全局变量。包括:数据包队列trans_q、数据队列data_queues(干嘛的?)、对应的mutex和cond、建立小写字母表。 TimeInit(); 初始化时间。包括:获取当前时间所用的spin lock,以及设置时区(调用tzset()即可)。 SupportFastPatternForSigMatchTypes(); 为快速模式匹配注册关键字。调用SupportFastPatternForSigMatchList函数,按照优先级大小插入到sm_fp_support_smlis...

suricata 3.1 源码分析6

suricata 3.1 源码分析6
if (suri.run_mode != RUNMODE_UNIX_SOCKET) { FlowInitConfig(FLOW_VERBOSE); 初始化Flow engine。用来表示一条TCP/UDP/ICMP/SCTP流的,程序当前所记录的所有流便组成了流表,在flow引擎中,流表为flow_hash这个全局变量,其类型为FlowBucket *,而FlowBucket中则能够存储一个Flow链表,典型的一张chained hash Table。在初始化函数FlowInitConfig中,首先会使用配置文件信息填充flow_...
Copyright © 九毛的官方博客 保留所有权利.   Theme  Ality

用户登录