| /*############################################################################ |
| # 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_ |