четверг, 18 марта 2021 г.

Модули в Golang: аутентификации модулей, файлы go.sum

Модуль может иметь текстовый файл с именем go.sum в его корневом каталоге вместе с файлом go.mod. Файл go.sum содержит криптографические хеши прямых и косвенных зависимостей модуля. Когда команда go загружает файл .mod или .zip модуля в кеш модуля, она вычисляет хеш и проверяет, совпадает ли хеш с соответствующим хешем в файле go.sum главного модуля. go.sum может быть пустым или отсутствовать, если у модуля нет зависимостей или если все зависимости заменены локальными каталогами с помощью директив replace.

Каждая строка в go.sum имеет три поля, разделенных пробелами: путь к модулю, версию (возможно, заканчивающуюся на /go.mod) и хеш.

  • Путь к модулю - это имя модуля, которому принадлежит хеш.
  • Версия - это версия модуля, которому принадлежит хеш. Если версия заканчивается на /go.mod, хеш предназначен только для файла go.mod модуля; в противном случае хеш предназначен для файлов в .zip архиве модуля.
  • Столбец хеша состоит из имени алгоритма (например, h1) и криптографического хеша в кодировке base64, разделенных двоеточием (:). В настоящее время SHA-256 (h1) - единственный поддерживаемый алгоритм хеширования. Если в будущем будет обнаружена уязвимость в SHA-256, будет добавлена поддержка другого алгоритма (с именем h2 и т. д.).

Файл go.sum может содержать хеши для нескольких версий модуля. Команде go может потребоваться загрузить файлы go.mod из нескольких версий зависимости, чтобы выполнить выбор минимальной версии. go.sum также может содержать хеши для версий модуля, которые больше не нужны (например, после обновления). go mod tidy добавит недостающие хеши и удалит ненужные хеши из go.sum.


Читайте также:


Комментариев нет:

Отправить комментарий