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(
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) {
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.
static std::optional< std::pair< Classic_McEliece_Matrix, CmceColumnSelection > > create_matrix(const Classic_McEliece_Parameters ¶ms, const Classic_McEliece_Field_Ordering &field_ordering, const Classic_McEliece_Minimal_Polynomial &g)
Create the matrix H for a Classic McEliece instance given its parameters, field ordering and minimal ...
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....
static std::optional< std::pair< Classic_McEliece_Matrix, CmceColumnSelection > > create_matrix_and_apply_pivots(const Classic_McEliece_Parameters ¶ms, Classic_McEliece_Field_Ordering &field_ordering, const Classic_McEliece_Minimal_Polynomial &g)
Create the matrix H for a Classic McEliece instance given its parameters, field ordering and minimal ...
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.
constexpr void unpoison(const T *p, size_t n)
Strong< secure_bitvector, struct CmceCodeWord_ > CmceCodeWord
Represents C of decapsulation.
Strong< secure_bitvector, struct CmceErrorVector_ > CmceErrorVector
Represents e of encapsulation.