...

Package algorithm

import "github.com/ProtonMail/go-crypto/openpgp/internal/algorithm"
Overview
Index

Overview ▾

Constants

Supported modes of operation (see RFC4880bis [EAX] and RFC7253)

const (
    AEADModeEAX = AEADMode(1)
    AEADModeOCB = AEADMode(2)
    AEADModeGCM = AEADMode(3)
)

The following constants mirror the OpenPGP standard (RFC 4880).

const (
    TripleDES = CipherFunction(2)
    CAST5     = CipherFunction(3)
    AES128    = CipherFunction(7)
    AES192    = CipherFunction(8)
    AES256    = CipherFunction(9)
)

Variables

CipherById represents the different block ciphers specified for OpenPGP. See http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-13

var CipherById = map[uint8]Cipher{
    TripleDES.Id(): TripleDES,
    CAST5.Id():     CAST5,
    AES128.Id():    AES128,
    AES192.Id():    AES192,
    AES256.Id():    AES256,
}

HashById represents the different hash functions specified for OpenPGP. See http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-14

var (
    HashById = map[uint8]Hash{
        SHA256.Id():   SHA256,
        SHA384.Id():   SHA384,
        SHA512.Id():   SHA512,
        SHA224.Id():   SHA224,
        SHA3_256.Id(): SHA3_256,
        SHA3_512.Id(): SHA3_512,
    }
)

func HashIdToHash

func HashIdToHash(id byte) (h crypto.Hash, ok bool)

HashIdToHash returns a crypto.Hash which corresponds to the given OpenPGP hash id.

func HashIdToHashWithSha1

func HashIdToHashWithSha1(id byte) (h crypto.Hash, ok bool)

HashIdToHashWithSha1 returns a crypto.Hash which corresponds to the given OpenPGP hash id, allowing sha1.

func HashIdToString

func HashIdToString(id byte) (name string, ok bool)

HashIdToString returns the name of the hash function corresponding to the given OpenPGP hash id.

func HashToHashId

func HashToHashId(h crypto.Hash) (id byte, ok bool)

HashToHashId returns an OpenPGP hash id which corresponds the given Hash.

func HashToHashIdWithSha1

func HashToHashIdWithSha1(h crypto.Hash) (id byte, ok bool)

HashToHashIdWithSha1 returns an OpenPGP hash id which corresponds the given Hash, allowing instances of SHA1

type AEADMode

AEADMode defines the Authenticated Encryption with Associated Data mode of operation.

type AEADMode uint8

func (AEADMode) New

func (mode AEADMode) New(block cipher.Block) (alg cipher.AEAD)

New returns a fresh instance of the given mode

func (AEADMode) NonceLength

func (mode AEADMode) NonceLength() int

NonceLength returns the length in bytes of nonces.

func (AEADMode) TagLength

func (mode AEADMode) TagLength() int

TagLength returns the length in bytes of authentication tags.

type Cipher

Cipher is an official symmetric key cipher algorithm. See RFC 4880, section 9.2.

type Cipher interface {
    // Id returns the algorithm ID, as a byte, of the cipher.
    Id() uint8
    // KeySize returns the key size, in bytes, of the cipher.
    KeySize() int
    // BlockSize returns the block size, in bytes, of the cipher.
    BlockSize() int
    // New returns a fresh instance of the given cipher.
    New(key []byte) cipher.Block
}

type CipherFunction

type CipherFunction uint8

func (CipherFunction) BlockSize

func (cipher CipherFunction) BlockSize() int

BlockSize returns the block size, in bytes, of cipher.

func (CipherFunction) Id

func (sk CipherFunction) Id() uint8

ID returns the algorithm Id, as a byte, of cipher.

func (CipherFunction) KeySize

func (cipher CipherFunction) KeySize() int

KeySize returns the key size, in bytes, of cipher.

func (CipherFunction) New

func (cipher CipherFunction) New(key []byte) (block cipher.Block)

New returns a fresh instance of the given cipher.

type Hash

Hash is an official hash function algorithm. See RFC 4880, section 9.4.

type Hash interface {
    // Id returns the algorithm ID, as a byte, of Hash.
    Id() uint8
    // Available reports whether the given hash function is linked into the binary.
    Available() bool
    // HashFunc simply returns the value of h so that Hash implements SignerOpts.
    HashFunc() crypto.Hash
    // New returns a new hash.Hash calculating the given hash function. New
    // panics if the hash function is not linked into the binary.
    New() hash.Hash
    // Size returns the length, in bytes, of a digest resulting from the given
    // hash function. It doesn't require that the hash function in question be
    // linked into the program.
    Size() int
    // String is the name of the hash function corresponding to the given
    // OpenPGP hash id.
    String() string
}

The following vars mirror the crypto/Hash supported hash functions.

var (
    SHA1     Hash = cryptoHash{2, crypto.SHA1}
    SHA256   Hash = cryptoHash{8, crypto.SHA256}
    SHA384   Hash = cryptoHash{9, crypto.SHA384}
    SHA512   Hash = cryptoHash{10, crypto.SHA512}
    SHA224   Hash = cryptoHash{11, crypto.SHA224}
    SHA3_256 Hash = cryptoHash{12, crypto.SHA3_256}
    SHA3_512 Hash = cryptoHash{14, crypto.SHA3_512}
)