e9e2d23e1ea5a149a7d8828d2a45b9f2313c3785Timo Sirainenint otp_read_hex(const char *data, const char **endptr, unsigned char *hash);
e9e2d23e1ea5a149a7d8828d2a45b9f2313c3785Timo Sirainenint otp_read_words(const char *data, const char **endptr, unsigned char *hash);
e9e2d23e1ea5a149a7d8828d2a45b9f2313c3785Timo Sirainenint otp_read_new_params(const char *data, const char **endptr,
e9e2d23e1ea5a149a7d8828d2a45b9f2313c3785Timo Sirainenint otp_parse_response(const char *data, unsigned char *hash, bool hex);
e9e2d23e1ea5a149a7d8828d2a45b9f2313c3785Timo Sirainenint otp_parse_init_response(const char *data, struct otp_state *new_state,
e9e2d23e1ea5a149a7d8828d2a45b9f2313c3785Timo Sirainen unsigned char *hash, bool hex, const char **error);
e9e2d23e1ea5a149a7d8828d2a45b9f2313c3785Timo Sirainenint otp_parse_dbentry(const char *text, struct otp_state *state);
e9e2d23e1ea5a149a7d8828d2a45b9f2313c3785Timo Sirainenconst char *otp_print_dbentry(const struct otp_state *state);