util.go 522 B

1234567891011121314151617181920212223
  1. package smb
  2. import (
  3. "crypto/hmac"
  4. "crypto/sha256"
  5. "fmt"
  6. )
  7. func CalculateSignature(SessionKey, data []byte, dialect uint16) ([]byte, error) {
  8. //3.1.4.1 Signing An Outgoing Message
  9. if dialect == DialectSmb_2_0_2 || dialect == DialectSmb_2_1 {
  10. return ValidMAC(SessionKey, data), nil
  11. }
  12. return nil, fmt.Errorf("NA")
  13. }
  14. func ValidMAC(message, key []byte) []byte {
  15. mac := hmac.New(sha256.New, key)
  16. mac.Write(message)
  17. expectedMAC := mac.Sum(nil)
  18. return expectedMAC
  19. // return hmac.Equal(messageMAC, expectedMAC)
  20. }