Технология информационной безопасности Transport Layer Cryptography Protocol (TLCP)
GoTLCP использует язык Go для реализации протокола TLCP (также известного как GMSSL), который соответствует стандарту «GB/T OnClickListener 38636-2020 信息安全技术 传输层密码协议».
GoTLCP реализует протоколы уровня записей, семейство протоколов рукопожатия и вычисление ключей, поддерживает полное рукопожатие TLCP, переиспользование сессий, защиту передачи и одностороннюю аутентификацию (серверная аутентификация) и двустороннюю аутентификацию.
Поддержка шифр-кортежей и их приоритет следующие:
ECC_SM4_GCM_SM3
ECC_SM4_CBC_SM3
ECDHE_SM4_GCM_SM3
ECDHE_SM4_CBC_SM3
Перед использованием GoTLCP, обязательно ознакомьтесь с «Go TLCP Disclaimer»!
Если клонирование и предварительный просмотр документации вызывают трудности, перейдите на https://gitee.com/Trisia/gotlcp
Благодарности:
- Алгоритмы серии SM в проекте реализованы в проекте emmansun/gmsm, где оптимизация производительности алгоритмов достигается за счет использования инструкций процессора.
- Код протокола TLCP проекта вырезан из модуля golang/src/crypto/tls версии go 1.19.## Установка
Для установки и использования GoTLCP вам необходимо сначала установить Go и настроить вашу среду Go. GoTLCP требует версию Go 1.18 или выше.
Вы можете установить GoTLCP с помощью следующей команды:
go get -u gitee.com/Trisia/gotlcp
GoTLCP обеспечивает обратную совместимость API, вы можете смело обновлять библиотеку GoTLCP до последней версии.
package main
import (
"fmt"
"gitee.com/Trisia/gotlcp/tlcp"
)
func main() {
conn, err := tlcp.Dial("tcp", "127.0.0.1:8443", &tlcp.Config{InsecureSkipVerify: true})
if err != nil {
panic(err)
}
defer conn.Close()
buff := make([]byte, 516)
n, err := conn.Read(buff)
if err != nil {
panic(err)
}
fmt.Printf(">> %s\n", buff[:n])
}
Примечание: настройка клиента InsecureSkipVerify
указывает на пропуск проверки сертификата сервера.
package main
import (
"gitee.com/Trisia/gotlcp/tlcp"
"net"
)
func main() {
// Детали парсинга сертификатов представлены в полном коде ниже.
config := &tlcp.Config{
Certificates: []tlcp.Certificate{sigCert, encCert},
}
listen, err := tlcp.Listen("tcp", ":8443", config)
if err != nil {
panic(err)
}
var conn net.Conn
for {
conn, err = listen.Accept()
if err != nil {
panic(err)
}
_, _ = conn.Write([]byte("Hello Go TLCP!"))
_ = conn.Close()
}
}
```- Полный код доступен по ссылке [quickstart/server/main.go](./example/quickstart/server/main.go)
> Если вам требуется поддержка как TLCP, так и TLS протоколов, обратитесь к разделу [«GoTLCP протокол адаптер»](./pa/README.md).
## Документация
- [О TLCP протоколе](./doc/AboutTLCP.md)
- [GoTLCP цифровые сертификаты и ключи](./doc/CertAndKey.md)
- [Настройка GoTLCP клиента](./doc/ClientConfig.md)
- [Настройка GoTLCP сервера](./doc/ServerConfig.md)
- [Настройка GoTLCP HTTPS](./doc/HTTPsConfig.md)
- [GoTLCP протокол адаптер](./pa/README.md)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )