Split salt from other requests in RNG backend.
authorMilan Broz <gmazyland@gmail.com>
Sun, 20 May 2012 20:32:25 +0000 (22:32 +0200)
committerMilan Broz <gmazyland@gmail.com>
Sun, 20 May 2012 20:32:25 +0000 (22:32 +0200)
lib/internal.h
lib/luks1/keymanage.c
lib/random.c

index 75d4533..44ec5a1 100644 (file)
@@ -97,7 +97,7 @@ void get_topology_alignment(const char *device,
                            unsigned long *alignment_offset,   /* bytes */
                            unsigned long default_alignment);
 
-enum { CRYPT_RND_NORMAL = 0, CRYPT_RND_KEY = 1 };
+enum { CRYPT_RND_NORMAL = 0, CRYPT_RND_KEY = 1, CRYPT_RND_SALT = 2 };
 int crypt_random_init(struct crypt_device *ctx);
 int crypt_random_get(struct crypt_device *ctx, char *buf, size_t len, int quality);
 void crypt_random_exit(void);
index e2e36df..a349993 100644 (file)
@@ -635,7 +635,7 @@ int LUKS_generate_phdr(struct luks_phdr *header,
                header->version, header->hashSpec ,header->cipherName, header->cipherMode,
                header->keyBytes);
 
-       r = crypt_random_get(ctx, header->mkDigestSalt, LUKS_SALTSIZE, CRYPT_RND_NORMAL);
+       r = crypt_random_get(ctx, header->mkDigestSalt, LUKS_SALTSIZE, CRYPT_RND_SALT);
        if(r < 0) {
                log_err(ctx,  _("Cannot create LUKS header: reading random salt failed.\n"));
                return r;
@@ -752,7 +752,7 @@ int LUKS_set_key(const char *device, unsigned int keyIndex,
                return -ENOMEM;
 
        r = crypt_random_get(ctx, hdr->keyblock[keyIndex].passwordSalt,
-                      LUKS_SALTSIZE, CRYPT_RND_NORMAL);
+                      LUKS_SALTSIZE, CRYPT_RND_SALT);
        if (r < 0)
                return r;
 
index 0f7357a..c7f25e4 100644 (file)
@@ -176,6 +176,9 @@ int crypt_random_get(struct crypt_device *ctx, char *buf, size_t len, int qualit
        case CRYPT_RND_NORMAL:
                status = _get_urandom(ctx, buf, len);
                break;
+       case CRYPT_RND_SALT:
+               status = _get_urandom(ctx, buf, len);
+               break;
        case CRYPT_RND_KEY:
                rng_type = ctx ? crypt_get_rng_type(ctx) :
                                 crypt_random_default_key_rng();