Spec-Zone.ru › Go

Пакет subtle

  • import "crypto/subtle"
  • Обзор
  • Индекс

Обзор

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

Индекс

  • func ConstantTimeByteEq(x, y uint8) int
  • func ConstantTimeCompare(x, y []byte) int
  • func ConstantTimeCopy(v int, x, y []byte)
  • func ConstantTimeEq(x, y int32) int
  • func ConstantTimeLessOrEq(x, y int) int
  • func ConstantTimeSelect(v, x, y int) int
  • func WithDataIndependentTiming(f func())
  • func XORBytes(dst, x, y []byte) int

Файлы пакета

constant_time.go dit.go xor.go

func ConstantTimeByteEq

func ConstantTimeByteEq(x, y uint8) int

ConstantTimeByteEq возвращает 1, если x == y, и 0 в противном случае.

func ConstantTimeCompare

func ConstantTimeCompare(x, y []byte) int

ConstantTimeCompare возвращает 1, если два среза, x и y, содержат одинаковое содержимое, и 0 в противном случае. Время выполнения зависит от длины срезов и не зависит от содержимого. Если длины x и y не совпадают, функция возвращает 0 немедленно.

func ConstantTimeCopy

func ConstantTimeCopy(v int, x, y []byte)

ConstantTimeCopy копирует содержимое y в x (срез равной длины), если v == 1. Если v == 0, x остается без изменений. Поведение неопределено, если v принимает любое другое значение.

func ConstantTimeEq

func ConstantTimeEq(x, y int32) int

ConstantTimeEq возвращает 1, если x == y, и 0 в противном случае.

func ConstantTimeLessOrEq 1.2

func ConstantTimeLessOrEq(x, y int) int

ConstantTimeLessOrEq возвращает 1, если x <= y, и 0 в противном случае. Ее поведение неопределено, если x или y являются отрицательными или > 2**31 - 1.

func ConstantTimeSelect

func ConstantTimeSelect(v, x, y int) int

ConstantTimeSelect возвращает x, если v == 1, и y, если v == 0. Ее поведение неопределено, если v принимает любое другое значение.

func WithDataIndependentTiming 1.24

func WithDataIndependentTiming(f func())

WithDataIndependentTiming включает архитектурные особенности, которые гарантируют, что время выполнения конкретных инструкций не зависит от их входных данных перед выполнением f. По завершении f эти особенности отключаются.

WithDataIndependentTiming следует использовать только тогда, когда f написана для использования постоянных операций. WithDataIndependentTiming не делает переменное время кода постоянным.

WithDataIndependentTiming может заблокировать текущий сопроцесс в потоке ОС на время выполнения f. Вызовы WithDataIndependentTiming могут быть вложены.

На процессорах Arm64 с FEAT_DIT, WithDataIndependentTiming включает PSTATE.DIT. См. https://developer.arm.com/documentation/ka005181/1-0/?lang=en.

В настоящее время на всех других архитектурах WithDataIndependentTiming выполняет f немедленно без других побочных эффектов.

func XORBytes 1.20

func XORBytes(dst, x, y []byte) int

XORBytes устанавливает dst[i] = x[i] ^ y[i] для всех i < n = min(len(x), len(y)), возвращая n, количество байтов, записанных в dst.

Если dst не имеет длины не менее n, XORBytes завершается с ошибкой без записи чего-либо в dst.

dst и x или y могут перекрываться точно или вообще не перекрываться, в противном случае XORBytes может завершиться с ошибкой.

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/crypto/subtle/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API