Ruby  2.7.2p137(2020-10-01revision5445e0435260b449decf2ac16f9d09bae3cafe72)
digest.h
Go to the documentation of this file.
1 /************************************************
2 
3  digest.h - header file for ruby digest modules
4 
5  $Author$
6  created at: Fri May 25 08:54:56 JST 2001
7 
8 
9  Copyright (C) 2001-2006 Akinori MUSHA
10 
11  $RoughId: digest.h,v 1.3 2001/07/13 15:38:27 knu Exp $
12  $Id$
13 
14 ************************************************/
15 
16 #include "ruby.h"
17 
18 #define RUBY_DIGEST_API_VERSION 3
19 
20 typedef int (*rb_digest_hash_init_func_t)(void *);
21 typedef void (*rb_digest_hash_update_func_t)(void *, unsigned char *, size_t);
22 typedef int (*rb_digest_hash_finish_func_t)(void *, unsigned char *);
23 
24 typedef struct {
26  size_t digest_len;
27  size_t block_len;
28  size_t ctx_size;
33 
34 #define DEFINE_UPDATE_FUNC_FOR_UINT(name) \
35 void \
36 rb_digest_##name##_update(void *ctx, unsigned char *ptr, size_t size) \
37 { \
38  const unsigned int stride = 16384; \
39  \
40  for (; size > stride; size -= stride, ptr += stride) { \
41  name##_Update(ctx, ptr, stride); \
42  } \
43  if (size > 0) name##_Update(ctx, ptr, size); \
44 }
45 
46 #define DEFINE_FINISH_FUNC_FROM_FINAL(name) \
47 int \
48 rb_digest_##name##_finish(void *ctx, unsigned char *ptr) \
49 { \
50  return name##_Final(ptr, ctx); \
51 }
52 
53 static inline VALUE
54 rb_digest_namespace(void)
55 {
56  rb_require("digest");
57  return rb_path2class("Digest");
58 }
59 
60 static inline ID
61 rb_id_metadata(void)
62 {
63  return rb_intern_const("metadata");
64 }
rb_digest_metadata_t::block_len
size_t block_len
Definition: digest.h:27
ID
unsigned long ID
Definition: ruby.h:103
rb_digest_hash_finish_func_t
int(* rb_digest_hash_finish_func_t)(void *, unsigned char *)
Definition: digest.h:22
int
__inline__ int
Definition: rb_mjit_min_header-2.7.2.h:2845
rb_digest_metadata_t::digest_len
size_t digest_len
Definition: digest.h:26
VALUE
unsigned long VALUE
Definition: ruby.h:102
rb_intern_const
#define rb_intern_const(str)
Definition: ruby.h:1879
rb_digest_metadata_t::api_version
int api_version
Definition: digest.h:25
void
void
Definition: rb_mjit_min_header-2.7.2.h:13241
rb_digest_metadata_t::init_func
rb_digest_hash_init_func_t init_func
Definition: digest.h:29
rb_digest_metadata_t
Definition: digest.h:24
ruby.h
rb_require
VALUE rb_require(const char *)
Definition: load.c:1117
rb_digest_metadata_t::ctx_size
size_t ctx_size
Definition: digest.h:28
size_t
unsigned int size_t
Definition: rb_mjit_min_header-2.7.2.h:663
rb_digest_hash_init_func_t
int(* rb_digest_hash_init_func_t)(void *)
Definition: digest.h:20
rb_path2class
VALUE rb_path2class(const char *)
Definition: variable.c:268
rb_digest_metadata_t::update_func
rb_digest_hash_update_func_t update_func
Definition: digest.h:30
rb_digest_hash_update_func_t
void(* rb_digest_hash_update_func_t)(void *, unsigned char *, size_t)
Definition: digest.h:21
rb_digest_metadata_t::finish_func
rb_digest_hash_finish_func_t finish_func
Definition: digest.h:31