summaryrefslogtreecommitdiffstats
path: root/pica-registrar
diff options
context:
space:
mode:
Diffstat (limited to 'pica-registrar')
-rw-r--r--pica-registrar/PICA_registrar.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/pica-registrar/PICA_registrar.cpp b/pica-registrar/PICA_registrar.cpp
index 9ffba7b..c9ec901 100644
--- a/pica-registrar/PICA_registrar.cpp
+++ b/pica-registrar/PICA_registrar.cpp
@@ -11,14 +11,22 @@
#include <sys/errno.h>
#include <cstring>
+#include <cstdlib>
#include <map>
using namespace std;
#define PICA_REGISTRAR_PORT 2299
#define READ_BUF_SIZE 4096
+#define WRITE_BUF_SIZE 8192
+
char read_buf[READ_BUF_SIZE];
+char write_buf[WRITE_BUF_SIZE];
+
+
+unsigned int current_id = 30 000;
+
int main(int argc, char *argv[])
{
int socket, client_socket, ret, pos, disconnect_flag;
@@ -67,7 +75,7 @@ while (1)
continue;
{
- FILE *csr_temp;
+ FILE *csr_temp, *cert;
std::string filename = (string("/tmp/CSR-") + inet_ntoa(sc.sin_addr) );
@@ -91,7 +99,27 @@ while (1)
fclose(csr_temp);
- //system(openssl ca)
+ std::string cert_filename = atoi(current_id) + ".pem";
+
+ std::string sign_command = "openssl ca -config ca_config.txt -utf8 -subj /CN=" + atoi(current_id) + "\\#tester -batch -notext -out " + cert_filename + " -in " + csr_temp;
+
+ puts(sign_command.c_str);//debug
+
+ system(sign_command.c_str);
+
+ cert = fopen(cert_filename, "r");
+
+ if (!cert)
+ {
+ perror("fopen");
+ remove(filename.c_str);
+ remove(cert_filename);
+ continue;
+ }
+
+ //send
+
+ current_id++;
remove(filename.c_str);
}