crl

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 14, 2025 License: Apache-2.0 Imports: 9 Imported by: 3

Documentation

Overview

Package crl provides Fetcher interface with its implementation, and the Cache interface.

Index

Constants

This section is empty.

Variables

View Source
var ErrCacheMiss = errors.New("cache miss")

ErrCacheMiss is returned when a cache miss occurs.

Functions

This section is empty.

Types

type Bundle

type Bundle struct {
	// BaseCRL is the parsed base CRL
	BaseCRL *x509.RevocationList

	// DeltaCRL is the parsed delta CRL
	//
	// TODO: support delta CRL https://github.com/notaryproject/notation-core-go/issues/228
	// It will always be nil until we support delta CRL
	DeltaCRL *x509.RevocationList
}

Bundle is a collection of CRLs, including base and delta CRLs

type Cache

type Cache interface {
	// Get retrieves the CRL bundle with the given url
	//
	// url is the key to retrieve the CRL bundle
	//
	// if the key does not exist or the content is expired, return ErrCacheMiss.
	Get(ctx context.Context, url string) (*Bundle, error)

	// Set stores the CRL bundle with the given url
	//
	// url is the key to store the CRL bundle
	// bundle is the CRL collections to store
	Set(ctx context.Context, url string, bundle *Bundle) error
}

Cache is an interface that specifies methods used for caching

type Fetcher

type Fetcher interface {
	// Fetch retrieves the CRL from the given URL.
	Fetch(ctx context.Context, url string) (*Bundle, error)
}

Fetcher is an interface that specifies methods used for fetching CRL from the given URL

type HTTPFetcher

type HTTPFetcher struct {
	// Cache stores fetched CRLs and reuses them until the CRL reaches the
	// NextUpdate time.
	// If Cache is nil, no cache is used.
	Cache Cache

	// DiscardCacheError specifies whether to discard any error on cache.
	//
	// ErrCacheMiss is not considered as an failure and will not be returned as
	// an error if DiscardCacheError is false.
	DiscardCacheError bool
	// contains filtered or unexported fields
}

HTTPFetcher is a Fetcher implementation that fetches CRL from the given URL

func NewHTTPFetcher

func NewHTTPFetcher(httpClient *http.Client) (*HTTPFetcher, error)

NewHTTPFetcher creates a new HTTPFetcher with the given HTTP client

func (*HTTPFetcher) Fetch

func (f *HTTPFetcher) Fetch(ctx context.Context, url string) (*Bundle, error)

Fetch retrieves the CRL from the given URL

If cache is not nil, try to get the CRL from the cache first. On failure (e.g. cache miss), it will download the CRL from the URL and store it to the cache.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL