}
strcpy (key -> name, name);
- key -> algorithm = dmalloc (strlen (algorithm) + 1, MDL);
- if (!key -> algorithm) {
- omapi_auth_key_dereference (&key, MDL);
- return ISC_R_NOMEMORY;
+ /* If the algorithm name isn't an FQDN, tack on the
+ .SIG-ALG.REG.NET. domain. */
+ if (strchr (algorithm, '.') == 0) {
+ static char add[] = ".SIG-ALG.REG.INT.";
+ key -> algorithm = dmalloc (strlen (algorithm) +
+ sizeof (add), MDL);
+ if (!key -> algorithm) {
+ omapi_auth_key_dereference (&key, MDL);
+ return ISC_R_NOMEMORY;
+ }
+ strcpy (key -> algorithm, algorithm);
+ strcat (key -> algorithm, add);
+ } else {
+ key -> algorithm = dmalloc (strlen (algorithm) + 1, MDL);
+ if (!key -> algorithm) {
+ omapi_auth_key_dereference (&key, MDL);
+ return ISC_R_NOMEMORY;
+ }
+ strcpy (key -> algorithm, algorithm);
}
- strcpy (key -> algorithm, algorithm);
status = omapi_data_string_new (&key -> key, secret_len, MDL);
if (status != ISC_R_SUCCESS) {
#include <omapip/omapip_p.h>
#include <arpa/inet.h>
+#include <arpa/nameser.h>
OMAPI_OBJECT_ALLOC (omapi_connection,
omapi_connection_object_t, omapi_type_connection)
}
return status;
}
+printf("EINPROGRESS\n");
c -> state = omapi_connection_connecting;
return ISC_R_INCOMPLETE;
}
(a, (omapi_object_t *)0, "key", &key);
if (status == ISC_R_SUCCESS) {
- if (omapi_td_strcmp (algorithm -> value, "hmac-md5") == 0) {
+ if ((algorithm -> value -> type == omapi_datatype_data ||
+ algorithm -> value -> type == omapi_datatype_string) &&
+ strncasecmp (algorithm -> value -> u.buffer.value,
+ NS_TSIG_ALG_HMAC_MD5 ".",
+ algorithm -> value -> u.buffer.len) == 0) {
algorithm_id = KEY_HMAC_MD5;
} else {
status = ISC_R_INVALIDARG;