Ruby latest stable (v2_5_5) - 0 notes - Superclass: Class

This abstract class provides a common interface to message digest implementation classes written in C.

Write a Digest subclass in C

Digest::Base provides a common interface to message digest classes written in C. These classes must provide a struct of type 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;

This structure must be set as an instance variable named metadata (without the +@+ in front of the name). By example:

 static const rb_digest_metadata_t sha1 = {

rb_ivar_set(cDigest_SHA1, rb_intern("metadata"),
            Data_Wrap_Struct(0, 0, 0, (void *)&sha1));
Show files where this class is defined (1 file)
Register or log in to add new notes.