Sha256: 3b9e178f7e48c3ac62d29b6fae17a5bf4586c82f511adcd771d886dcaab6a305

Contents?: true

Size: 1.62 KB

Versions: 16

Compression:

Stored size: 1.62 KB

Contents

package jwt

// Implements the none signing method.  This is required by the spec
// but you probably should never use it.
var SigningMethodNone *signingMethodNone

const UnsafeAllowNoneSignatureType unsafeNoneMagicConstant = "none signing method allowed"

var NoneSignatureTypeDisallowedError error

type signingMethodNone struct{}
type unsafeNoneMagicConstant string

func 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 key
func (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 key
func (m *signingMethodNone) Sign(signingString string, key interface{}) (string, error) {
	if _, ok := key.(unsafeNoneMagicConstant); ok {
		return "", nil
	}
	return "", NoneSignatureTypeDisallowedError
}

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
ruby_snowflake_client-1.3.7 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.3.6 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.3.5 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.3.4 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.3.4.pre.debug ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.3.3.pre.debug ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.3.2 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.3.1 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.3.0 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.2.1 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.2.0 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.1.1 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.1.0 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.0.2 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.0.1 ext/vendor/github.com/form3tech-oss/jwt-go/none.go
ruby_snowflake_client-1.0.0 ext/vendor/github.com/form3tech-oss/jwt-go/none.go