Change typesetting of Galois Field names.
[u/mdw/catacomb] / gfshare-mktab.c
CommitLineData
6c1035f5 1/* -*-c-*-
2 *
4d47e157 3 * $Id: gfshare-mktab.c,v 1.2 2000/06/18 23:12:15 mdw Exp $
6c1035f5 4 *
4d47e157 5 * Generate tables for %$\gf{2^8}$% multiplication
6c1035f5 6 *
7 * (c) 2000 Straylight/Edgeware
8 */
9
10/*----- Licensing notice --------------------------------------------------*
11 *
12 * This file is part of Catacomb.
13 *
14 * Catacomb is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU Library General Public License as
16 * published by the Free Software Foundation; either version 2 of the
17 * License, or (at your option) any later version.
18 *
19 * Catacomb is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU Library General Public License for more details.
23 *
24 * You should have received a copy of the GNU Library General Public
25 * License along with Catacomb; if not, write to the Free
26 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
27 * MA 02111-1307, USA.
28 */
29
30/*----- Revision history --------------------------------------------------*
31 *
32 * $Log: gfshare-mktab.c,v $
4d47e157 33 * Revision 1.2 2000/06/18 23:12:15 mdw
34 * Change typesetting of Galois Field names.
35 *
6c1035f5 36 * Revision 1.1 2000/06/17 10:56:30 mdw
37 * Fast but nonstandard secret sharing system.
38 *
39 */
40
41/*----- Header files ------------------------------------------------------*/
42
43#include <stdio.h>
44#include <stdlib.h>
45
46#include <mLib/bits.h>
47
48/*----- Magic numbers -----------------------------------------------------*/
49
50#define MOD 0x11d
51
52/*----- Main code ---------------------------------------------------------*/
53
54int main(int argc, char *argv[])
55{
56 octet log[256], alog[256];
57 unsigned x;
58 unsigned i;
59
60 x = 1;
61 for (i = 0; i < 255; i++) {
62 alog[i] = x;
63 log[x] = i;
64 x <<= 1;
65 if (x & 0x100)
66 x ^= MOD;
67 }
68 log[0] = 0;
69 alog[255] = 1;
70
71 fputs("\
72/* -*-c-*-\n\
73 *\n\
4d47e157 74 * Log tables for secret sharing in %$\gf{2^8}$% [generated]\n\
6c1035f5 75 */\n\
76\n\
77#ifndef GFSHARE_TAB_H\n\
78#define GFSHARE_TAB_H\n\
79\n\
80#define GFSHARE_LOG { \\\n\
81 ", stdout);
82
83 for (i = 0; i < 256; i++) {
84 printf("0x%02x", log[i]);
85 if (i == 255)
86 puts(" \\\n}\n");
87 else if (i % 8 == 7)
88 fputs(", \\\n ", stdout);
89 else
90 fputs(", ", stdout);
91 }
92
93 fputs("\
94#define GFSHARE_EXP { \\\n\
95 ", stdout);
96
97 for (i = 0; i < 510; i++) {
98 printf("0x%02x", alog[i % 255]);
99 if (i == 509)
100 puts(" \\\n}\n");
101 else if (i % 8 == 7)
102 fputs(", \\\n ", stdout);
103 else
104 fputs(", ", stdout);
105 }
106
107 /* --- Done --- */
108
109 fputs("#endif\n", stdout);
110
111 if (fclose(stdout)) {
112 fprintf(stderr, "error writing data\n");
113 exit(EXIT_FAILURE);
114 }
115
116 return (0);
117}
118
119/*----- That's all, folks -------------------------------------------------*/