code: func signPSSWithSalt(rand io.Reader, priv *PrivateKey, hash crypto.Hash, hashed, salt []byte) (s []byte, err error) {
  	nBits := priv.N.BitLen()
  	em, err := emsaPSSEncode(hashed, nBits-1, salt, hash.New())
  	if err != nil {
  		return
  	}
  	m := new(big.Int).SetBytes(em)
  	c, err := decryptAndCheck(rand, priv, m)
  	if err != nil {
  		return
  	}
  	s = make([]byte, (nBits+7)/8)
  	copyWithLeftPad(s, c.Bytes())
  	return
  }
docs: // signPSSWithSalt calculates the signature of hashed using PSS [1] with specified salt.
  // Note that hashed must be the result of hashing the input message using the
  // given hash function. salt is a random sequence of bytes whose length will be
  // later used to verify the signature.