/*############################################################################ # Copyright 2016-2017 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ############################################################################*/ #ifndef EPID_COMMON_BITSUPPLIER_H_ #define EPID_COMMON_BITSUPPLIER_H_ /*! * \file * \brief Random data supplier interface. */ #if defined(_WIN32) || defined(_WIN64) #define __STDCALL __stdcall #else #define __STDCALL #endif /// Generates random data. /*! The SDK provides the ::BitSupplier as a function prototype so that you will know the requirements for your own implementation of a random number generator. You need to pass a pointer to your implementation of the random number generator into methods that require it. For an example of how a BitSupplier is created, see the `signmsg` example. \param[out] rand_data destination buffer for random data generated by BitSupplier. The buffer will receive `num_bits` of random data. \param[in] num_bits specifies the size of the random data, in bits, to be generated. \param[in] user_data user data that will be passed to the random number generator. The usage of this data is specific to the implementation of the BitSupplier. For example, this could be used to pass a pointer to a data structure that maintains state across calls to your BitSupplier. \returns zero on success and non-zero value on error. \ingroup EpidCommon */ typedef int(__STDCALL* BitSupplier)(unsigned int* rand_data, int num_bits, void* user_data); #endif // EPID_COMMON_BITSUPPLIER_H_