slows/pre.c
2024-11-06 14:44:39 -05:00

86 lines
2.4 KiB
C

#include "pre.h"
#include "circ.h"
#include <assert.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct randv *auth_rand;
struct triple *auth_triples;
fp *delta;
void init_preprocess(char *file) {
char *line = NULL;
size_t len = 0;
ssize_t read;
auth_rand = NULL;
auth_triples = NULL;
FILE *fp = fopen(file, "r");
if (fp == NULL) {
printf("Preprocessing file not found.\n");
exit(1);
}
while ((read = getline(&line, &len, fp)) != -1) {
char *wname = malloc(200 * sizeof(char));
uint64_t share;
uint64_t share_mac;
uint64_t val;
int ret = sscanf(line, "rand %200s (%lu, %lu) %lu", wname, &share,
&share_mac, &val);
if (ret == 4) {
struct randv *rand_value = malloc(sizeof(struct randv));
rand_value->wname = wname;
rand_value->next = auth_rand;
rand_value->s = malloc(sizeof(struct share));
rand_value->s->s = from(share);
rand_value->s->s_mac = from(share_mac);
rand_value->value = from(val);
auth_rand = rand_value;
} else if (ret == 3) {
struct randv *rand_value = malloc(sizeof(struct randv));
rand_value->wname = wname;
rand_value->next = auth_rand;
rand_value->s = malloc(sizeof(struct share));
rand_value->s->s = from(share);
rand_value->s->s_mac = from(share_mac);
rand_value->value = NULL;
auth_rand = rand_value;
} else {
uint64_t share_a;
uint64_t share_mac_a;
uint64_t share_b;
uint64_t share_mac_b;
uint64_t share_ab;
uint64_t share_mac_ab;
int ret = sscanf(line, "triple (%lu, %lu) (%lu, %lu) (%lu, %lu)",
&share_a, &share_mac_a, &share_b, &share_mac_b,
&share_ab, &share_mac_ab);
if (ret == 6) {
struct triple *tp = malloc(sizeof(struct triple));
tp->next = auth_triples;
tp->a = malloc(sizeof(struct share));
tp->a->s = from(share_a);
tp->a->s_mac = from(share_mac_a);
tp->b = malloc(sizeof(struct share));
tp->b->s = from(share_b);
tp->b->s_mac = from(share_mac_b);
tp->ab = malloc(sizeof(struct share));
tp->ab->s = from(share_ab);
tp->ab->s_mac = from(share_mac_ab);
auth_triples = tp;
} else {
uint64_t macv;
int mac = sscanf(line, "mac %lu", &macv);
if (mac == 1) {
delta = from(macv);
}
}
}
}
}