pike.git/
src/
post_modules/
Nettle/
hash.H
Branch:
Tag:
Non-build tags
All tags
No tags
2017-08-01
2017-08-01 21:56:39 by Martin Nilsson <nilsson@fastmail.com>
4c15afa812ed58f46483b4ef389590fe5fd7737f (
25
lines) (+
25
/-
0
)
[
Show
|
Annotate
]
Branch:
8.1
Fixed digest_info.
74:
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);
86:
optflags OPT_SIDE_EFFECT; rawtype tFunc(tStr8, tObjImpl_NETTLE_HASH_STATE); {
+
NO_WIDE_STRING(data);
THIS->meta->update(&THIS->ctx.state, data->len, (const uint8_t *)data->str); push_object(this_object()); }
96:
{ memcpy(&THIS->ctx.state, &THIS->ctx.inner, THIS->meta->context_size); if(data)
+
{
+
NO_WIDE_STRING(data);
THIS->meta->update(&THIS->ctx.state, data->len, (const uint8_t *)data->str);
-
+
}
push_object(this_object()); }
114:
push_string(end_shared_string(dst)); }
+
PIKEFUN string(8bit) digest_info(string(8bit) text)
+
{
+
struct external_variable_context loc;
+
apply_current(cmod_CONCAT_EVAL(f_Nettle_,PIKE_NAME,_cq__HMAC_State_update_fun_num),1);
+
+
/* Basically apply_external() with find_identifier() added. */
+
loc.o = Pike_fp->current_object;
+
loc.parent_identifier = Pike_fp->fun;
+
if (loc.o->prog) {
+
loc.inherit = INHERIT_FROM_INT(loc.o->prog, loc.parent_identifier);
+
find_external_context(&loc, 2);
+
int id = find_identifier("pkcs_digest", loc.o->prog);
+
if( id<0 )
+
Pike_error("Could not find pkcs_digest.\n");
+
apply_low(loc.o, id + loc.inherit->identifier_level, 1);
}
-
+
else
+
Pike_error("Apply on parent of destructed object.\n");
}
-
+
}
+
}
#endif DOCSTART() @class State