code: func Challenge(realm string, algorithm digestAlgorithm) string {
  	entropy := make([]byte, 32)
  	rand.Read(entropy)
  
  	opaqueVal := entropy[:16]
  	nonceVal := fmt.Sprintf("%s:%x", time.Now(), entropy[16:31])
  
  	// we use MD5 to hash nonces regardless of hash used for authentication
  	opaque := hash(opaqueVal, MD5)
  	nonce := hash([]byte(nonceVal), MD5)
  
  	return fmt.Sprintf("Digest qop=auth, realm=%#v, algorithm=%s, nonce=%s, opaque=%s", sanitizeRealm(realm), algorithm, nonce, opaque)
  }
docs: // Challenge returns a WWW-Authenticate header value for the given realm and
  // algorithm. If an invalid realm or an unsupported algorithm is given