Home | History | Annotate | Download | only in 1.1
      1 /*############################################################################
      2   # Copyright 2016 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 
     17 /*!
     18  * \file
     19  * \brief Verifier C++ wrapper interface.
     20  */
     21 #ifndef EPID_COMMON_TESTHELPER_1_1_VERIFIER_WRAPPER_TESTHELPER_H_
     22 #define EPID_COMMON_TESTHELPER_1_1_VERIFIER_WRAPPER_TESTHELPER_H_
     23 
     24 extern "C" {
     25 #include "epid/verifier/1.1/api.h"
     26 }
     27 
     28 /// C++ Wrapper to manage memory for VerifierCtx via RAII
     29 class Epid11VerifierCtxObj {
     30  public:
     31   /// Create an Epid11VerifierCtx
     32   explicit Epid11VerifierCtxObj(Epid11GroupPubKey const& pub_key);
     33   /// Create an Epid11VerifierCtx given precomputation blob
     34   Epid11VerifierCtxObj(Epid11GroupPubKey const& pub_key,
     35                        Epid11VerifierPrecomp const& precomp);
     36 
     37   // This class instances are not meant to be copied.
     38   // Explicitly delete copy constructor and assignment operator.
     39   Epid11VerifierCtxObj(const Epid11VerifierCtxObj&) = delete;
     40   Epid11VerifierCtxObj& operator=(const Epid11VerifierCtxObj&) = delete;
     41 
     42   /// Destroy the Epid11VerifierCtx
     43   ~Epid11VerifierCtxObj();
     44   /// get a pointer to the stored Epid11VerifierCtx
     45   Epid11VerifierCtx* ctx() const;
     46   /// cast operator to get the pointer to the stored Epid11VerifierCtx
     47   operator Epid11VerifierCtx*() const;
     48   /// const cast operator to get the pointer to the stored Epid11VerifierCtx
     49   operator const Epid11VerifierCtx*() const;
     50 
     51  private:
     52   /// The stored VerifierCtx
     53   Epid11VerifierCtx* ctx_;
     54 };
     55 
     56 #endif  // EPID_COMMON_TESTHELPER_1_1_VERIFIER_WRAPPER_TESTHELPER_H_
     57