code: func NewSessionKeyPK(private *ecdsa.PrivateKey, public *ecdsa.PublicKey, salt []byte) ([]byte, error) {
  	granteePubEcies := ecies.ImportECDSAPublic(public)
  	privateKey := ecies.ImportECDSA(private)
  
  	bytes, err := privateKey.GenerateShared(granteePubEcies, 16, 16)
  	if err != nil {
  		return nil, err
  	}
  	bytes = append(salt, bytes...)
  	sessionKey := crypto.Keccak256(bytes)
  	return sessionKey, nil
  }
docs: // NewSessionKeyPK creates a new ACT Session Key using an ECDH shared secret for the given key pair and the given salt value