summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2010-09-05 11:41:58 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2010-09-05 11:43:51 +0200
commit4834f6feca73429b093c98cdfa376f6d4c24a18d (patch)
tree47eab22480824d80fc68f47af618db80cde3690e
parenta0e8e636aad06ad1d3d4f2460ee5a7cdf30c393b (diff)
downloadcryptodev-linux-4834f6feca73429b093c98cdfa376f6d4c24a18d.tar.gz
cryptodev-linux-4834f6feca73429b093c98cdfa376f6d4c24a18d.tar.xz
cryptodev-linux-4834f6feca73429b093c98cdfa376f6d4c24a18d.zip
Added flag NCR_KEY_FLAG_HASHABLE and enforced it when reading a key for hashing.
-rw-r--r--examples/ncr.c2
-rw-r--r--ncr-sessions.c6
-rw-r--r--ncr.h1
3 files changed, 8 insertions, 1 deletions
diff --git a/examples/ncr.c b/examples/ncr.c
index 9691fea..468ffc0 100644
--- a/examples/ncr.c
+++ b/examples/ncr.c
@@ -1507,7 +1507,7 @@ test_ncr_hash_key(int cfd)
kimport.type = NCR_KEY_TYPE_SECRET;
kimport.flags_head.nla_len = NLA_HDRLEN + sizeof(kimport.flags);
kimport.flags_head.nla_type = NCR_ATTR_KEY_FLAGS;
- kimport.flags = NCR_KEY_FLAG_EXPORTABLE;
+ kimport.flags = NCR_KEY_FLAG_EXPORTABLE|NCR_KEY_FLAG_HASHABLE;
kimport.algo_head.nla_len = NLA_HDRLEN + algo_size;
kimport.algo_head.nla_type = NCR_ATTR_ALGORITHM;
memcpy(kimport.algo, hash_vectors[0].algorithm, algo_size);
diff --git a/ncr-sessions.c b/ncr-sessions.c
index a7504b3..46266f2 100644
--- a/ncr-sessions.c
+++ b/ncr-sessions.c
@@ -1301,6 +1301,12 @@ static int _ncr_session_update_key(struct ncr_lists *lists,
ret = -EINVAL;
goto fail;
}
+
+ if (!(key->flags & NCR_KEY_FLAG_HASHABLE)) {
+ err();
+ ret = -EPERM;
+ goto fail;
+ }
switch(sess->op) {
case NCR_OP_ENCRYPT:
diff --git a/ncr.h b/ncr.h
index ce84f7a..734382b 100644
--- a/ncr.h
+++ b/ncr.h
@@ -106,6 +106,7 @@ typedef __s32 ncr_key_t;
*/
#define NCR_KEY_FLAG_WRAPPING (1<<6)
#define NCR_KEY_FLAG_UNWRAPPING (1<<7)
+#define NCR_KEY_FLAG_HASHABLE (1<<8)
struct ncr_key_generate {
__u32 input_size, output_size;