File: C:/Ruby27-x64/share/ri/2.7.0/system/Digest/Base/cdesc-Base.ri
U:RDoc::NormalClass[iI" Base:ETI"Digest::Base;TI"Digest::Class;To:RDoc::Markup::Document:@parts[o;;[o:RDoc::Markup::Paragraph;[I"GThis abstract class provides a common interface to message digest ;TI")implementation classes written in C.;To:RDoc::Markup::BlankLine S:RDoc::Markup::Heading:
leveli: textI"!Write a Digest subclass in C;To; ;[I"@Digest::Base provides a common interface to message digest ;TI"?classes written in C. These classes must provide a struct ;TI""of type rb_digest_metadata_t:;To:RDoc::Markup::Verbatim;[I"8typedef int (*rb_digest_hash_init_func_t)(void *);
;TI"Ttypedef void (*rb_digest_hash_update_func_t)(void *, unsigned char *, size_t);
;TI"Ktypedef int (*rb_digest_hash_finish_func_t)(void *, unsigned char *);
;TI"
;TI"typedef struct {
;TI" int api_version;
;TI" size_t digest_len;
;TI" size_t block_len;
;TI" size_t ctx_size;
;TI"- rb_digest_hash_init_func_t init_func;
;TI"1 rb_digest_hash_update_func_t update_func;
;TI"1 rb_digest_hash_finish_func_t finish_func;
;TI"} rb_digest_metadata_t;
;T:@format0o; ;[I"IThis structure must be set as an instance variable named +metadata+ ;TI"8(without the +@+ in front of the name). By example:;To;;[I"1 static const rb_digest_metadata_t sha1 = {
;TI"" RUBY_DIGEST_API_VERSION,
;TI" SHA1_DIGEST_LENGTH,
;TI" SHA1_BLOCK_LENGTH,
;TI" sizeof(SHA1_CTX),
;TI"0 (rb_digest_hash_init_func_t)SHA1_Init,
;TI"4 (rb_digest_hash_update_func_t)SHA1_Update,
;TI"4 (rb_digest_hash_finish_func_t)SHA1_Finish,
;TI"};
;TI"
;TI"6rb_ivar_set(cDigest_SHA1, rb_intern("metadata"),
;TI"; Data_Wrap_Struct(0, 0, 0, (void *)&sha1));;T;0:
@fileI"ext/digest/digest.c;T:0@omit_headings_from_table_of_contents_below0;0;0[ [ [ [[I"
class;T[[:public[ [:protected[ [:private[ [I"
instance;T[[;[
[I"<<;TI"&../ruby-2.7.7/ext/digest/digest.c;T[I"block_length;T@P[I"digest_length;T@P[I"
reset;T@P[I"update;T@P[;[ [;[ [ [U:RDoc::Context::Section[i 0o;;[ ;0;0[I"+ext/digest/bubblebabble/bubblebabble.c;TI"Digest;TcRDoc::NormalModule