Documentation

Overview

    Package cipher collects common cryptographic constants and interfaces.

    Index

    Constants

    View Source
    const (
    	// NoOperation identified for Encrypt and Decrypter in noop package.
    	NoOperation byte = 0x20
    
    	// NACLECDH identified for Encrypt and Decrypter in nacl package using ECDH
    	// for key exchange and share secret generation.
    	NACLECDH byte = 0x2a
    
    	// AES256CBC identified for Encrypt and Decrypter in aes256cbc package.
    	AES256CBC byte = 0x2e
    )

    Variables

    View Source
    var (
    	// ErrEncrypt returns the error message if encryption failed
    	//
    	ErrEncrypt = errors.New("cipher: encryption failed") //nolint:gochecknoglobals
    	// ErrDecrypt returns the error message if decryption failed
    	//
    	ErrDecrypt = errors.New("cipher: decryption failed") //nolint:gochecknoglobals
    )

    Functions

    This section is empty.

    Types

    type Decrypter

    type Decrypter interface {
    	Decrypt(EncryptedContent) (PlainContent, error)
    }

      A Decrypter uses the PrivateKey to decrypt the supplied data.

      The decryption method used is dependant on the implementation and must check that the data can be decrypted before continuing. Returned data should be the plain bytes that were supplied originally to the Encrypter.

      type EncryptedContent

      type EncryptedContent []byte

        EncryptedContent typed version of byte array that holds encrypted data.

        Encrypt method returns the encrypted contents as EncryptedContent. Decrypt method accepts EncryptedContent as the encrypted contents to decrypt.

        type Encrypter

        type Encrypter interface {
        	Encrypt(PlainContent) (EncryptedContent, error)
        }

          An Encrypter uses the PublicKey to encrypt the supplied data.

          The encryption method used is dependant on the implementation and must be included in the response. Returned encrypted data must include what encryption method was used as the first byte. The data can be decrypted using the corresponding PrivateKey and Decrypter method.

          type KeyExchange

          type KeyExchange interface {
          	// EphemeralKey generates a private/public key pair.
          	EphemeralKey() (private crypto.PrivateKey, err error)
          
          	// SharedSecret computes a secret value from a private / public key pair.
          	// On sending a message the private key should be an ephemeralKey or generated private key,
          	// the public key is the recipient public key.
          	// On reading a message the private key is the recipient private key, the public key is the
          	// ephemeralKey or generated public key.
          	SharedSecret(privateKey crypto.PrivateKey, publicKey crypto.PublicKey) ([]byte, error)
          }

            KeyExchange agrees on a symmetric keys by performing a key exchange using asymmetric keys.

            type PlainContent

            type PlainContent []byte

              PlainContent typed version of byte array that holds plain data.

              Encrypt method returns the encrypted contents as EncryptedContent. Decrypt method accepts EncryptedContent as the encrypted contents to decrypt.

              Directories

              Path Synopsis
              Package aes256cbc implements Advanced Encryption Standard with a 256 bit key length, using Chain Block Cipher mode (AES-256-CBC).
              Package aes256cbc implements Advanced Encryption Standard with a 256 bit key length, using Chain Block Cipher mode (AES-256-CBC).
              Package ciphertest is a generated GoMock package.
              Package ciphertest is a generated GoMock package.
              Package ecdh has implementations for different asymmetric key exchange.
              Package ecdh has implementations for different asymmetric key exchange.
              Package noop is a no operation encryption algorithm for use when the message is intended to be publically readable.
              Package noop is a no operation encryption algorithm for use when the message is intended to be publically readable.