code: func Digest(normalizedBundleHashFragment []int8, signatureFragment Trits, spongeFunc ...SpongeFunction) (Trits, error) {
  	h := GetSpongeFunc(spongeFunc, kerl.NewKerl)
  	defer h.Reset()
  
  	buf := make(Trits, HashTrinarySize)
  	sig := make(Trits, KeySegmentsPerFragment*HashTrinarySize)
  
  	for i := 0; i < KeySegmentsPerFragment; i++ {
  		copy(buf, signatureFragment[i*HashTrinarySize:(i+1)*HashTrinarySize])
  
  		for j := normalizedBundleHashFragment[i] + MaxTryteValue; j > 0; j-- {
  			err := h.Absorb(buf)
  			if err != nil {
  				return nil, err
  			}
  			buf, err = h.Squeeze(HashTrinarySize)
  			if err != nil {
  				return nil, err
  			}
  			h.Reset()
  		}
  
  		copy(sig[i*HashTrinarySize:(i+1)*HashTrinarySize], buf)
  	}
  
  	if err := h.Absorb(sig); err != nil {
  		return nil, err
  	}
  
  	return h.Squeeze(HashTrinarySize)
  }
docs: // Digest computes the digest derived from the signature fragment and normalized bundle hash.
  // Optionally takes the SpongeFunction to use. Default is Kerl.