code: func ValidateSignatures(expectedAddress Hash, fragments []Trytes, bundleHash Hash, spongeFunc ...SpongeFunction) (bool, error) {
  	normalizedBundleHashFragments := make([][]int8, MaxSecurityLevel)
  	normalizeBundleHash := NormalizedBundleHash(bundleHash)
  
  	for i := 0; i < MaxSecurityLevel; i++ {
  		normalizedBundleHashFragments[i] = normalizeBundleHash[i*KeySegmentsPerFragment : (i+1)*KeySegmentsPerFragment]
  	}
  
  	digests := make(Trits, len(fragments)*HashTrinarySize)
  	for i := 0; i < len(fragments); i++ {
  		trits, err := TrytesToTrits(fragments[i])
  		if err != nil {
  			return false, err
  		}
  
  		digest, err := Digest(normalizedBundleHashFragments[i%MaxSecurityLevel], trits, spongeFunc...)
  		if err != nil {
  			return false, err
  		}
  
  		copy(digests[i*HashTrinarySize:], digest)
  	}
  
  	addressTrits, err := Address(digests, spongeFunc...)
  	if err != nil {
  		return false, err
  	}
  
  	trytes, err := TritsToTrytes(addressTrits)
  	if err != nil {
  		return false, err
  	}
  
  	return expectedAddress == trytes, nil
  }
docs: // ValidateSignatures validates the given signature fragments by checking whether the
  // digests computed from the bundle hash and fragments equal the passed address.
  // Optionally takes the SpongeFunction to use. Default is Kerl.