aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2007-08-30 21:16:52 +0000
committerRafael J. Wysocki <rjw@sisk.pl>2007-08-30 21:16:52 +0000
commit1b6044b64dbf4e41492cae5525cd8f82ceb42bde (patch)
treea7cfdb317b7f6c82bf6acc8a9dd8a3101b72fc7a
parent2cfb07983576464d3094ad7754371ff6224bbf66 (diff)
downloadsuspend-utils-1b6044b64dbf4e41492cae5525cd8f82ceb42bde.tar.gz
Clean up the code in suspend.c (part 2).
-rw-r--r--suspend.c73
1 files changed, 39 insertions, 34 deletions
diff --git a/suspend.c b/suspend.c
index d647ca6..63e197c 100644
--- a/suspend.c
+++ b/suspend.c
@@ -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);
}