void hbytes_sentinel(HBytes_Value *returns);
void hbytes_array(HBytes_Value *returns, const Byte *array, int l);
Byte *hbytes_arrayspace(HBytes_Value *returns, int l);
-void hbytes_free(HBytes_Value *frees);
+void hbytes_free(const HBytes_Value *frees);
/* _empty, _sentinel and _array do not free or read the old value;
* _free it first if needed. _free leaves it garbage, so you
* have to call _empty to reuse it. _arrayspace doesn't fill
Tcl_ObjType blockcipherkey_type;
-/* from hash.c */
+/* from algtables.c */
typedef struct {
- int blocksize, hashsize;
+ const char *name;
+ int hashsize, blocksize, statesize;
+ void (*init)(void *state);
+ void (*update)(void *state, const Byte *data, int len);
+ void (*final)(void *state, Byte *digest);
+ void (*oneshot)(Byte *digest, const Byte *data, int len);
} HashAlgInfo;
-/* from blockciph.c */
+extern const HashAlgInfo hashalginfos[];
typedef struct {
void (*make_schedule)(void *schedule, const Byte *key, int keylen);