code: func (j *JWS) GetKeyAuthorization(token string) (string, error) {
  	var publicKey crypto.PublicKey
  	switch k := j.privKey.(type) {
  	case *ecdsa.PrivateKey:
  		publicKey = k.Public()
  	case *rsa.PrivateKey:
  		publicKey = k.Public()
  	}
  
  	// Generate the Key Authorization for the challenge
  	jwk := &jose.JSONWebKey{Key: publicKey}
  
  	thumbBytes, err := jwk.Thumbprint(crypto.SHA256)
  	if err != nil {
  		return "", err
  	}
  
  	// unpad the base64URL
  	keyThumb := base64.RawURLEncoding.EncodeToString(thumbBytes)
  
  	return token + "." + keyThumb, nil
  }
docs: // GetKeyAuthorization Gets the key authorization for a token.