pkcs11-keygen.c revision f89a9bcf1c02b9b350b8d29e47b48fdc0d334d2a
/* pkcs11-keygen - pkcs11 rsa key generator
*
* create RSASHA1 key in the keystore of an SCA6000
* The calculation of key tag is left to the script
* that converts the key into a DNSKEY RR and inserts
* it into a zone file.
*
* usage:
* pkcs11-keygen [-P] [-m module] [-s slot] [-e] -b keysize
* -l label [-i id] [-p pin]
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include "cryptoki.h"
#ifdef WIN32
#include "win32.c"
#else
#ifndef FORCE_STATIC_PROVIDER
#include "unix.c"
#endif
#endif
#define getpassphrase(x) getpass(x)
#endif
/* Define static key template values */
int
{
CK_SLOT_ID slot = 0;
CK_ULONG modulusbits = 0;
int error = 0;
int c, errflg = 0;
int hide = 1;
int idlen = 0;
unsigned long id = 0;
/* Set search template */
CK_ATTRIBUTE search_template[] = {
};
};
};
extern char *optarg;
extern int optopt;
switch (c) {
case 'P':
hide = 0;
break;
case 'm':
break;
case 's':
break;
case 'e':
expsize = 5;
break;
case 'b':
break;
case 'l':
break;
case 'i':
idlen = 4;
break;
case 'p':
break;
case ':':
errflg++;
break;
case '?':
default:
errflg++;
}
}
"usage: pkcs11-keygen "
"[-P] [-m module] [-s slot] [-e] -b keysize\n"
" "
"-l label [-i id] [-p pin]\n");
exit(2);
}
/* Set public exponent to F4 or F5 */
public_exponent[0] = 0x01;
if (expsize == 3)
else {
}
/* Set up mechanism for generating key pair */
genmech.ulParameterLen = 0;
if (idlen == 0) {
} else if (id <= 0xffff) {
idlen = 2;
} else {
}
/* Initialize the CRYPTOKI library */
if (rv == 0xfe)
"Can't load or link module \"%s\"\n",
else
exit(1);
}
/* Open a session on the slot found */
error = 1;
goto exit_program;
}
/* Login to the Token (Keystore) */
if (!pin)
error = 1;
goto exit_session;
}
/* check if a key with the same id already exists */
error = 1;
goto exit_session;
}
error = 1;
goto exit_search;
}
if (ulObjectCount != 0) {
error = 1;
goto exit_search;
}
/* Set attributes if the key is not to be hidden */
if (!hide) {
}
&publickey, &privatekey);
error = 1;
}
error = 1;
}
(void) C_CloseSession(hSession);
(void) C_Finalize(NULL_PTR);
}