Francisco J Ballesteroszxfs put fix1449f3310 years agoHistory
53 lines · 1.1 KB · Go
RawDownload
// Copyright 2012 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file. package ssh // Message authentication support import (	"crypto/hmac"	"crypto/sha1"	"hash") struct macMode {	keySize int	new     func(key []byte) hash.Hash} // truncatingMAC wraps around a hash.Hash and truncates the output digest to// a given size.struct truncatingMAC {	length int	hmac   hash.Hash} func (t truncatingMAC) Write(data []byte) (int, error) {	return t.hmac.Write(data)} func (t truncatingMAC) Sum(in []byte) []byte {	out := t.hmac.Sum(in)	return out[:len(in)+t.length]} func (t truncatingMAC) Reset() {	t.hmac.Reset()} func (t truncatingMAC) Size() int {	return t.length} func (t truncatingMAC) BlockSize() int { return t.hmac.BlockSize() } var macModes = map[string]*macMode{	"hmac-sha1": {20, func(key []byte) hash.Hash {		return hmac.New(sha1.New, key)	}},	"hmac-sha1-96": {20, func(key []byte) hash.Hash {		return truncatingMAC{12, hmac.New(sha1.New, key)}	}},}