summaryrefslogtreecommitdiffstats
path: root/moon-abe/cpabe-0.11/keygen.c
diff options
context:
space:
mode:
Diffstat (limited to 'moon-abe/cpabe-0.11/keygen.c')
-rw-r--r--moon-abe/cpabe-0.11/keygen.c133
1 files changed, 0 insertions, 133 deletions
diff --git a/moon-abe/cpabe-0.11/keygen.c b/moon-abe/cpabe-0.11/keygen.c
deleted file mode 100644
index eb26ad3e..00000000
--- a/moon-abe/cpabe-0.11/keygen.c
+++ /dev/null
@@ -1,133 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <strings.h>
-#include <glib.h>
-#include <pbc.h>
-#include <pbc_random.h>
-
-#include "bswabe.h"
-#include "common.h"
-#include "policy_lang.h"
-
-char* usage =
-"Usage: cpabe-keygen [OPTION ...] PUB_KEY MASTER_KEY ATTR [ATTR ...]\n"
-"\n"
-"Generate a key with the listed attributes using public key PUB_KEY and\n"
-"master secret key MASTER_KEY. Output will be written to the file\n"
-"\"priv_key\" unless the -o option is specified.\n"
-"\n"
-"Attributes come in two forms: non-numerical and numerical. Non-numerical\n"
-"attributes are simply any string of letters, digits, and underscores\n"
-"beginning with a letter.\n"
-"\n"
-"Numerical attributes are specified as `attr = N', where N is a non-negative\n"
-"integer less than 2^64 and `attr' is another string. The whitespace around\n"
-"the `=' is optional. One may specify an explicit length of k bits for the\n"
-"integer by giving `attr = N#k'. Note that any comparisons in a policy given\n"
-"to cpabe-enc(1) must then specify the same number of bits, e.g.,\n"
-"`attr > 5#12'.\n"
-"\n"
-"The keywords `and', `or', and `of', are reserved for the policy language\n"
-"of cpabe-enc (1) and may not be used for either type of attribute.\n"
-"\n"
-"Mandatory arguments to long options are mandatory for short options too.\n\n"
-" -h, --help print this message\n\n"
-" -v, --version print version information\n\n"
-" -o, --output FILE write resulting key to FILE\n\n"
-" -d, --deterministic use deterministic \"random\" numbers\n"
-" (only for debugging)\n\n"
-"";
-
-/*
- TODO ensure we don't give out the same attribute more than once (esp
- as different numerical values)
-*/
-
-char* pub_file = 0;
-char* msk_file = 0;
-char** attrs = 0;
-
-char* out_file = "priv_key";
-
-gint
-comp_string( gconstpointer a, gconstpointer b)
-{
- return strcmp(a, b);
-}
-
-void
-parse_args( int argc, char** argv )
-{
- int i;
- GSList* alist;
- GSList* ap;
- int n;
-
- alist = 0;
- for( i = 1; i < argc; i++ )
- if( !strcmp(argv[i], "-h") || !strcmp(argv[i], "--help") )
- {
- printf("%s", usage);
- exit(0);
- }
- else if( !strcmp(argv[i], "-v") || !strcmp(argv[i], "--version") )
- {
- printf(CPABE_VERSION, "-keygen");
- exit(0);
- }
- else if( !strcmp(argv[i], "-o") || !strcmp(argv[i], "--output") )
- {
- if( ++i >= argc )
- die(usage);
- else
- out_file = argv[i];
- }
- else if( !strcmp(argv[i], "-d") || !strcmp(argv[i], "--deterministic") )
- {
- pbc_random_set_deterministic(0);
- }
- else if( !pub_file )
- {
- pub_file = argv[i];
- }
- else if( !msk_file )
- {
- msk_file = argv[i];
- }
- else
- {
- parse_attribute(&alist, argv[i]);
- }
-
- if( !pub_file || !msk_file || !alist )
- die(usage);
-
- alist = g_slist_sort(alist, comp_string);
- n = g_slist_length(alist);
-
- attrs = malloc((n + 1) * sizeof(char*));
-
- i = 0;
- for( ap = alist; ap; ap = ap->next )
- attrs[i++] = ap->data;
- attrs[i] = 0;
-}
-
-int
-main( int argc, char** argv )
-{
- bswabe_pub_t* pub;
- bswabe_msk_t* msk;
- bswabe_prv_t* prv;
-
- parse_args(argc, argv);
-
- pub = bswabe_pub_unserialize(suck_file(pub_file), 1);
- msk = bswabe_msk_unserialize(pub, suck_file(msk_file), 1);
-
- prv = bswabe_keygen(pub, msk, attrs);
- spit_file(out_file, bswabe_prv_serialize(prv), 1);
-
- return 0;
-}