[][src]Module polyval::field

Implementation of POLYVAL's finite field.

From RFC 8452 Section 3 which defines POLYVAL for use in AES-GCM_SIV:

"POLYVAL, like GHASH (the authenticator in AES-GCM; ...), operates in a binary field of size 2^128. The field is defined by the irreducible polynomial x^128 + x^127 + x^126 + x^121 + 1."

This implementation provides multiplication over GF(2^128) optimized using Shay Gueron's PCLMULQDQ-based techniques.

For more information on how these techniques work, see: https://blog.quarkslab.com/reversing-a-finite-field-multiplication-optimization.html

Structs

Element

POLYVAL field element.

Constants

FIELD_SIZE

Size of GF(2^128) in bytes (16-bytes).

Type Definitions

Block

POLYVAL field element bytestrings (16-bytes)