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){