Home / File/ helpers.go — fiber Source File

helpers.go — fiber Source File

Architecture documentation for helpers.go, a go file in the fiber codebase. 1 imports, 0 dependents.

File go FiberMiddleware Security 1 imports 5 functions

Entity Profile

Dependency Diagram

graph LR
  fc745a0e_055f_91b6_3e1b_4c868fc3e71b["helpers.go"]
  43499e51_764c_5fc0_2678_7dd126f182d4["subtle"]
  fc745a0e_055f_91b6_3e1b_4c868fc3e71b --> 43499e51_764c_5fc0_2678_7dd126f182d4
  style fc745a0e_055f_91b6_3e1b_4c868fc3e71b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

package csrf

import (
	"crypto/subtle"
	"net/url"
	"strings"

	"github.com/gofiber/utils/v2"
)

const (
	schemeHTTP  = "http"
	schemeHTTPS = "https"
)

func compareTokens(a, b []byte) bool {
	return subtle.ConstantTimeCompare(a, b) == 1
}

func compareStrings(a, b string) bool {
	return subtle.ConstantTimeCompare(utils.UnsafeBytes(a), utils.UnsafeBytes(b)) == 1
}

func schemeAndHostMatch(schemeA, hostA, schemeB, hostB string) bool {
	normalizedSchemeA := utils.ToLower(schemeA)
	normalizedSchemeB := utils.ToLower(schemeB)

	normalizedHostA := normalizeSchemeHost(normalizedSchemeA, hostA)
	normalizedHostB := normalizeSchemeHost(normalizedSchemeB, hostB)

	return normalizedSchemeA == normalizedSchemeB && normalizedHostA == normalizedHostB
}

func normalizeSchemeHost(scheme, host string) string {
	host = utils.ToLower(host)

	defaultPort := ""
	switch scheme {
	case schemeHTTP:
		defaultPort = "80"
	case schemeHTTPS:
		defaultPort = "443"
	default:
		return host
	}

	parsedHost, err := url.Parse(scheme + "://" + host)
	if err != nil {
		return host
	}

	if port := parsedHost.Port(); port != "" {
		return host
	}

	hostname := parsedHost.Hostname()
	if hostname == "" {
		return host
	}

// ... (76 more lines)

Subdomains

Dependencies

  • subtle

Frequently Asked Questions

What does helpers.go do?
helpers.go is a source file in the fiber codebase, written in go. It belongs to the FiberMiddleware domain, Security subdomain.
What functions are defined in helpers.go?
helpers.go defines 5 function(s): compareStrings, compareTokens, normalizeOrigin, normalizeSchemeHost, schemeAndHostMatch.
What does helpers.go depend on?
helpers.go imports 1 module(s): subtle.
Where is helpers.go in the architecture?
helpers.go is located at middleware/csrf/helpers.go (domain: FiberMiddleware, subdomain: Security, directory: middleware/csrf).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free