10#ifndef BOTAN_CMCE_MATRIX_H_
11#define BOTAN_CMCE_MATRIX_H_
13#include <botan/internal/bitvector.h>
14#include <botan/internal/cmce_field_ordering.h>
15#include <botan/internal/cmce_parameters.h>
16#include <botan/internal/cmce_poly.h>
17#include <botan/internal/cmce_types.h>
45 static std::optional<std::pair<Classic_McEliece_Matrix, CmceColumnSelection>> create_matrix(
66 static std::optional<std::pair<Classic_McEliece_Matrix, CmceColumnSelection>> create_matrix_and_apply_pivots(
77 const std::vector<uint8_t>&
bytes()
const {
return m_mat_bytes; }
85 m_mat_bytes(std::move(mat_bytes)) {
92 for(
size_t row = 0; row < params.
pk_no_rows(); ++row) {
94 CT::unpoison(padded_byte);
112 const std::vector<uint8_t> m_mat_bytes;
#define BOTAN_ASSERT_NOMSG(expr)
#define BOTAN_ARG_CHECK(expr, msg)
Represents a field ordering for the Classic McEliece cryptosystem.
Representation of the binary Classic McEliece matrix H, with H = (I_mt | T).
constexpr void _const_time_unpoison() const
const std::vector< uint8_t > & bytes() const
The bytes of the submatrix T, with H=(I_mt, T) as defined in Classic McEliece ISO Section 9....
Classic_McEliece_Matrix(const Classic_McEliece_Parameters ¶ms, std::vector< uint8_t > mat_bytes)
Create a Classic_McEliece_Matrix from bytes.
Representation of a minimal polynomial in GF(q)[y].
size_t pk_no_rows() const
The number of rows in the public key's matrix.
size_t pk_row_size_bytes() const
The number of bytes for each row in the public key's matrix.
size_t pk_no_cols() const
The number of columns in the public key's matrix.
size_t pk_size_bytes() const
The number of bytes for the public key.