summaryrefslogtreecommitdiffstats
path: root/examples/pk.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/pk.c')
-rw-r--r--examples/pk.c77
1 files changed, 42 insertions, 35 deletions
diff --git a/examples/pk.c b/examples/pk.c
index 8645fd45661..25032755504 100644
--- a/examples/pk.c
+++ b/examples/pk.c
@@ -28,6 +28,13 @@
#define ALIGN_NL __attribute__((aligned(NLA_ALIGNTO)))
+#define SIGNATURE_HASH "sha1"
+
+#define ALG_AES_CBC "cbc(aes)"
+#define ALG_DH "dh"
+#define ALG_DSA "dsa"
+#define ALG_RSA "rsa"
+
static void
print_hex_datum (gnutls_datum_t * dat)
{
@@ -315,7 +322,7 @@ static int test_ncr_dh(int cfd)
struct __attribute__((packed)) {
struct ncr_key_generate_pair f;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_DH)] ALIGN_NL;
struct nlattr flags_head ALIGN_NL;
uint32_t flags ALIGN_NL;
unsigned char buffer[DATA_SIZE] ALIGN_NL;
@@ -386,7 +393,7 @@ struct __attribute__((packed)) {
kgen.f.public_key = public1;
kgen.algo_head.nla_len = NLA_HDRLEN + sizeof(kgen.algo);
kgen.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- kgen.algo = NCR_ALG_DH;
+ strcpy(kgen.algo, ALG_DH);
kgen.flags_head.nla_len = NLA_HDRLEN + sizeof(kgen.flags);
kgen.flags_head.nla_type = NCR_ATTR_KEY_FLAGS;
kgen.flags = NCR_KEY_FLAG_EXPORTABLE;
@@ -428,7 +435,7 @@ struct __attribute__((packed)) {
kgen.f.public_key = public2;
kgen.algo_head.nla_len = NLA_HDRLEN + sizeof(kgen.algo);
kgen.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- kgen.algo = NCR_ALG_DH;
+ strcpy(kgen.algo, ALG_DH);
kgen.flags_head.nla_len = NLA_HDRLEN + sizeof(kgen.flags);
kgen.flags_head.nla_type = NCR_ATTR_KEY_FLAGS;
kgen.flags = NCR_KEY_FLAG_EXPORTABLE;
@@ -604,7 +611,7 @@ test_ncr_wrap_key3(int cfd)
struct nlattr type_head ALIGN_NL;
uint32_t type ALIGN_NL;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_AES_CBC)] ALIGN_NL;
struct nlattr flags_head ALIGN_NL;
uint32_t flags ALIGN_NL;
} kimport;
@@ -618,12 +625,12 @@ test_ncr_wrap_key3(int cfd)
struct nlattr wrap_algo_head ALIGN_NL;
uint32_t wrap_algo ALIGN_NL;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_RSA)] ALIGN_NL;
} kunwrap;
struct __attribute__((packed)) {
struct ncr_key_generate_pair f;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_RSA)] ALIGN_NL;
struct nlattr flags_head ALIGN_NL;
uint32_t flags ALIGN_NL;
struct nlattr bits_head ALIGN_NL;
@@ -679,7 +686,7 @@ test_ncr_wrap_key3(int cfd)
kimport.type = NCR_KEY_TYPE_SECRET;
kimport.algo_head.nla_len = NLA_HDRLEN + sizeof(kimport.algo);
kimport.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- kimport.algo = NCR_ALG_AES_CBC;
+ strcpy(kimport.algo, ALG_AES_CBC);
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|NCR_KEY_FLAG_WRAPPING;
@@ -701,7 +708,7 @@ test_ncr_wrap_key3(int cfd)
kgen.f.public_key = pubkey;
kgen.algo_head.nla_len = NLA_HDRLEN + sizeof(kgen.algo);
kgen.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- kgen.algo = NCR_ALG_RSA;
+ strcpy(kgen.algo, ALG_RSA);
kgen.flags_head.nla_len = NLA_HDRLEN + sizeof(kgen.flags);
kgen.flags_head.nla_type = NCR_ATTR_KEY_FLAGS;
kgen.flags = NCR_KEY_FLAG_EXPORTABLE|NCR_KEY_FLAG_WRAPPABLE;
@@ -773,7 +780,7 @@ test_ncr_wrap_key3(int cfd)
kunwrap.algo_head.nla_len
= NLA_HDRLEN + sizeof(kunwrap.algo);
kunwrap.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- kunwrap.algo = NCR_ALG_RSA;
+ strcpy(kunwrap.algo, ALG_RSA);
ret = ioctl(cfd, NCRIO_KEY_UNWRAP, &kunwrap);
if (ret) {
@@ -797,13 +804,13 @@ static int rsa_key_encrypt(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int oae
struct __attribute__((packed)) {
struct ncr_session_once f;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_RSA)] ALIGN_NL;
struct nlattr key_head ALIGN_NL;
uint32_t key ALIGN_NL;
struct nlattr rsa_head ALIGN_NL;
uint32_t rsa ALIGN_NL;
struct nlattr oaep_hash_head ALIGN_NL;
- uint32_t oaep_hash ALIGN_NL;
+ char oaep_hash[sizeof(SIGNATURE_HASH)] ALIGN_NL;
struct nlattr input_head ALIGN_NL;
struct ncr_session_input_data input ALIGN_NL;
struct nlattr output_head ALIGN_NL;
@@ -825,7 +832,7 @@ static int rsa_key_encrypt(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int oae
op.f.op = NCR_OP_ENCRYPT;
op.algo_head.nla_len = NLA_HDRLEN + sizeof(op.algo);
op.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- op.algo = NCR_ALG_RSA;
+ strcpy(op.algo, ALG_RSA);
op.key_head.nla_len = NLA_HDRLEN + sizeof(op.key);
op.key_head.nla_type = NCR_ATTR_KEY;
op.key = pubkey;
@@ -838,7 +845,7 @@ static int rsa_key_encrypt(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int oae
}
op.oaep_hash_head.nla_len = NLA_HDRLEN + sizeof(op.oaep_hash);
op.oaep_hash_head.nla_type = NCR_ATTR_RSA_OAEP_HASH_ALGORITHM;
- op.oaep_hash = NCR_ALG_SHA1; /* Ignored if not using OAEP */
+ strcpy(op.oaep_hash, SIGNATURE_HASH); /* Ignored if not using OAEP */
op.input_head.nla_len = NLA_HDRLEN + sizeof(op.input);
op.input_head.nla_type = NCR_ATTR_UPDATE_INPUT_DATA;
op.input.data = data;
@@ -861,7 +868,7 @@ static int rsa_key_encrypt(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int oae
op.f.op = NCR_OP_DECRYPT;
op.algo_head.nla_len = NLA_HDRLEN + sizeof(op.algo);
op.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- op.algo = NCR_ALG_RSA;
+ strcpy(op.algo, ALG_RSA);
op.key_head.nla_len = NLA_HDRLEN + sizeof(op.key);
op.key_head.nla_type = NCR_ATTR_KEY;
op.key = privkey;
@@ -874,7 +881,7 @@ static int rsa_key_encrypt(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int oae
}
op.oaep_hash_head.nla_len = NLA_HDRLEN + sizeof(op.oaep_hash);
op.oaep_hash_head.nla_type = NCR_ATTR_RSA_OAEP_HASH_ALGORITHM;
- op.oaep_hash = NCR_ALG_SHA1; /* Ignored if not using OAEP */
+ strcpy(op.oaep_hash, SIGNATURE_HASH); /* Ignored if not using OAEP */
op.input_head.nla_len = NLA_HDRLEN + sizeof(op.input);
op.input_head.nla_type = NCR_ATTR_UPDATE_INPUT_DATA;
op.input.data = data;
@@ -911,13 +918,13 @@ static int rsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int
struct __attribute__((packed)) {
struct ncr_session_once f;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_RSA)] ALIGN_NL;
struct nlattr key_head ALIGN_NL;
uint32_t key ALIGN_NL;
struct nlattr rsa_head ALIGN_NL;
uint32_t rsa ALIGN_NL;
struct nlattr sign_hash_head ALIGN_NL;
- uint32_t sign_hash ALIGN_NL;
+ char sign_hash[sizeof(SIGNATURE_HASH)] ALIGN_NL;
struct nlattr input_head ALIGN_NL;
struct ncr_session_input_data input ALIGN_NL;
struct nlattr signature_head ALIGN_NL;
@@ -926,13 +933,13 @@ static int rsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int
struct __attribute__((packed)) {
struct ncr_session_once f;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_RSA)] ALIGN_NL;
struct nlattr key_head ALIGN_NL;
uint32_t key ALIGN_NL;
struct nlattr rsa_head ALIGN_NL;
uint32_t rsa ALIGN_NL;
struct nlattr sign_hash_head ALIGN_NL;
- uint32_t sign_hash ALIGN_NL;
+ char sign_hash[sizeof(SIGNATURE_HASH)] ALIGN_NL;
struct nlattr input_head ALIGN_NL;
struct ncr_session_input_data input ALIGN_NL;
struct nlattr signature_head ALIGN_NL;
@@ -954,7 +961,7 @@ static int rsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int
ksign.f.op = NCR_OP_SIGN;
ksign.algo_head.nla_len = NLA_HDRLEN + sizeof(ksign.algo);
ksign.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- ksign.algo = NCR_ALG_RSA;
+ strcpy(ksign.algo, ALG_RSA);
ksign.key_head.nla_len = NLA_HDRLEN + sizeof(ksign.key);
ksign.key_head.nla_type = NCR_ATTR_KEY;
ksign.key = privkey;
@@ -963,7 +970,7 @@ static int rsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int
ksign.rsa = (pss != 0) ? RSA_PKCS1_PSS : RSA_PKCS1_V1_5;
ksign.sign_hash_head.nla_len = NLA_HDRLEN + sizeof(ksign.sign_hash);
ksign.sign_hash_head.nla_type = NCR_ATTR_SIGNATURE_HASH_ALGORITHM;
- ksign.sign_hash = NCR_ALG_SHA1;
+ strcpy(ksign.sign_hash, SIGNATURE_HASH);
ksign.input_head.nla_len = NLA_HDRLEN + sizeof(ksign.input);
ksign.input_head.nla_type = NCR_ATTR_UPDATE_INPUT_DATA;
ksign.input.data = data;
@@ -988,7 +995,7 @@ static int rsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int
kverify.f.op = NCR_OP_VERIFY;
kverify.algo_head.nla_len = NLA_HDRLEN + sizeof(kverify.algo);
kverify.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- kverify.algo = NCR_ALG_RSA;
+ strcpy(kverify.algo, ALG_RSA);
kverify.key_head.nla_len = NLA_HDRLEN + sizeof(kverify.key);
kverify.key_head.nla_type = NCR_ATTR_KEY;
kverify.key = pubkey;
@@ -997,7 +1004,7 @@ static int rsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey, int
kverify.rsa = (pss != 0) ? RSA_PKCS1_PSS : RSA_PKCS1_V1_5;
kverify.sign_hash_head.nla_len = NLA_HDRLEN + sizeof(kverify.sign_hash);
kverify.sign_hash_head.nla_type = NCR_ATTR_SIGNATURE_HASH_ALGORITHM;
- kverify.sign_hash = NCR_ALG_SHA1;
+ strcpy(kverify.sign_hash, SIGNATURE_HASH);
kverify.input_head.nla_len = NLA_HDRLEN + sizeof(kverify.input);
kverify.input_head.nla_type = NCR_ATTR_UPDATE_INPUT_DATA;
kverify.input.data = data;
@@ -1030,11 +1037,11 @@ static int dsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey)
struct __attribute__((packed)) {
struct ncr_session_once f;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_DSA)] ALIGN_NL;
struct nlattr key_head ALIGN_NL;
uint32_t key ALIGN_NL;
struct nlattr sign_hash_head ALIGN_NL;
- uint32_t sign_hash ALIGN_NL;
+ char sign_hash[sizeof(SIGNATURE_HASH)] ALIGN_NL;
struct nlattr input_head ALIGN_NL;
struct ncr_session_input_data input ALIGN_NL;
struct nlattr signature_head ALIGN_NL;
@@ -1043,11 +1050,11 @@ static int dsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey)
struct __attribute__((packed)) {
struct ncr_session_once f;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_DSA)] ALIGN_NL;
struct nlattr key_head ALIGN_NL;
uint32_t key ALIGN_NL;
struct nlattr sign_hash_head ALIGN_NL;
- uint32_t sign_hash ALIGN_NL;
+ char sign_hash[sizeof(SIGNATURE_HASH)] ALIGN_NL;
struct nlattr input_head ALIGN_NL;
struct ncr_session_input_data input ALIGN_NL;
struct nlattr signature_head ALIGN_NL;
@@ -1069,13 +1076,13 @@ static int dsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey)
ksign.f.op = NCR_OP_SIGN;
ksign.algo_head.nla_len = NLA_HDRLEN + sizeof(ksign.algo);
ksign.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- ksign.algo = NCR_ALG_DSA;
+ strcpy(ksign.algo, ALG_DSA);
ksign.key_head.nla_len = NLA_HDRLEN + sizeof(ksign.key);
ksign.key_head.nla_type = NCR_ATTR_KEY;
ksign.key = privkey;
ksign.sign_hash_head.nla_len = NLA_HDRLEN + sizeof(ksign.sign_hash);
ksign.sign_hash_head.nla_type = NCR_ATTR_SIGNATURE_HASH_ALGORITHM;
- ksign.sign_hash = NCR_ALG_SHA1;
+ strcpy(ksign.sign_hash, SIGNATURE_HASH);
ksign.input_head.nla_len = NLA_HDRLEN + sizeof(ksign.input);
ksign.input_head.nla_type = NCR_ATTR_UPDATE_INPUT_DATA;
ksign.input.data = data;
@@ -1098,13 +1105,13 @@ static int dsa_key_sign_verify(int cfd, ncr_key_t privkey, ncr_key_t pubkey)
kverify.f.op = NCR_OP_VERIFY;
kverify.algo_head.nla_len = NLA_HDRLEN + sizeof(kverify.algo);
kverify.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- kverify.algo = NCR_ALG_DSA;
+ strcpy(kverify.algo, ALG_DSA);
kverify.key_head.nla_len = NLA_HDRLEN + sizeof(kverify.key);
kverify.key_head.nla_type = NCR_ATTR_KEY;
kverify.key = pubkey;
kverify.sign_hash_head.nla_len = NLA_HDRLEN + sizeof(kverify.sign_hash);
kverify.sign_hash_head.nla_type = NCR_ATTR_SIGNATURE_HASH_ALGORITHM;
- kverify.sign_hash = NCR_ALG_SHA1;
+ strcpy(kverify.sign_hash, SIGNATURE_HASH);
kverify.input_head.nla_len = NLA_HDRLEN + sizeof(kverify.input);
kverify.input_head.nla_type = NCR_ATTR_UPDATE_INPUT_DATA;
kverify.input.data = data;
@@ -1139,7 +1146,7 @@ static int test_ncr_rsa(int cfd)
struct __attribute__((packed)) {
struct ncr_key_generate_pair f;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_RSA)] ALIGN_NL;
struct nlattr flags_head ALIGN_NL;
uint32_t flags ALIGN_NL;
struct nlattr bits_head ALIGN_NL;
@@ -1174,7 +1181,7 @@ static int test_ncr_rsa(int cfd)
kgen.f.public_key = pubkey;
kgen.algo_head.nla_len = NLA_HDRLEN + sizeof(kgen.algo);
kgen.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- kgen.algo = NCR_ALG_RSA;
+ strcpy(kgen.algo, ALG_RSA);
kgen.flags_head.nla_len = NLA_HDRLEN + sizeof(kgen.flags);
kgen.flags_head.nla_type = NCR_ATTR_KEY_FLAGS;
kgen.flags = NCR_KEY_FLAG_EXPORTABLE|NCR_KEY_FLAG_WRAPPABLE;
@@ -1265,7 +1272,7 @@ static int test_ncr_dsa(int cfd)
struct __attribute__((packed)) {
struct ncr_key_generate_pair f;
struct nlattr algo_head ALIGN_NL;
- uint32_t algo ALIGN_NL;
+ char algo[sizeof(ALG_DSA)] ALIGN_NL;
struct nlattr flags_head ALIGN_NL;
uint32_t flags ALIGN_NL;
struct nlattr q_bits_head ALIGN_NL;
@@ -1302,7 +1309,7 @@ static int test_ncr_dsa(int cfd)
kgen.f.public_key = pubkey;
kgen.algo_head.nla_len = NLA_HDRLEN + sizeof(kgen.algo);
kgen.algo_head.nla_type = NCR_ATTR_ALGORITHM;
- kgen.algo = NCR_ALG_DSA;
+ strcpy(kgen.algo, ALG_DSA);
kgen.flags_head.nla_len = NLA_HDRLEN + sizeof(kgen.flags);
kgen.flags_head.nla_type = NCR_ATTR_KEY_FLAGS;
kgen.flags = NCR_KEY_FLAG_EXPORTABLE|NCR_KEY_FLAG_WRAPPABLE;