summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/libsec/port/hmac.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/src/libsec/port/hmac.c b/sys/src/libsec/port/hmac.c
index aa2fa03f6..5379c3e69 100644
--- a/sys/src/libsec/port/hmac.c
+++ b/sys/src/libsec/port/hmac.c
@@ -11,8 +11,13 @@ hmac_x(uchar *p, ulong len, uchar *key, ulong klen, uchar *digest, DigestState *
if(xlen > sizeof(innerdigest))
return nil;
- if(klen > Hmacblksz)
- return nil;
+ if(klen > Hmacblksz){
+ if(xlen > Hmacblksz)
+ return nil;
+ (*x)(key, klen, innerdigest, nil);
+ key = innerdigest;
+ klen = xlen;
+ }
/* first time through */
if(s == nil || s->seeded == 0){