key->key_alg == DST_ALG_ECDSA384);
REQUIRE(ec != NULL);
- if (key->key_alg == DST_ALG_ECDSA256) {
+ switch (key->key_alg) {
+ case DST_ALG_ECDSA256:
dgstlen = ISC_SHA256_DIGESTLENGTH;
siglen = DNS_SIG_ECDSA256SIZE;
- } else {
+ break;
+ case DST_ALG_ECDSA384:
siglen = DNS_SIG_ECDSA384SIZE;
dgstlen = ISC_SHA384_DIGESTLENGTH;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
PK11_RET(pkcs_C_DigestFinal, (pk11_ctx->session, digest, &dgstlen),
key->key_alg == DST_ALG_ECDSA384);
REQUIRE(ec != NULL);
- if (key->key_alg == DST_ALG_ECDSA256) {
+ switch (key->key_alg) {
+ case DST_ALG_ECDSA256:
dgstlen = ISC_SHA256_DIGESTLENGTH;
- } else {
+ break;
+ case DST_ALG_ECDSA384:
dgstlen = ISC_SHA384_DIGESTLENGTH;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
PK11_RET(pkcs_C_DigestFinal, (pk11_ctx->session, digest, &dgstlen),
}
#define SETCURVE() \
- if (key->key_alg == DST_ALG_ECDSA256) { \
+ switch (key->key_alg) { \
+ case DST_ALG_ECDSA256: \
attr->pValue = isc_mem_get(key->mctx, \
sizeof(PK11_ECC_PRIME256V1)); \
memmove(attr->pValue, PK11_ECC_PRIME256V1, \
sizeof(PK11_ECC_PRIME256V1)); \
attr->ulValueLen = sizeof(PK11_ECC_PRIME256V1); \
- } else { \
+ break; \
+ case DST_ALG_ECDSA384: \
attr->pValue = isc_mem_get(key->mctx, \
sizeof(PK11_ECC_SECP384R1)); \
- \
memmove(attr->pValue, PK11_ECC_SECP384R1, \
sizeof(PK11_ECC_SECP384R1)); \
attr->ulValueLen = sizeof(PK11_ECC_SECP384R1); \
+ break; \
+ default: \
+ INSIST(0); \
+ ISC_UNREACHABLE(); \
}
#define FREECURVE() \
memset(pk11_ctx, 0, sizeof(*pk11_ctx));
isc_mem_put(key->mctx, pk11_ctx, sizeof(*pk11_ctx));
- if (key->key_alg == DST_ALG_ECDSA256) {
+ switch (key->key_alg) {
+ case DST_ALG_ECDSA256:
key->key_size = DNS_KEY_ECDSA256SIZE * 4;
- } else {
+ break;
+ case DST_ALG_ECDSA384:
key->key_size = DNS_KEY_ECDSA384SIZE * 4;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
return (ISC_R_SUCCESS);
REQUIRE(key->keydata.pkey != NULL);
- if (key->key_alg == DST_ALG_ECDSA256) {
+ switch (key->key_alg) {
+ case DST_ALG_ECDSA256:
len = DNS_KEY_ECDSA256SIZE;
- } else {
+ break;
+ case DST_ALG_ECDSA384:
len = DNS_KEY_ECDSA384SIZE;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
ec = key->keydata.pkey;
REQUIRE(key->key_alg == DST_ALG_ECDSA256 ||
key->key_alg == DST_ALG_ECDSA384);
- if (key->key_alg == DST_ALG_ECDSA256) {
+ switch (key->key_alg) {
+ case DST_ALG_ECDSA256:
len = DNS_KEY_ECDSA256SIZE;
- } else {
+ break;
+ case DST_ALG_ECDSA384:
len = DNS_KEY_ECDSA384SIZE;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
isc_buffer_remainingregion(data, &r);
attr = ec->repr;
attr->type = CKA_EC_PARAMS;
- if (key->key_alg == DST_ALG_ECDSA256) {
- attr->pValue = isc_mem_get(key->mctx,
- sizeof(PK11_ECC_PRIME256V1));
- memmove(attr->pValue, PK11_ECC_PRIME256V1,
- sizeof(PK11_ECC_PRIME256V1));
- attr->ulValueLen = sizeof(PK11_ECC_PRIME256V1);
- } else {
- attr->pValue = isc_mem_get(key->mctx,
- sizeof(PK11_ECC_SECP384R1));
+ SETCURVE();
- memmove(attr->pValue, PK11_ECC_SECP384R1,
- sizeof(PK11_ECC_SECP384R1));
- attr->ulValueLen = sizeof(PK11_ECC_SECP384R1);
- }
attr++;
attr->type = CKA_EC_POINT;
attr->pValue = isc_mem_get(key->mctx, len + 3);
dst__privstruct_free(&priv, mctx);
memset(&priv, 0, sizeof(priv));
- if (key->key_alg == DST_ALG_ECDSA256) {
+ switch (key->key_alg) {
+ case DST_ALG_ECDSA256:
key->key_size = DNS_KEY_ECDSA256SIZE * 4;
- } else {
+ break;
+ case DST_ALG_ECDSA384:
key->key_size = DNS_KEY_ECDSA384SIZE * 4;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
return (ISC_R_SUCCESS);
}
key->label = isc_mem_strdup(key->mctx, label);
- if (key->key_alg == DST_ALG_ECDSA256) {
+ switch (key->key_alg) {
+ case DST_ALG_ECDSA256:
key->key_size = DNS_KEY_ECDSA256SIZE * 4;
- } else {
+ break;
+ case DST_ALG_ECDSA384:
key->key_size = DNS_KEY_ECDSA384SIZE * 4;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
pk11_return_session(pk11_ctx);
key->key_alg == DST_ALG_ED448);
REQUIRE(ec != NULL);
- if (key->key_alg == DST_ALG_ED25519) {
+ switch (key->key_alg) {
+ case DST_ALG_ED25519:
siglen = DNS_SIG_ED25519SIZE;
- } else {
+ break;
+ case DST_ALG_ED448:
siglen = DNS_SIG_ED448SIZE;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
pk11_ctx = isc_mem_get(dctx->mctx, sizeof(*pk11_ctx));
}
#define SETCURVE() \
- if (key->key_alg == DST_ALG_ED25519) { \
+ switch (key->key_alg) { \
+ case DST_ALG_ED25519: \
attr->pValue = isc_mem_get(key->mctx, \
sizeof(PK11_ECX_ED25519)); \
memmove(attr->pValue, PK11_ECX_ED25519, \
sizeof(PK11_ECX_ED25519)); \
attr->ulValueLen = sizeof(PK11_ECX_ED25519); \
- } else { \
+ break; \
+ case DST_ALG_ED448: \
attr->pValue = isc_mem_get(key->mctx, sizeof(PK11_ECX_ED448)); \
memmove(attr->pValue, PK11_ECX_ED448, sizeof(PK11_ECX_ED448)); \
attr->ulValueLen = sizeof(PK11_ECX_ED448); \
+ break; \
+ default: \
+ INSIST(0); \
+ ISC_UNREACHABLE(); \
}
#define FREECURVE() \
memset(pk11_ctx, 0, sizeof(*pk11_ctx));
isc_mem_put(key->mctx, pk11_ctx, sizeof(*pk11_ctx));
- if (key->key_alg == DST_ALG_ED25519) {
+ switch (key->key_alg) {
+ case DST_ALG_ED25519:
key->key_size = DNS_KEY_ED25519SIZE;
- } else {
+ break;
+ case DST_ALG_ED448:
key->key_size = DNS_KEY_ED448SIZE;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
return (ISC_R_SUCCESS);
REQUIRE(key->keydata.pkey != NULL);
- if (key->key_alg == DST_ALG_ED25519) {
+ switch (key->key_alg) {
+ case DST_ALG_ED25519:
len = DNS_KEY_ED25519SIZE;
- } else {
+ break;
+ case DST_ALG_ED448:
len = DNS_KEY_ED448SIZE;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
ec = key->keydata.pkey;
REQUIRE(key->key_alg == DST_ALG_ED25519 ||
key->key_alg == DST_ALG_ED448);
- if (key->key_alg == DST_ALG_ED25519) {
+ switch (key->key_alg) {
+ case DST_ALG_ED25519:
len = DNS_KEY_ED25519SIZE;
- } else {
+ break;
+ case DST_ALG_ED448:
len = DNS_KEY_ED448SIZE;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
isc_buffer_remainingregion(data, &r);
attr = ec->repr;
attr->type = CKA_EC_PARAMS;
- if (key->key_alg == DST_ALG_ED25519) {
- attr->pValue = isc_mem_get(key->mctx, sizeof(PK11_ECX_ED25519));
- memmove(attr->pValue, PK11_ECX_ED25519,
- sizeof(PK11_ECX_ED25519));
- attr->ulValueLen = sizeof(PK11_ECX_ED25519);
- } else {
- attr->pValue = isc_mem_get(key->mctx, sizeof(PK11_ECX_ED448));
- memmove(attr->pValue, PK11_ECX_ED448, sizeof(PK11_ECX_ED448));
- attr->ulValueLen = sizeof(PK11_ECX_ED448);
- }
+ SETCURVE();
+
attr++;
attr->type = CKA_EC_POINT;
attr->pValue = isc_mem_get(key->mctx, len);
dst__privstruct_free(&priv, mctx);
memset(&priv, 0, sizeof(priv));
- if (key->key_alg == DST_ALG_ED25519) {
+ switch (key->key_alg) {
+ case DST_ALG_ED25519:
key->key_size = DNS_KEY_ED25519SIZE;
- } else {
+ break;
+ case DST_ALG_ED448:
key->key_size = DNS_KEY_ED448SIZE;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
return (ISC_R_SUCCESS);
}
key->label = isc_mem_strdup(key->mctx, label);
- if (key->key_alg == DST_ALG_ED25519) {
+ switch (key->key_alg) {
+ case DST_ALG_ED25519:
key->key_size = DNS_KEY_ED25519SIZE;
- } else {
+ break;
+ case DST_ALG_ED448:
key->key_size = DNS_KEY_ED448SIZE;
+ break;
+ default:
+ INSIST(0);
+ ISC_UNREACHABLE();
}
pk11_return_session(pk11_ctx);