code: func SignPSS(rand io.Reader, priv *PrivateKey, hash crypto.Hash, hashed []byte, opts *PSSOptions) (s []byte, err error) {
  	saltLength := opts.saltLength()
  	switch saltLength {
  	case PSSSaltLengthAuto:
  		saltLength = (priv.N.BitLen()+7)/8 - 2 - hash.Size()
  	case PSSSaltLengthEqualsHash:
  		saltLength = hash.Size()
  	}
  
  	if opts != nil && opts.Hash != 0 {
  		hash = opts.Hash
  	}
  
  	salt := make([]byte, saltLength)
  	if _, err = io.ReadFull(rand, salt); err != nil {
  		return
  	}
  	return signPSSWithSalt(rand, priv, hash, hashed, salt)
  }
docs: // SignPSS calculates the signature of hashed using RSASSA-PSS [1].
  // Note that hashed must be the result of hashing the input message using the
  // given hash function. The opts argument may be nil, in which case sensible
  // defaults are used.