summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypto/digest.c3
-rw-r--r--include/digest.h3
2 files changed, 3 insertions, 3 deletions
diff --git a/crypto/digest.c b/crypto/digest.c
index 047131b537..f902dc1fb1 100644
--- a/crypto/digest.c
+++ b/crypto/digest.c
@@ -78,8 +78,7 @@ int digest_generic_digest(struct digest *d, const void *data,
int digest_algo_register(struct digest_algo *d)
{
- if (!d || !d->name || !d->update || !d->final || !d->verify ||
- d->length < 1)
+ if (!d || !d->name || !d->update || !d->final || !d->verify)
return -EINVAL;
if (!d->init)
diff --git a/include/digest.h b/include/digest.h
index 85c4da36f5..c574b4d568 100644
--- a/include/digest.h
+++ b/include/digest.h
@@ -47,6 +47,7 @@ struct digest_algo {
struct digest {
struct digest_algo *algo;
void *ctx;
+ unsigned int length;
};
/*
@@ -99,7 +100,7 @@ static inline int digest_verify(struct digest *d, const unsigned char *md)
static inline int digest_length(struct digest *d)
{
- return d->algo->length;
+ return d->length ? d->length : d->algo->length;
}
static inline int digest_set_key(struct digest *d, const unsigned char *key,