unsigned int mask;
if (external) {
- return (priv->nelements == 0) ? 0 : -1;
+ return (priv->nelements == 0) ? ISC_R_SUCCESS
+ : DST_R_INVALIDPRIVATEKEY;
}
for (i = 0; i < RSA_NTAGS; i++) {
}
}
if (i == RSA_NTAGS) {
- return -1;
+ return DST_R_INVALIDPRIVATEKEY;
}
have[i] = true;
}
have[TAG_RSA_EXPONENT2 & mask] &&
have[TAG_RSA_COEFFICIENT & mask];
}
- return ok ? 0 : -1;
+ return ok ? ISC_R_SUCCESS : DST_R_INVALIDPRIVATEKEY;
}
static int
unsigned int mask;
if (external) {
- return (priv->nelements == 0) ? 0 : -1;
+ return (priv->nelements == 0) ? ISC_R_SUCCESS
+ : DST_R_INVALIDPRIVATEKEY;
}
for (i = 0; i < ECDSA_NTAGS; i++) {
}
}
if (i == ECDSA_NTAGS) {
- return -1;
+ return DST_R_INVALIDPRIVATEKEY;
}
have[i] = true;
}
ok = have[TAG_ECDSA_LABEL & mask] || have[TAG_ECDSA_PRIVATEKEY & mask];
- return ok ? 0 : -1;
+ return ok ? ISC_R_SUCCESS : DST_R_INVALIDPRIVATEKEY;
}
-static int
+static isc_result_t
check_eddsa(const dst_private_t *priv, bool external) {
int i, j;
bool have[EDDSA_NTAGS];
unsigned int mask;
if (external) {
- return (priv->nelements == 0) ? 0 : -1;
+ return (priv->nelements == 0) ? ISC_R_SUCCESS
+ : DST_R_INVALIDPRIVATEKEY;
}
for (i = 0; i < EDDSA_NTAGS; i++) {
}
}
if (i == EDDSA_NTAGS) {
- return -1;
+ return DST_R_INVALIDPRIVATEKEY;
}
have[i] = true;
}
ok = have[TAG_EDDSA_LABEL & mask] || have[TAG_EDDSA_PRIVATEKEY & mask];
- return ok ? 0 : -1;
+ return ok ? ISC_R_SUCCESS : DST_R_INVALIDPRIVATEKEY;
}
-static int
+static isc_result_t
check_hmac_md5(const dst_private_t *priv, bool old) {
int i, j;
if (old && priv->nelements == OLD_HMACMD5_NTAGS &&
priv->elements[0].tag == TAG_HMACMD5_KEY)
{
- return 0;
+ return ISC_R_SUCCESS;
}
- return -1;
+ return DST_R_INVALIDPRIVATEKEY;
}
/*
* We must be new format at this point.
}
}
if (j == priv->nelements) {
- return -1;
+ return DST_R_INVALIDPRIVATEKEY;
}
}
return 0;
}
-static int
+static isc_result_t
check_hmac_sha(const dst_private_t *priv, unsigned int ntags,
unsigned int alg) {
unsigned int i, j;
if (priv->nelements != ntags) {
- return -1;
+ return DST_R_INVALIDPRIVATEKEY;
}
for (i = 0; i < ntags; i++) {
for (j = 0; j < priv->nelements; j++) {
}
}
if (j == priv->nelements) {
- return -1;
+ return DST_R_INVALIDPRIVATEKEY;
}
}
- return 0;
+ return ISC_R_SUCCESS;
}
-static int
+static isc_result_t
check_data(const dst_private_t *priv, const unsigned int alg, bool old,
bool external) {
switch (alg) {
isc_result_t
dst__privstruct_parse(dst_key_t *key, unsigned int alg, isc_lex_t *lex,
isc_mem_t *mctx, dst_private_t *priv) {
- int n = 0, major, minor, check;
+ int n = 0, major, minor;
isc_buffer_t b;
isc_token_t token;
unsigned char *data = NULL;
goto cleanup;
}
- check = check_data(priv, alg, true, external);
- if (check < 0) {
- result = DST_R_INVALIDPRIVATEKEY;
- goto cleanup;
- } else if (check != ISC_R_SUCCESS) {
- result = check;
- goto cleanup;
- }
+ CHECK(check_data(priv, alg, true, external));
key->external = external;