diff options
author | Miloslav Trmač <mitr@redhat.com> | 2010-08-16 16:06:43 +0200 |
---|---|---|
committer | Miloslav Trmač <mitr@redhat.com> | 2010-08-24 23:43:46 +0200 |
commit | 3ab6fc7d0d19f62b48ecef310249014192289613 (patch) | |
tree | 108739dea2e11cb87bb3790eb785331e4cef2308 /examples/ncr.c | |
parent | 9aa6874612bf258f0a9795371db9b3dc514376aa (diff) | |
download | cryptodev-linux-3ab6fc7d0d19f62b48ecef310249014192289613.tar.gz cryptodev-linux-3ab6fc7d0d19f62b48ecef310249014192289613.tar.xz cryptodev-linux-3ab6fc7d0d19f62b48ecef310249014192289613.zip |
Convert *_KEY_WRAP
Diffstat (limited to 'examples/ncr.c')
-rw-r--r-- | examples/ncr.c | 76 |
1 files changed, 44 insertions, 32 deletions
diff --git a/examples/ncr.c b/examples/ncr.c index 56a59ce..7324c16 100644 --- a/examples/ncr.c +++ b/examples/ncr.c @@ -337,7 +337,7 @@ test_ncr_key(int cfd) static int test_ncr_wrap_key(int cfd) { - int i, ret; + int i; ncr_key_t key, key2; struct __attribute__((packed)) { struct ncr_key_import f; @@ -350,7 +350,12 @@ test_ncr_wrap_key(int cfd) struct nlattr flags_head ALIGN_NL; uint32_t flags ALIGN_NL; } kimport; - struct ncr_key_wrap_st kwrap; + struct __attribute__((packed)) { + struct ncr_key_wrap f; + struct nlattr algo_head ALIGN_NL; + uint32_t algo ALIGN_NL; + } kwrap; + struct ncr_key_wrap_st kunwrap; uint8_t data[WRAPPED_KEY_DATA_SIZE]; int data_size; @@ -429,16 +434,18 @@ test_ncr_wrap_key(int cfd) } /* now try wrapping key2 using key */ - memset(&kwrap, 0, sizeof(kwrap)); - kwrap.algorithm = NCR_WALG_AES_RFC3394; - kwrap.keytowrap = key2; - kwrap.key = key; - kwrap.io = data; - kwrap.io_size = sizeof(data); - - ret = ioctl(cfd, NCRIO_KEY_WRAP, &kwrap); - - if (geteuid() == 0 && ret) { + memset(&kwrap.f, 0, sizeof(kwrap.f)); + kwrap.f.input_size = sizeof(kwrap); + kwrap.f.wrapping_key = key; + kwrap.f.source_key = key2; + kwrap.f.buffer = data; + kwrap.f.buffer_size = sizeof(data); + kwrap.algo_head.nla_len = NLA_HDRLEN + sizeof(kwrap.algo); + kwrap.algo_head.nla_type = NCR_ATTR_WRAPPING_ALGORITHM; + kwrap.algo = NCR_WALG_AES_RFC3394; + + data_size = ioctl(cfd, NCRIO_KEY_WRAP, &kwrap); + if (geteuid() == 0 && data_size < 0) { fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__); perror("ioctl(NCRIO_KEY_WRAP)"); return 1; @@ -450,14 +457,12 @@ test_ncr_wrap_key(int cfd) return 0; } - data_size = kwrap.io_size; - - if (kwrap.io_size != 24 || memcmp(data, + if (data_size != 24 || memcmp(data, "\x1F\xA6\x8B\x0A\x81\x12\xB4\x47\xAE\xF3\x4B\xD8\xFB\x5A\x7B\x82\x9D\x3E\x86\x23\x71\xD2\xCF\xE5", 24) != 0) { fprintf(stderr, "Wrapped data do not match.\n"); - fprintf(stderr, "Data[%d]: ",(int) kwrap.io_size); - for(i=0;i<kwrap.io_size;i++) + fprintf(stderr, "Data[%d]: ",(int) data_size); + for(i=0;i<data_size;i++) fprintf(stderr, "%.2x:", data[i]); fprintf(stderr, "\n"); return 1; @@ -478,14 +483,14 @@ test_ncr_wrap_key(int cfd) return 1; } - memset(&kwrap, 0, sizeof(kwrap)); - kwrap.algorithm = NCR_WALG_AES_RFC3394; - kwrap.keytowrap = key2; - kwrap.key = key; - kwrap.io = data; - kwrap.io_size = data_size; + memset(&kunwrap, 0, sizeof(kunwrap)); + kunwrap.algorithm = NCR_WALG_AES_RFC3394; + kunwrap.keytowrap = key2; + kunwrap.key = key; + kunwrap.io = data; + kunwrap.io_size = data_size; - if (ioctl(cfd, NCRIO_KEY_UNWRAP, &kwrap)) { + if (ioctl(cfd, NCRIO_KEY_UNWRAP, &kunwrap)) { perror("ioctl(NCRIO_KEY_UNWRAP)"); return 1; } @@ -543,7 +548,11 @@ test_ncr_wrap_key2(int cfd) struct nlattr flags_head ALIGN_NL; uint32_t flags ALIGN_NL; } kimport; - struct ncr_key_wrap_st kwrap; + struct __attribute__((packed)) { + struct ncr_key_wrap f; + struct nlattr algo_head ALIGN_NL; + uint32_t algo ALIGN_NL; + } kwrap; uint8_t data[WRAPPED_KEY_DATA_SIZE]; /* test 1: generate a key in userspace import it @@ -622,15 +631,18 @@ test_ncr_wrap_key2(int cfd) } /* now try wrapping key2 using key */ - memset(&kwrap, 0, sizeof(kwrap)); - kwrap.algorithm = NCR_WALG_AES_RFC3394; - kwrap.keytowrap = key2; - kwrap.key = key; - kwrap.io = data; - kwrap.io_size = sizeof(data); + memset(&kwrap.f, 0, sizeof(kwrap.f)); + kwrap.f.input_size = sizeof(kwrap); + kwrap.f.wrapping_key = key; + kwrap.f.source_key = key2; + kwrap.f.buffer = data; + kwrap.f.buffer_size = sizeof(data); + kwrap.algo_head.nla_len = NLA_HDRLEN + sizeof(kwrap.algo); + kwrap.algo_head.nla_type = NCR_ATTR_WRAPPING_ALGORITHM; + kwrap.algo = NCR_WALG_AES_RFC3394; ret = ioctl(cfd, NCRIO_KEY_WRAP, &kwrap); - if (!ret) { + if (ret < 0) { fprintf(stderr, "Error: %s:%d\n", __func__, __LINE__); /* wrapping shouldn't have been allowed */ return 1; |