Quantum Dice QEaaS API 1.0.5
 
Loading...
Searching...
No Matches
qdremrand.h
Go to the documentation of this file.
1/* qdremrand.h - Quantum Dice remote randomness */
2
3#include <openssl/ssl.h>
4
5#ifdef __cplusplus
6extern "C" {
7#endif
8
9
10/* ******************************************************************
11 * Section 1: This is the C interface. See next section for the C++ interface
12 */
13
17typedef struct {
18 SSL_CTX *ctx;
19 SSL *ssl;
20 unsigned rqrand;
21 unsigned pendrand;
23 int verbose;
24} QDREMRAND;
25
26// The version of the library
27extern const char qdremrand_version[];
28
38
49int qdremrand_verbose(QDREMRAND *qdr, int verbose);
50
71int qdremrand_connect(QDREMRAND *qdr, const char *rem_host, const char *rem_port, const char *peer_cert_file, const char *my_chain_file, const char *my_key_file);
72
73
94ssize_t qdremrand_getrand(QDREMRAND *qdr, unsigned char *randbuf, size_t randlen);
95
99struct qdrandom {
100 unsigned rawbits; // number of bits acquired from physical process to generate this block
101 float entropy; // estimated quantum entropy in acquired bits
102 unsigned char data[8]; // conditioned random data
103};
104
127ssize_t qdremrand_getrand_ce(QDREMRAND *qdr, struct qdrandom *randbuf, size_t randlen);
128
141
142#ifdef __cplusplus
143} // end of extern "C
144
145/* ******************************************************************
146 * Section 2: The C++ interface.
147 * The methods are equivalent to the C functions in section 1
148 */
149
167public:
169 qdremrand(&qdr_);
170 }
171 int connect(const char *rem_host, const char *rem_port, const char *peer_cert_file, const char *my_chain_file, const char *my_key_file) {
172 if (qdr_.ctx) return 1; // already connected
173 int ret = qdremrand_connect(&qdr_, rem_host, rem_port, peer_cert_file, my_chain_file, my_key_file);
174 if (ret) {
175 qdremrand_dtor(&qdr_);
176 }
177 return ret;
178 }
179 ssize_t getrand(unsigned char *randbuf, size_t randlen) {
180 if (!qdr_.ctx) return -1; // not connected
181 return qdremrand_getrand(&qdr_, randbuf, randlen);
182 }
184 if (qdr_.ctx) qdremrand_dtor(&qdr_);
185 }
186private:
187 QDREMRAND qdr_;
188};
189
190#endif
191
C++ wrapper class for the QDREMRAND functionality.
Definition qdremrand.h:166
Qdremrand()
Definition qdremrand.h:168
int connect(const char *rem_host, const char *rem_port, const char *peer_cert_file, const char *my_chain_file, const char *my_key_file)
Definition qdremrand.h:171
~Qdremrand()
Definition qdremrand.h:183
ssize_t getrand(unsigned char *randbuf, size_t randlen)
Definition qdremrand.h:179
Definition qdremrand.py:1
const char qdremrand_version[]
int qdremrand_connect(QDREMRAND *qdr, const char *rem_host, const char *rem_port, const char *peer_cert_file, const char *my_chain_file, const char *my_key_file)
Connects to the specified Quantum Dice randomness server.
ssize_t qdremrand_getrand(QDREMRAND *qdr, unsigned char *randbuf, size_t randlen)
Retrieves random data from the Quantum Dice randomness server.
int qdremrand_verbose(QDREMRAND *qdr, int verbose)
Sets the verbose flag for a QDREMRAND instance.
ssize_t qdremrand_getrand_ce(QDREMRAND *qdr, struct qdrandom *randbuf, size_t randlen)
Retrieves random data with certification and entropy information from the Quantum Dice randomness ser...
void qdremrand_dtor(QDREMRAND *qdr)
Destructor for the QDREMRAND structure.
Structure to hold connection and state information.
Definition qdremrand.h:17
int verbose
Definition qdremrand.h:23
unsigned pendrand
Definition qdremrand.h:21
unsigned rqrand
Definition qdremrand.h:20
SSL_CTX * ctx
Definition qdremrand.h:18
SSL * ssl
Definition qdremrand.h:19
int sentversion
Definition qdremrand.h:22
certified randomness
Definition qdremrand.h:99
unsigned char data[8]
Definition qdremrand.h:102
unsigned rawbits
Definition qdremrand.h:100
float entropy
Definition qdremrand.h:101