// -*- go -*- // // Copyright (c) 2020-2024 Markku Rossi // // All rights reserved. // package hmac import ( "crypto/sha1" ) // SumSHA1 computes the HMAC-SHA1 signature for the data using the // key. func SumSHA1(data, key []byte) [sha1.Size]byte { if len(key) > sha1.BlockSize { key = sha1.Sum(key[:]) } var ipad [sha1.BlockSize]byte var opad [sha1.BlockSize]byte copy(ipad, key) copy(opad, key) for i := 0; i < len(ipad); i++ { ipad[i] ^= 0x36 } for i := 0; i < len(opad); i++ { opad[i] ^= 0x5c } var idata [len(ipad) + len(data)]byte copy(idata, ipad) copy(idata[len(ipad):], data) idigest := sha1.Sum(idata[:]) var odata [len(opad) + len(idigest)]byte copy(odata, opad) copy(odata[len(opad):], idigest) return sha1.Sum(odata[:]) }