1 /*############################################################################ 2 # Copyright 2017 Intel Corporation 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 /// Definition of pairing math 17 /*! \file */ 18 19 #ifndef EPID_MEMBER_TINY_MATH_PAIRING_H_ 20 #define EPID_MEMBER_TINY_MATH_PAIRING_H_ 21 /*! 22 * \file 23 * \brief Tiny portable implementations of standard library functions 24 */ 25 /// \cond 26 typedef struct Fq12Elem Fq12Elem; 27 typedef struct EccPointFq EccPointFq; 28 typedef struct EccPointFq2 EccPointFq2; 29 typedef struct PairingState PairingState; 30 /// \endcond 31 32 /// Initializes pairing environment. 33 /*! 34 \param[out] state pairing state information. 35 */ 36 void PairingInit(PairingState* state); 37 38 /// Computes a pairing according to the Optimal Ate pairing computation 39 /*! 40 \param[out] d target, an element in GT. 41 \param[in] P an element in G1. 42 \param[in] Q an element in G2. 43 \param[in,out] state pairing state information. 44 */ 45 void PairingCompute(Fq12Elem* d, EccPointFq const* P, EccPointFq2 const* Q, 46 PairingState const* state); 47 48 #endif // EPID_MEMBER_TINY_MATH_PAIRING_H_ 49