Documentation

Overview

    Package scram implements a SCRAM-{SHA-1,etc} client per RFC5802.

    http://tools.ietf.org/html/rfc5802

    Index

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    This section is empty.

    Types

    type Client

    type Client struct {
    	// contains filtered or unexported fields
    }

      Client implements a SCRAM-* client (SCRAM-SHA-1, SCRAM-SHA-256, etc).

      A Client may be used within a SASL conversation with logic resembling:

      var in []byte
      var client = scram.NewClient(sha1.New, user, pass)
      for client.Step(in) {
              out := client.Out()
              // send out to server
              in := serverOut
      }
      if client.Err() != nil {
              // auth failed
      }
      

      func NewClient

      func NewClient(newHash func() hash.Hash, user, pass string) *Client

        NewClient returns a new SCRAM-* client with the provided hash algorithm.

        For SCRAM-SHA-256, for example, use:

        client := scram.NewClient(sha256.New, user, pass)
        

        func (*Client) Err

        func (c *Client) Err() error

          Err returns the error that occurred, or nil if there were no errors.

          func (*Client) Out

          func (c *Client) Out() []byte

            Out returns the data to be sent to the server in the current step.

            func (*Client) SetNonce

            func (c *Client) SetNonce(nonce []byte)

              SetNonce sets the client nonce to the provided value. If not set, the nonce is generated automatically out of crypto/rand on the first step.

              func (*Client) Step

              func (c *Client) Step(in []byte) bool

                Step processes the incoming data from the server and makes the next round of data for the server available via Client.Out. Step returns false if there are no errors and more data is still expected.

                Source Files