...

Package byteutil

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

Overview ▾

func GfnDouble

func GfnDouble(input []byte) []byte

GfnDouble computes 2 * input in the field of 2^n elements. The irreducible polynomial in the finite field for n=128 is x^128 + x^7 + x^2 + x + 1 (equals 0x87) Constant-time execution in order to avoid side-channel attacks

func RightXor

func RightXor(X, Y []byte) []byte

RightXor XORs smaller input (assumed Y) at the right of the larger input (assumed X)

func ShiftBytesLeft

func ShiftBytesLeft(x []byte) []byte

ShiftBytesLeft outputs the byte array corresponding to x << 1 in binary.

func ShiftNBytesLeft

func ShiftNBytesLeft(dst, x []byte, n int)

ShiftNBytesLeft puts in dst the byte array corresponding to x << n in binary.

func SliceForAppend

func SliceForAppend(in []byte, n int) (head, tail []byte)

SliceForAppend takes a slice and a requested number of bytes. It returns a slice with the contents of the given slice followed by that many bytes and a second slice that aliases into it and contains only the extra bytes. If the original slice has sufficient capacity then no allocation is performed.

func XorBytes

func XorBytes(Z, X, Y []byte)

XorBytes assumes equal input length, puts X XOR Y into Z

func XorBytesMut

func XorBytesMut(X, Y []byte)

XorBytesMut assumes equal input length, replaces X with X XOR Y