pike.git
/
src
/
post_modules
/
Nettle
/
hash.H
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/post_modules/Nettle/hash.H:50:
EXTRA { lexical_inherit(1, MK_STRING("_HMAC"), 0, REPORT_ERROR); } PIKECLASS State { CVAR struct HMAC_CTX(struct cmod_CONCAT_EVAL(NETTLE_NAME, _ctx)) ctx; CVAR const struct nettle_hash *meta;
+
static int cmod_CONCAT_EVAL(f_Hash__HMAC_, NETTLE_NAME, _create_fun_num) = -1;
+
EXTRA {
-
+
int hmac_create_fun_num = -1;
lexical_inherit(1, MK_STRING("State"), 0, REPORT_ERROR);
-
+
hmac_create_fun_num =
+
FIND_LFUN(Pike_compiler->new_program->inherits[1].prog, LFUN_CREATE);
+
if (hmac_create_fun_num >= 0) {
+
cmod_CONCAT_EVAL(f_Hash__HMAC_, NETTLE_NAME, _create_fun_num) =
+
really_low_reference_inherited_identifier(NULL, 1, hmac_create_fun_num);
}
-
+
}
PIKEFUN void create(string(8bit) passwd, void|int b) { const struct nettle_hash *meta = THIS->meta = ((struct Nettle_Hash_struct *)parent_storage(2, Nettle_Hash_program))->meta; NO_WIDE_STRING(passwd); HMAC_SET_KEY(&THIS->ctx, meta, passwd->len, (const uint8_t *)passwd->str);
-
+
if (cmod_CONCAT_EVAL(f_Hash__HMAC_, NETTLE_NAME, _create_fun_num) != -1) {
+
/* Pass along the password to the inherited pike-level code. */
+
apply_current(cmod_CONCAT_EVAL(f_Hash__HMAC_, NETTLE_NAME,
+
_create_fun_num), args);
}
-
+
}
PIKEFUN string(8bit) `()(string(8bit) text) { struct cmod_CONCAT_EVAL(NETTLE_NAME, _ctx) state; int bytes = THIS->meta->digest_size; struct pike_string *dst = begin_shared_string(bytes); NO_WIDE_STRING(text); memcpy(&state, &THIS->ctx.inner, THIS->meta->context_size); THIS->meta->update(&state, text->len, (const uint8_t *)text->str);