/* See LICENSE file for copyright and license details. */
struct crypt_ops {
	void (*init)(void *);
	void (*update)(void *, const void *, unsigned long);
	void (*sum)(void *, uint8_t *);
	void *s;
};

int cryptcheck(int, char **, struct crypt_ops *, uint8_t *, size_t);
int cryptmain(int, char **, struct crypt_ops *, uint8_t *, size_t);
int cryptsum(struct crypt_ops *, FILE *, const char *, uint8_t *);
void mdprint(const uint8_t *, const char *, size_t);
