| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
- *
- * Licensed under the Apache License 2.0 (the "License"). You may not use
- * this file except in compliance with the License. You can obtain a copy
- * in the file LICENSE in the source distribution or at
- * https://www.openssl.org/source/license.html
- */
- /* A 'k' by 'l' Matrix object ('k' rows and 'l' columns) containing polynomial scalars */
- struct matrix_st {
- POLY *m_poly;
- size_t k, l;
- };
- /**
- * @brief Initialize a Matrix object.
- *
- * @param m The matrix object.
- * @param polys A preallocated array of k * l polynomial blocks. |m| does not
- * own/free this.
- * @param k The number of rows
- * @param l The number of columns
- */
- static ossl_inline ossl_unused void
- matrix_init(MATRIX *m, POLY *polys, size_t k, size_t l)
- {
- m->k = k;
- m->l = l;
- m->m_poly = polys;
- }
- static ossl_inline ossl_unused void
- matrix_mult_vector(const MATRIX *a, const VECTOR *s, VECTOR *t)
- {
- ossl_ml_dsa_matrix_mult_vector(a, s, t);
- }
- static ossl_inline ossl_unused int
- matrix_expand_A(EVP_MD_CTX *g_ctx, const EVP_MD *md, const uint8_t *rho,
- MATRIX *out)
- {
- return ossl_ml_dsa_matrix_expand_A(g_ctx, md, rho, out);
- }
|