CiFEr
mat_curve.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 XLAB d.o.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef CIFER_MATRIX_CURVE_H
18 #define CIFER_MATRIX_CURVE_H
19 
20 #include <stdlib.h>
21 #include "cifer/data/mat.h"
22 #include "cifer/data/vec_curve.h"
23 
33 typedef struct cfe_mat_G1 {
34  cfe_vec_G1 *mat;
35  size_t rows;
36  size_t cols;
37 } cfe_mat_G1;
38 
42 typedef struct cfe_mat_G2 {
43  cfe_vec_G2 *mat;
44  size_t rows;
45  size_t cols;
46 } cfe_mat_G2;
47 
51 typedef struct cfe_mat_GT {
52  cfe_vec_GT *mat;
53  size_t rows;
54  size_t cols;
55 } cfe_mat_GT;
56 
64 void cfe_mat_G1_init(cfe_mat_G1 *m, size_t rows, size_t cols);
65 
73 
82 void cfe_mat_mul_G1(cfe_mat_G1 *m, cfe_mat *u);
83 
92 
100 void cfe_mat_G1_mul_vec(cfe_vec_G1 *res, cfe_mat_G1 *m, cfe_vec *mi);
101 
109 void cfe_mat_G1_free(cfe_mat_G1 *m);
110 
118 void cfe_mat_G2_init(cfe_mat_G2 *m, size_t rows, size_t cols);
119 
127 
136 void cfe_mat_mul_G2(cfe_mat_G2 *m, cfe_mat *u);
137 
145 void cfe_mat_mul_G2_mat(cfe_mat_G2 *res, cfe_mat *mi, cfe_mat_G2 *m);
146 
155 
163 void cfe_mat_G2_free(cfe_mat_G2 *m);
164 
172 void cfe_mat_GT_init(cfe_mat_GT *m, size_t rows, size_t cols);
173 
181 
189 void cfe_mat_mul_GT_mat(cfe_mat_GT *res, cfe_mat *mi, cfe_mat_GT *m);
190 
199 
207 
215 
223 void cfe_mat_GT_free(cfe_mat_GT *m);
224 
225 #endif
cfe_vec_G1
Definition: vec_curve.h:34
cfe_mat_G2_transpose
void cfe_mat_G2_transpose(cfe_mat_G2 *res, cfe_mat_G2 *m)
cfe_mat_G2_mul_vec
void cfe_mat_G2_mul_vec(cfe_vec_G2 *res, cfe_mat_G2 *m, cfe_vec *u)
cfe_mat_G2::rows
size_t rows
Definition: mat_curve.h:44
cfe_vec
Definition: vec.h:41
cfe_mat_G2_init
void cfe_mat_G2_init(cfe_mat_G2 *m, size_t rows, size_t cols)
cfe_mat_GT_pair_mat_G2
void cfe_mat_GT_pair_mat_G2(cfe_mat_GT *res, cfe_mat_G2 *m)
cfe_mat_G1_mul_vec
void cfe_mat_G1_mul_vec(cfe_vec_G1 *res, cfe_mat_G1 *m, cfe_vec *mi)
cfe_mat_G1
Definition: mat_curve.h:33
cfe_mat_GT
Definition: mat_curve.h:51
mat.h
Matrix struct and operations.
cfe_mat_G2_free
void cfe_mat_G2_free(cfe_mat_G2 *m)
cfe_mat_GT_free
void cfe_mat_GT_free(cfe_mat_GT *m)
cfe_mat_G1_init
void cfe_mat_G1_init(cfe_mat_G1 *m, size_t rows, size_t cols)
cfe_mat_GT_mul_vec
void cfe_mat_GT_mul_vec(cfe_vec_GT *res, cfe_mat_GT *m, cfe_vec *u)
cfe_mat_mul_G1
void cfe_mat_mul_G1(cfe_mat_G1 *m, cfe_mat *u)
cfe_mat_G1_free
void cfe_mat_G1_free(cfe_mat_G1 *m)
cfe_mat_G2
struct cfe_mat_G2 cfe_mat_G2
vec_curve.h
Vectors of elements of an elliptic curve struct and operations on it.
cfe_mat_mul_G2_mat
void cfe_mat_mul_G2_mat(cfe_mat_G2 *res, cfe_mat *mi, cfe_mat_G2 *m)
cfe_mat_G2::cols
size_t cols
Definition: mat_curve.h:45
cfe_mat_G2
Definition: mat_curve.h:42
cfe_mat_GT
struct cfe_mat_GT cfe_mat_GT
cfe_mat_GT_pair_mat_G1
void cfe_mat_GT_pair_mat_G1(cfe_mat_GT *res, cfe_mat_G1 *m)
cfe_mat_GT_transpose
void cfe_mat_GT_transpose(cfe_mat_GT *res, cfe_mat_GT *m)
cfe_mat_G1::rows
size_t rows
Definition: mat_curve.h:35
cfe_vec_GT
Definition: vec_curve.h:50
cfe_mat_mul_G2
void cfe_mat_mul_G2(cfe_mat_G2 *m, cfe_mat *u)
cfe_mat_GT::rows
size_t rows
Definition: mat_curve.h:53
cfe_mat_G1::cols
size_t cols
Definition: mat_curve.h:36
cfe_mat_mul_GT_mat
void cfe_mat_mul_GT_mat(cfe_mat_GT *res, cfe_mat *mi, cfe_mat_GT *m)
cfe_mat_GT_init
void cfe_mat_GT_init(cfe_mat_GT *m, size_t rows, size_t cols)
cfe_mat_mul_G1_mat
void cfe_mat_mul_G1_mat(cfe_mat_G1 *res, cfe_mat *mi, cfe_mat_G1 *m)
cfe_mat_G1
struct cfe_mat_G1 cfe_mat_G1
cfe_mat_G1_transpose
void cfe_mat_G1_transpose(cfe_mat_G1 *res, cfe_mat_G1 *m)
cfe_vec_G2
Definition: vec_curve.h:42
cfe_mat_GT::cols
size_t cols
Definition: mat_curve.h:54
cfe_mat
Definition: mat.h:44