package
1.0.0
Repository: https://github.com/leprosus/golang-mtls.git
Documentation: pkg.go.dev

# README

MTLS

mTLS (Mutual Transport Layer Security) - это способ обеспечения одновременной аутентифицирующим двух сторон.

Способ предназначен для решения задачи взаимной аутентификации (Mutual authentication или Two-way authentication), позволяющий работу в сети с нулевым доверием.

Пакет предоставляет методы обратимых преобразований, зависящая от пар public и private ключей двух участников коммуникации, при помощи которых генерируются секретные ключи, используемые в симметричном шифровании.

Функции пакета, структуры и их методы

Функции пакета

func NewMTLSWithPemBlocks(pubPEMBs, privPEMBs []byte) (mtls *MTLS, err error)

Функция создаёт новый MTLS шифровальщик, преобразования которого будут зависеть от public и private ключей.

func NewMTLSWithSharedKey(shared domain.SharedKey) (mtls *MTLS, err error)

Функция создаёт новый MTLS шифровальщик, преобразования которого будут зависеть от секретного ключа.

Структуры и их методы

type MTLS struct {
    cipher *cipher.Cipher
    sign   string
}

Структура содержит шифровальщик и 6 символьный признак секретного ключа.

func (m MTLS) Encode(src []byte) (dst []byte, err error)

Метод шифрует входной набор данных.

func (m MTLS) Decode(src []byte) (dst []byte, err error)

Метод дешифрует входной набор данных.

func (m MTLS) Sign() (sign string)

Метод возвращает 6 символьный признак секретного ключа.

func (m MTLS) Cipher() (cipher *cipher.Cipher)

Метод возвращает используемый в MTLS шифровальщик.

Пример использования

func main() {
    mtls, err := NewMTLSWithPemBlocks(pubPEMBs, privPEMBs)
    if err != nil {
        panic(err)
    }

    const origin = "some text"
    
    var encoded []byte
    
    encoded, err = mtls.Encode([]byte(origin))
    if err != nil {
        panic(err)
    }
    
    var decoded []byte
    
    decoded, err = mtls.Decode([]byte(encoded))
    if err != nil {
        panic(err)
    }
    
    fmt.Println(string(decoded))
}