summaryrefslogtreecommitdiffstats
path: root/src/initconf.c
diff options
context:
space:
mode:
authorGravatar Matt Colyer2008-08-14 22:35:41 -0700
committerGravatar Matt Colyer2008-08-14 22:35:41 -0700
commite8e19884cee5aeb1e564e2f842920a4c62aa7e81 (patch)
tree8fd93c646d17b8714dbdb522ef430d55234c11ca /src/initconf.c
parent7ea2be3206b949c03288d5c2707ab2d370ccea09 (diff)
downloadlibimobiledevice-e8e19884cee5aeb1e564e2f842920a4c62aa7e81.tar.gz
libimobiledevice-e8e19884cee5aeb1e564e2f842920a4c62aa7e81.tar.bz2
Fixes initconf.
Diffstat (limited to 'src/initconf.c')
-rw-r--r--src/initconf.c42
1 files changed, 24 insertions, 18 deletions
diff --git a/src/initconf.c b/src/initconf.c
index 795b4ac..b4952e7 100644
--- a/src/initconf.c
+++ b/src/initconf.c
@@ -52,10 +52,13 @@ char *lockdownd_generate_hostid() {
52} 52}
53 53
54int main(int argc, char *argv[]) { 54int main(int argc, char *argv[]) {
55
56 printf("This program generates keys required to connect with the iPhone\n");
57 printf("It only needs to be run ONCE.\n\n");
58 printf("Additionally it may take several minutes to run, please be patient.\n\n");
55 59
56 gnutls_global_init(); 60 gnutls_global_init();
57 61
58 size_t size;
59 char* host_id = NULL; 62 char* host_id = NULL;
60 gnutls_x509_privkey_t root_privkey; 63 gnutls_x509_privkey_t root_privkey;
61 gnutls_x509_privkey_t host_privkey; 64 gnutls_x509_privkey_t host_privkey;
@@ -72,11 +75,17 @@ int main(int argc, char *argv[]) {
72 /* generate HostID */ 75 /* generate HostID */
73 //TODO 76 //TODO
74 host_id = lockdownd_generate_hostid(); 77 host_id = lockdownd_generate_hostid();
75 if (debug) printf("HostID: %s\n", host_id);
76 78
77 /* generate keys */ 79 /* generate keys */
80 printf("Generating root key...");
81 fflush(stdout);
78 gnutls_x509_privkey_generate(root_privkey, GNUTLS_PK_RSA, 2048, 0); 82 gnutls_x509_privkey_generate(root_privkey, GNUTLS_PK_RSA, 2048, 0);
83 printf("done\n");
84
85 printf("Generating private key...");
86 fflush(stdout);
79 gnutls_x509_privkey_generate(host_privkey, GNUTLS_PK_RSA, 2048, 0); 87 gnutls_x509_privkey_generate(host_privkey, GNUTLS_PK_RSA, 2048, 0);
88 printf("done\n");
80 89
81 /* generate certificates */ 90 /* generate certificates */
82 gnutls_x509_crt_set_key(root_cert, root_privkey); 91 gnutls_x509_crt_set_key(root_cert, root_privkey);
@@ -102,34 +111,31 @@ int main(int argc, char *argv[]) {
102 gnutls_datum_t root_key_pem = {NULL, 0}; 111 gnutls_datum_t root_key_pem = {NULL, 0};
103 gnutls_datum_t host_key_pem = {NULL, 0}; 112 gnutls_datum_t host_key_pem = {NULL, 0};
104 113
105 gnutls_x509_privkey_export (root_privkey, GNUTLS_X509_FMT_PEM, NULL, &size); 114 gnutls_x509_privkey_export (root_privkey, GNUTLS_X509_FMT_PEM, NULL, &root_key_pem.size);
106 root_key_pem.size = size; 115 gnutls_x509_privkey_export (host_privkey, GNUTLS_X509_FMT_PEM, NULL, &host_key_pem.size);
107 gnutls_x509_privkey_export (host_privkey, GNUTLS_X509_FMT_PEM, NULL, &size);
108 host_key_pem.size = size;
109 116
110 root_key_pem.data = gnutls_malloc(root_key_pem.size); 117 root_key_pem.data = gnutls_malloc(root_key_pem.size);
111 host_key_pem.data = gnutls_malloc(host_key_pem.size); 118 host_key_pem.data = gnutls_malloc(host_key_pem.size);
112 119
113 gnutls_x509_privkey_export (root_privkey, GNUTLS_X509_FMT_PEM, root_key_pem.data, &size); 120 gnutls_x509_privkey_export (root_privkey, GNUTLS_X509_FMT_PEM, root_key_pem.data, &root_key_pem.size);
114 root_key_pem.size = size; 121 gnutls_x509_privkey_export (host_privkey, GNUTLS_X509_FMT_PEM, host_key_pem.data, &host_key_pem.size);
115 gnutls_x509_privkey_export (host_privkey, GNUTLS_X509_FMT_PEM, host_key_pem.data, &size);
116 host_key_pem.size = size;
117 122
118 gnutls_datum_t root_cert_pem = {NULL, 0}; 123 gnutls_datum_t root_cert_pem = {NULL, 0};
119 gnutls_datum_t host_cert_pem = {NULL, 0}; 124 gnutls_datum_t host_cert_pem = {NULL, 0};
120 125
121 gnutls_x509_crt_export (root_cert, GNUTLS_X509_FMT_PEM, NULL, &size); 126 gnutls_x509_crt_export (root_cert, GNUTLS_X509_FMT_PEM, NULL, &root_cert_pem.size);
122 root_cert_pem.size = size; 127 gnutls_x509_crt_export (host_cert, GNUTLS_X509_FMT_PEM, NULL, &host_cert_pem.size);
123 gnutls_x509_crt_export (host_cert, GNUTLS_X509_FMT_PEM, NULL, &size);
124 host_cert_pem.size = size;
125 128
126 root_cert_pem.data = gnutls_malloc(root_cert_pem.size); 129 root_cert_pem.data = gnutls_malloc(root_cert_pem.size);
127 host_cert_pem.data = gnutls_malloc(host_cert_pem.size); 130 host_cert_pem.data = gnutls_malloc(host_cert_pem.size);
128 131
129 gnutls_x509_crt_export (root_cert, GNUTLS_X509_FMT_PEM, root_cert_pem.data, &size); 132 printf("Generating root certificate...");
130 root_cert_pem.size = size; 133 gnutls_x509_crt_export (root_cert, GNUTLS_X509_FMT_PEM, root_cert_pem.data, &root_cert_pem.size);
131 gnutls_x509_crt_export (host_cert, GNUTLS_X509_FMT_PEM, host_cert_pem.data, &size); 134 printf("done\n");
132 host_cert_pem.size = size; 135
136 printf("Generating root certificate...");
137 gnutls_x509_crt_export (host_cert, GNUTLS_X509_FMT_PEM, host_cert_pem.data, &host_cert_pem.size);
138 printf("done\n");
133 139
134 140
135 /* store values in config file */ 141 /* store values in config file */