diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2007-08-30 21:16:52 +0000 |
---|---|---|
committer | Rafael J. Wysocki <rjw@sisk.pl> | 2007-08-30 21:16:52 +0000 |
commit | 1b6044b64dbf4e41492cae5525cd8f82ceb42bde (patch) | |
tree | a7cfdb317b7f6c82bf6acc8a9dd8a3101b72fc7a | |
parent | 2cfb07983576464d3094ad7754371ff6224bbf66 (diff) | |
download | suspend-utils-1b6044b64dbf4e41492cae5525cd8f82ceb42bde.tar.gz |
Clean up the code in suspend.c (part 2).
-rw-r--r-- | suspend.c | 73 |
1 files changed, 39 insertions, 34 deletions
@@ -1062,6 +1062,7 @@ static void generate_key(void) int ret, fd, rnd_fd; struct RSA_data *rsa; unsigned char *buf; + unsigned short size; int j; if (!key_data) @@ -1100,52 +1101,56 @@ static void generate_key(void) ret = gcry_ac_key_init(&rsa_pub, rsa_hd, GCRY_AC_KEY_PUBLIC, rsa_data_set); - if (!ret) { - unsigned short size; + if (ret) + goto Destroy_data_set; - ret = gcry_ac_data_new(&key_set); - if (ret) - goto Destroy_key; + ret = gcry_ac_data_new(&key_set); + if (ret) + goto Destroy_key; - rnd_fd = open("/dev/urandom", O_RDONLY); - if (rnd_fd <= 0) - goto Destroy_set; + rnd_fd = open("/dev/urandom", O_RDONLY); + if (rnd_fd <= 0) + goto Destroy_key_set; - size = KEY_SIZE + CIPHER_BLOCK; - if (read(rnd_fd, key_data->key, size) != size) - goto Close_urandom; + size = KEY_SIZE + CIPHER_BLOCK; + if (read(rnd_fd, key_data->key, size) != size) + goto Close_urandom; - gcry_mpi_scan(&mpi, GCRYMPI_FMT_USG, key_data->key, size, NULL); - ret = gcry_ac_data_encrypt(rsa_hd, 0, rsa_pub, mpi, &key_set); - gcry_mpi_release(mpi); - if (!ret) { - struct encrypted_key *key = &key_data->encrypted_key; - char *str; - size_t s; + gcry_mpi_scan(&mpi, GCRYMPI_FMT_USG, key_data->key, size, NULL); + ret = gcry_ac_data_encrypt(rsa_hd, 0, rsa_pub, mpi, &key_set); + gcry_mpi_release(mpi); + if (!ret) { + struct encrypted_key *key = &key_data->encrypted_key; + char *str; + size_t s; - gcry_ac_data_get_index(key_set, GCRY_AC_FLAG_COPY, 0, + gcry_ac_data_get_index(key_set, GCRY_AC_FLAG_COPY, 0, (const char **)&str, &mpi); - gcry_free(str); - ret = gcry_mpi_print(GCRYMPI_FMT_USG, key->data, - KEY_DATA_SIZE, &s, mpi); - gcry_mpi_release(mpi); - if (!ret) { - key->size = s; - use_RSA = 'y'; - } + gcry_free(str); + ret = gcry_mpi_print(GCRYMPI_FMT_USG, key->data, KEY_DATA_SIZE, + &s, mpi); + gcry_mpi_release(mpi); + if (!ret) { + key->size = s; + use_RSA = 'y'; } + } + Close_urandom: - close(rnd_fd); -Destroy_set: - gcry_ac_data_destroy(key_set); + close(rnd_fd); + +Destroy_key_set: + gcry_ac_data_destroy(key_set); + Destroy_key: - gcry_ac_key_destroy(rsa_pub); - } else { - gcry_ac_data_destroy(rsa_data_set); - } + gcry_ac_key_destroy(rsa_pub); + +Destroy_data_set: + gcry_ac_data_destroy(rsa_data_set); Free_rsa: gcry_ac_close(rsa_hd); + Close: close(fd); } |