本文简要介绍ruby语言中 Digest::Base类
的用法。
这个抽象类为用 C 编写的消息摘要实现类提供了一个通用接口。
用 C 写一个 Digest
子类
Digest::Base
为用 C 编写的消息摘要类提供通用接口。这些类必须提供类型为 rb_digest_metadata_t 的结构:
typedef int (*rb_digest_hash_init_func_t)(void *); typedef void (*rb_digest_hash_update_func_t)(void *, unsigned char *, size_t); typedef int (*rb_digest_hash_finish_func_t)(void *, unsigned char *); typedef struct { int api_version; size_t digest_len; size_t block_len; size_t ctx_size; rb_digest_hash_init_func_t init_func; rb_digest_hash_update_func_t update_func; rb_digest_hash_finish_func_t finish_func; } rb_digest_metadata_t;
此结构必须设置为名为metadata
的实例变量(名称前不带+@+)。举例:
static const rb_digest_metadata_t sha1 = { RUBY_DIGEST_API_VERSION, SHA1_DIGEST_LENGTH, SHA1_BLOCK_LENGTH, sizeof(SHA1_CTX), (rb_digest_hash_init_func_t)SHA1_Init, (rb_digest_hash_update_func_t)SHA1_Update, (rb_digest_hash_finish_func_t)SHA1_Finish, }; rb_ivar_set(cDigest_SHA1, rb_intern("metadata"), Data_Wrap_Struct(0, 0, 0, (void *)&sha1));
相关用法
- Ruby Base64.encode64用法及代码示例
- Ruby Base64.decode64用法及代码示例
- Ruby Base64模块用法及代码示例
- Ruby BasicSocket.send用法及代码示例
- Ruby BasicObject.equal?用法及代码示例
- Ruby BasicSocket.remote_address用法及代码示例
- Ruby BasicSocket.recv用法及代码示例
- Ruby BasicObject.instance_eval用法及代码示例
- Ruby BasicSocket.do_not_reverse_lookup用法及代码示例
- Ruby BasicObject.obj ==用法及代码示例
- Ruby BasicSocket.do_not_reverse_lookup =用法及代码示例
- Ruby BasicSocket.connect_address用法及代码示例
- Ruby BasicObject.method_missing用法及代码示例
- Ruby BasicSocket.recv_nonblock用法及代码示例
- Ruby BasicSocket.recvmsg用法及代码示例
- Ruby BasicSocket.getsockopt用法及代码示例
- Ruby BasicObject.singleton_method_undefined用法及代码示例
- Ruby BasicObject.send用法及代码示例
- Ruby BasicSocket.getpeereid用法及代码示例
- Ruby BasicSocket.local_address用法及代码示例
- Ruby BasicSocket.shutdown用法及代码示例
- Ruby BasicObject类用法及代码示例
- Ruby BasicObject.instance_exec用法及代码示例
- Ruby BasicSocket.close_read用法及代码示例
- Ruby BasicSocket.getpeername用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Base类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。