digest

package module
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Mar 26, 2024 License: Apache-2.0 Imports: 10 Imported by: 44

README

Go Reference GO tests golangci-lint

Golang HTTP Digest Authentication

Overview

This is a fork of the (unmaintained) code.google.com/p/mlab-ns2/gae/ns/digest package. There's a descriptor leak in the original package, so this fork was created to patch the leak.

Update 2020

This is a fork of the now unmaintained fork of digest. This implementation now supports the SHA-256 algorithm which was added as part of rfc 7616.

Usage

t := NewTransport("myUserName", "myP@55w0rd")
req, err := http.NewRequest("GET", "http://notreal.com/path?arg=1", nil)
if err != nil {
	return err
}
resp, err := t.RoundTrip(req)
if err != nil {
	return err
}

Or it can be used as a client:

c, err := t.Client()
if err != nil {
	return err
}
resp, err := c.Get("http://notreal.com/path?arg=1")
if err != nil {
	return err
}

Contributing

Contributions are welcome!

The code is linted with golangci-lint. This library also defines git hooks that format and lint the code.

Before submitting a PR, please run make setup link-git-hooks to set up your local development environment.

Original Authors

License

Apache 2.0

Documentation

Index

Constants

View Source
const (
	MsgAuth   string = "auth"
	AlgMD5    string = "MD5"
	AlgSha256 string = "SHA-256"
)

Variables

View Source
var (
	ErrNilTransport      = errors.New("transport is nil")
	ErrBadChallenge      = errors.New("challenge is bad")
	ErrAlgNotImplemented = errors.New("alg not implemented")
)

Functions

This section is empty.

Types

type Transport

type Transport struct {
	Username  string
	Password  string
	Transport http.RoundTripper
}

Transport is an implementation of http.RoundTripper that takes care of http digest authentication.

func NewTransport

func NewTransport(username, password string) *Transport

NewTransport creates a new digest transport using the http.DefaultTransport.

func NewTransportWithHTTPRoundTripper added in v1.1.0

func NewTransportWithHTTPRoundTripper(username, password string, transport http.RoundTripper) *Transport

NewTransportWithHTTPRoundTripper creates a new digest transport using the supplied http.RoundTripper interface.

func NewTransportWithHTTPTransport added in v1.0.5

func NewTransportWithHTTPTransport(username, password string, transport *http.Transport) *Transport

NewTransportWithHTTPTransport creates a new digest transport using the supplied http.Transport.

func (*Transport) Client

func (t *Transport) Client() (*http.Client, error)

Client returns an HTTP client that uses the digest transport.

func (*Transport) RoundTrip

func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error)

RoundTrip makes a request expecting a 401 response that will require digest authentication. It creates the credentials it needs and makes a follow-up request.

Jump to

Keyboard shortcuts

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