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/pk.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/pk.c')
-rw-r--r-- | examples/pk.c | 65 |
1 files changed, 38 insertions, 27 deletions
diff --git a/examples/pk.c b/examples/pk.c index fba53d5..f2a8a68 100644 --- a/examples/pk.c +++ b/examples/pk.c @@ -608,7 +608,12 @@ test_ncr_wrap_key3(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; struct __attribute__((packed)) { struct ncr_key_generate_pair f; struct nlattr algo_head ALIGN_NL; @@ -705,52 +710,58 @@ test_ncr_wrap_key3(int cfd) } /* now try wrapping key2 using key */ - memset(&kwrap, 0, sizeof(kwrap)); - kwrap.algorithm = NCR_WALG_AES_RFC5649; - kwrap.keytowrap = pubkey; - 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 = pubkey; + 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_RFC5649; ret = ioctl(cfd, NCRIO_KEY_WRAP, &kwrap); - if (ret) { + if (ret < 0) { fprintf(stderr, "Error[%d-%d]: %s:%d\n", i, sizes[i], __func__, __LINE__); /* wrapping of public key should have been allowed! */ return 1; } /* now try wrapping private using key */ - memset(&kwrap, 0, sizeof(kwrap)); - kwrap.algorithm = NCR_WALG_AES_RFC5649; - kwrap.keytowrap = privkey; - 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 = privkey; + 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_RFC5649; ret = ioctl(cfd, NCRIO_KEY_WRAP, &kwrap); - if (ret && i != 2) { + if (ret < 0 && i != 2) { fprintf(stderr, "Error[%d-%d]: %s:%d\n", i, sizes[i], __func__, __LINE__); /* wrapping should have been allowed */ return 1; - } else if (ret == 0 && i == 2) { + } else if (ret >= 0 && i == 2) { fprintf(stderr, "Error[%d-%d]: %s:%d\n", i, sizes[i], __func__, __LINE__); /* wrapping shouldn't have been allowed */ return 1; } - if (ret == 0) { - data_size = kwrap.io_size; + if (ret >= 0) { + data_size = ret; /* try unwrapping */ - memset(&kwrap, 0, sizeof(kwrap)); - kwrap.algorithm = NCR_WALG_AES_RFC5649; - kwrap.wrapped_key_algorithm = NCR_ALG_RSA; - kwrap.keytowrap = privkey; - kwrap.key = key; - kwrap.io = data; - kwrap.io_size = data_size; - - ret = ioctl(cfd, NCRIO_KEY_UNWRAP, &kwrap); + memset(&kunwrap, 0, sizeof(kunwrap)); + kunwrap.algorithm = NCR_WALG_AES_RFC5649; + kunwrap.wrapped_key_algorithm = NCR_ALG_RSA; + kunwrap.keytowrap = privkey; + kunwrap.key = key; + kunwrap.io = data; + kunwrap.io_size = data_size; + + ret = ioctl(cfd, NCRIO_KEY_UNWRAP, &kunwrap); if (ret) { fprintf(stderr, "Error[%d-%d]: %s:%d\n", i, sizes[i], __func__, __LINE__); return 1; |