CST(Crypto Systems Toolkit) 7.1学习笔记-chapter5

翻译 2006年05月29日 18:45:00
5.用CST编程的基本原则
5.1使用头文件
使用前必须包括头文件 #include <cstlib.h>,
bsapi:包含加密,解密,标记,检验等接口
hash:包含一些hash函数
prng:包含伪随机数产生
ut:CST常用功能函数
5.2通用数据类型
u8:unsigned char
u32:unsigned long
ut_mblk:内存数据块
typedef struct
{
u8    *data;数据本身
size_t size;数据的大小
size_t used;可以存放在ut_mblk中的最大数据量
}ut_mblk;
说明:1,使用这个结构来传递二进制数据如keys,parameters,vectors;
2,分配内存块使用ut_new_mblk,释放用ut_dispose_mblk;
3,也可以使用ut_new_mem和ut_dispose_mem来为各个字段分配和释放内存。
ut_mblk_list:内存块链表
typedef struct ut_mblk_list_s *ut_mblk_list;
struct ut_mblk_list_s
{
ut_mblk_list prev;
ut_mblk_list next;
ut_mblk block;
};
说明:1,可以使用它来传递巨大的数据;
2,创建节点用ut_new_list,释放用ut_dispose_list;
3,CST还提供了一些函数来操作这个list,如:ut_copy_list_item_after,ut_copy_list_item_before...
5.3,使用ut_setflags和ut_init初始化程序
程序一开始包含cstlib.h后,首先调用ut_setflags和ut_init来初始化程序。它们做了下面一些工作(stderr available, determines the threadingmodel, initialises memory checks, error logging)。
5.3.1,ut_setflags
它使用ORed-together标志来告诉ut_init哪个配置属性被打开或关闭。它的语法是:
u32 rval = ut_setflags(u32 ORed_flags);

flags:
CSTFLAGS_USESTDERR:告诉内部函数stderr是可用的
CSTFLAGS_MULTITHREADED:在所有的操作系统中,在CST里,打开了多线程和临界区保护。
CSTFLAGS_MUTEX_PTHREAD,CSTFLAGS_MUTEX_SYSV:默认是前者。

说明:1,使用ut_getflags来得到哪个标志被设置
2,ut_setflags成功返回0,失败返回不能设置的标志。
5.3.2,ut_init 在程序中仅能调用一次
语法是:
void ut_init(const char *appname, const char *usage, const char *logfile, FILE *logstream);
更好的使用方法:
#ifndef NDEBUE /*if in debug mode */
ut_init("myapp","just run it!","mylogfile", stderr);
#else /*debug/ not debug*/
ut_init(0,0,0,0);
#endif

调试状态:错误信息被写入mylogfile并且同时输出到stderr,所有的错误信息还加上前缀myapp.
发布状态:所有错误日志被关闭。
5.4,用ut_logX来错误记录或者logstream
语法:
ut_logX(errnum, action, format [, args]);
X:是一个格式化字串时参数的个数
errnum:如果为0,无错误;如果非0,那么错误信息被显示,并且被拷贝到ut_errno并且被设置为0.
action:则为下面的值
typedef enum 
{
  UT_ACONTINUE = -2, /* Report message and continue execution */
  UT_AABORT,         /* Core dump if possible, else EXIT_FAIL */
  UT_AXOK,           /* Exit, successful termination */
  UT_AXFAIL,         /* Exit, general internal error failure */
  UT_AXFILE,         /* Exit, file-related problem */
  UT_AXMEMORY,       /* Exit, memory failure */
  UT_AXTEST,         /* Exit, failed test (or assert) */
  UT_AXARGS,         /* Exit, bad command-line arguments */
  UT_AXABORT,        /* Exit, user abort request */
  UT_AXINPUT,        /* Exit, bad input (user or file) */
  UT_AXPANIC,        /* Exit, something bad happened */
  UT_AXNO = 127      /* Exit, `false' for apps returning true/false 
                      * answers */
} ut_action;

例子:
1, if(!(fp = fopen("datafile", "rb")))
   ut_log0(0UL, UT_AXFILE, "couldn't open data file");
   2, if (!(fp = fopen ("datafile", "rb"))) 
   {
   ut_log1(0UL, UT_ACONTINUE, "couldn't open file %s", "datafile");
  goto handle_file_failure;
}
5.5,用ut_shutdown来结束应用程序,在程序中仅被调用一次。
5.6,CST提供的I/O
下面的两个函数仅是为了方便起见,CST才提供的,它其实跟CST关系不大。
read_mblk:读文件中数据到ut_mblk
write_mblk:与上相反
5.7,分配和释放内存
CST提供ut_new_mem和ut_dispose_mem来分配和释放内存。

<<Signals and systems>> Chapter 1 学习笔记

Chapter 1

crypto++学习笔记

  • 2009年08月31日 21:02
  • 275KB
  • 下载

CST学习笔记

  • 2013年11月14日 17:03
  • 1.85MB
  • 下载

【C++ primer 学习笔记】chapter5 表达式

C++ primer 学习笔记 chapter 5 表达式 notes: 5.1.  %求模运算,如果两数均为正,结果为正(或0);如果两书皆为负,结果为负(或0);如果两数符号不一致,操作的结...
  • gxuan
  • gxuan
  • 2012年08月28日 10:57
  • 501

《大话数据结构》学习笔记--chapter 5

《大话数据结构》学习笔记--chapter 5

Linux Device Drivers学习笔记-Chapter.5

本章主要涉及并发管理,我觉得这部分的理解需要建立在大量实践的基础之上,光是像本科操作系统课上那样讲道理是很难体会的。我记录了一些关键的函数和数据结构。 1.Race Conditions(R...
  • kyokowl
  • kyokowl
  • 2011年04月01日 11:11
  • 553

【Stanford机器学习笔记】5-Review for Chapter 1-4

【Stanford机器学习笔记】5-Review for Chapter 1-4

《APUE》chapter 5 Standard I/O libary 学习笔记(加上自己的代码)

Standard I/O libary 学习笔记+code

《Wide and Deep Learning for Recommender Systems》学习笔记

顾名思义,Google提出的这篇文章将Wide Model和Deep Model结合起来进行,思路非常值得学习。1.Wide Model首先说一下Wide Model,就是上图中左边的那一部分,是一个...

《CS:APP》 chapter 1 A Tour of Computer Systems 笔记

A Tour of Computer Systems           If you dedicate yourself to learning the concepts in this ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CST(Crypto Systems Toolkit) 7.1学习笔记-chapter5
举报原因:
原因补充:

(最多只允许输入30个字)