thistle-sdk
Thistle SDK documentation
Loading...
Searching...
No Matches
prio.c File Reference
#include <stdio.h>
#include <string.h>
#include "../target/prio.h"

Functions

int main ()
 

Function Documentation

◆ main()

int main ( )
15 {
16 const char * s_priv_key1 = "BIl6j+J6dYttxALdjISDv6ZI4/VWVEhUzaS05LgrsfswmbLOgN"
17 "t9HUC2E0w+9RqZx3XMkdEHBHfNuCSMpOwofVSq3TfyKwn0NrftKisKKVSaTOt5seJ67P5QL4hxgPWvxw==";
18 const char * s_priv_key2 = "BNNOqoU54GPo+1gTPv+hCgA9U2ZCKd76yOMrWa1xTWgeb4LhF"
19 "LMQIQoRwDVaW64g/WTdcxT4rDULoycUNFB60LER6hPEHg/ObBnRPV1rwS3nj9Bj0tbjVPPyL9p8QW8B+w==";
20
21 prio_private_key * priv_key1 = prio_private_key_new_from_base64(s_priv_key1, strlen(s_priv_key1) + 1);
22 prio_private_key * priv_key2 = prio_private_key_new_from_base64(s_priv_key2, strlen(s_priv_key2) + 1);
23
26
27 fprintf(stderr, "keys parsed\n");
28
29 // const size_t dim = 8;
30
31 {
32 uint32_t data1[] = {0, 0, 1, 0, 0, 0, 0, 0};
33 uint32_t data2[] = {0, 0, 1, 0, 0, 0, 0, 0};
34
35 prio_client_field_32 * client1 = prio_client_field_32_new(8, pub_key1, pub_key2);
36 prio_client_field_32 * client2 = prio_client_field_32_new(8, pub_key1, pub_key2);
37
38 prio_vector * output1;
39 prio_vector * output2;
40
41 prio_client_field_32_encode_simple(client1, data1, sizeof(data1)/sizeof(data1[0]), &output1, &output2);
42
43 fprintf(stderr, "client field encoded\n");
44
45 const uint8_t * data;
46 size_t data_len = 0;
47 prio_vector_get(output1, &data, &data_len);
48 prio_vector_free(output1);
49
50 prio_vector_get(output2, &data, &data_len);
51 prio_vector_free(output2);
52
53 prio_client_field_32_encode_simple(client2, data2, sizeof(data2)/sizeof(data2[0]), &output1, &output2);
54 prio_vector_get(output1, &data, &data_len);
55 prio_vector_free(output1);
56
57 prio_vector_get(output2, &data, &data_len);
58 prio_vector_free(output2);
59
62 }
63
64 {
65 uint64_t data1[] = {0, 0, 1, 0, 0, 0, 0, 0};
66 uint64_t data2[] = {0, 0, 1, 0, 0, 0, 0, 0};
67
68 prio_client_field_64 * client1 = prio_client_field_64_new(8, pub_key1, pub_key2);
69 prio_client_field_64 * client2 = prio_client_field_64_new(8, pub_key1, pub_key2);
70
71 prio_vector * output1;
72 prio_vector * output2;
73
74 prio_client_field_64_encode_simple(client1, data1, sizeof(data1)/sizeof(data1[0]), &output1, &output2);
75
76 fprintf(stderr, "client field encoded\n");
77
78 const uint8_t * data;
79 size_t data_len = 0;
80 prio_vector_get(output1, &data, &data_len);
81 prio_vector_free(output1);
82
83 prio_vector_get(output2, &data, &data_len);
84 prio_vector_free(output2);
85
86 prio_client_field_64_encode_simple(client2, data2, sizeof(data2)/sizeof(data2[0]), &output1, &output2);
87 prio_vector_get(output1, &data, &data_len);
88 prio_vector_free(output1);
89
90 prio_vector_get(output2, &data, &data_len);
91 prio_vector_free(output2);
92
95 }
96
97 fprintf(stderr, "done\n");
98
99 prio_public_key_free(pub_key1);
100 prio_public_key_free(pub_key2);
101 prio_private_key_free(priv_key1);
102 prio_private_key_free(priv_key2);
103}
struct prio_private_key * prio_private_key_new_from_base64(const char *key, size_t key_length)
struct prio_private_key prio_private_key
Definition: prio.h:9
void prio_vector_get(struct prio_vector *ptr, const uint8_t **data, size_t *size)
struct prio_client_field_64 * prio_client_field_64_new(size_t dim, const struct prio_public_key *pub_key1, const struct prio_public_key *pub_key2)
struct prio_public_key * prio_public_key_new_from_private_key(const struct prio_private_key *private_key)
void prio_private_key_free(struct prio_private_key *key)
void prio_client_field_32_encode_simple(struct prio_client_field_32 *client, const uint32_t *data, size_t data_len, struct prio_vector **output1, struct prio_vector **output2)
struct prio_client_field_32 prio_client_field_32
Definition: prio.h:3
struct prio_client_field_32 * prio_client_field_32_new(size_t dim, const struct prio_public_key *pub_key1, const struct prio_public_key *pub_key2)
struct prio_client_field_64 prio_client_field_64
Definition: prio.h:5
struct prio_vector prio_vector
Definition: prio.h:13
struct prio_public_key prio_public_key
Definition: prio.h:11
void prio_public_key_free(struct prio_public_key *key)
void prio_client_field_64_encode_simple(struct prio_client_field_64 *client, const uint64_t *data, size_t data_len, struct prio_vector **output1, struct prio_vector **output2)
void prio_client_field_32_free(struct prio_client_field_32 *client)
void prio_vector_free(struct prio_vector *ptr)
void prio_client_field_64_free(struct prio_client_field_64 *client)

References prio_client_field_32_encode_simple(), prio_client_field_32_free(), prio_client_field_32_new(), prio_client_field_64_encode_simple(), prio_client_field_64_free(), prio_client_field_64_new(), prio_private_key_free(), prio_private_key_new_from_base64(), prio_public_key_free(), prio_public_key_new_from_private_key(), prio_vector_free(), and prio_vector_get().