|
@@ -100,10 +100,18 @@ int main(int argc, char **argv)
|
|
{
|
|
{
|
|
int opt;
|
|
int opt;
|
|
RSA *rsa = RSA_new();
|
|
RSA *rsa = RSA_new();
|
|
|
|
+ char *task;
|
|
|
|
|
|
rsa->n = rsa->e = rsa->p = rsa->q = NULL;
|
|
rsa->n = rsa->e = rsa->p = rsa->q = NULL;
|
|
|
|
|
|
if (argc < 3) usage(EXIT_FAILURE);
|
|
if (argc < 3) usage(EXIT_FAILURE);
|
|
|
|
+ /* quick shortcut for testing factorization */
|
|
|
|
+ if (argc == 3) {
|
|
|
|
+ task = "pub";
|
|
|
|
+ BN_dec2bn(&rsa->p, argv[1]);
|
|
|
|
+ BN_dec2bn(&rsa->q, argv[2]);
|
|
|
|
+ BN_dec2bn(&rsa->e, "65537");
|
|
|
|
+ } else task = argv[1];
|
|
|
|
|
|
while ((opt = getopt(argc-1, argv+1, "d:e:N:n:p:q:")) != -1) {
|
|
while ((opt = getopt(argc-1, argv+1, "d:e:N:n:p:q:")) != -1) {
|
|
switch (opt) {
|
|
switch (opt) {
|
|
@@ -130,33 +138,10 @@ int main(int argc, char **argv)
|
|
|
|
|
|
SSL_library_init();
|
|
SSL_library_init();
|
|
|
|
|
|
- if (!strcmp(argv[1], "pub"))
|
|
|
|
|
|
+ if (!strcmp(task, "pub"))
|
|
return pubkey_generation(rsa);
|
|
return pubkey_generation(rsa);
|
|
- else if (!strcmp(argv[1], "priv"))
|
|
|
|
|
|
+ else if (!strcmp(task, "priv"))
|
|
return privkey_generation(rsa);
|
|
return privkey_generation(rsa);
|
|
else
|
|
else
|
|
usage(EXIT_FAILURE);
|
|
usage(EXIT_FAILURE);
|
|
-
|
|
|
|
- /* creating public key */
|
|
|
|
- /*
|
|
|
|
- EVP_PKEY *pk;
|
|
|
|
- pk = EVP_PKEY_new();
|
|
|
|
- EVP_PKEY_set1_RSA(pk, rsa);
|
|
|
|
- */
|
|
|
|
- /* creating dummy certificate */
|
|
|
|
- /*
|
|
|
|
- X509* crt;
|
|
|
|
- crt = X509_new();
|
|
|
|
- if (!X509_set_pubkey(crt, pk)) exit(EXIT_FAILURE);
|
|
|
|
- */
|
|
|
|
- /* PEM_write_X509(stdout, crt); */
|
|
|
|
- /*
|
|
|
|
- X509_free(crt);
|
|
|
|
- EVP_PKEY_free(pk);
|
|
|
|
- BN_free(q1);
|
|
|
|
- BN_free(p1);
|
|
|
|
- RSA_free(rsa);
|
|
|
|
-
|
|
|
|
- */
|
|
|
|
- return EXIT_SUCCESS;
|
|
|
|
}
|
|
}
|