| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | package jwt// Implements the none signing method.  This is required by the spec// but you probably should never use it.var SigningMethodNone *signingMethodNoneconst UnsafeAllowNoneSignatureType unsafeNoneMagicConstant = "none signing method allowed"var NoneSignatureTypeDisallowedError errortype signingMethodNone struct{}type unsafeNoneMagicConstant stringfunc init() {	SigningMethodNone = &signingMethodNone{}	NoneSignatureTypeDisallowedError = NewValidationError("'none' signature type is not allowed", ValidationErrorSignatureInvalid)	RegisterSigningMethod(SigningMethodNone.Alg(), func() SigningMethod {		return SigningMethodNone	})}func (m *signingMethodNone) Alg() string {	return "none"}// Only allow 'none' alg type if UnsafeAllowNoneSignatureType is specified as the keyfunc (m *signingMethodNone) Verify(signingString, signature string, key interface{}) (err error) {	// Key must be UnsafeAllowNoneSignatureType to prevent accidentally	// accepting 'none' signing method	if _, ok := key.(unsafeNoneMagicConstant); !ok {		return NoneSignatureTypeDisallowedError	}	// If signing method is none, signature must be an empty string	if signature != "" {		return NewValidationError(			"'none' signing method with non-empty signature",			ValidationErrorSignatureInvalid,		)	}	// Accept 'none' signing method.	return nil}// Only allow 'none' signing if UnsafeAllowNoneSignatureType is specified as the keyfunc (m *signingMethodNone) Sign(signingString string, key interface{}) (string, error) {	if _, ok := key.(unsafeNoneMagicConstant); ok {		return "", nil	}	return "", NoneSignatureTypeDisallowedError}
 |