Samba3 (and older windows versions) use gss.microsoft.com, win7 (and the RFC) use gss-tsig
static NTSTATUS create_tkey(struct dns_server *dns,
const char* name,
static NTSTATUS create_tkey(struct dns_server *dns,
const char* name,
struct dns_server_tkey **tkey)
{
NTSTATUS status;
struct dns_server_tkey **tkey)
{
NTSTATUS status;
return NT_STATUS_NO_MEMORY;
}
return NT_STATUS_NO_MEMORY;
}
+ k->algorithm = talloc_strdup(k, algorithm);
+ if (k->algorithm == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
+
status = samba_server_gensec_start(k,
dns->task->event_ctx,
dns->task->msg_ctx,
status = samba_server_gensec_start(k,
dns->task->event_ctx,
dns->task->msg_ctx,
ret_tkey->rr_class = DNS_QCLASS_ANY;
ret_tkey->length = UINT16_MAX;
ret_tkey->rr_class = DNS_QCLASS_ANY;
ret_tkey->length = UINT16_MAX;
- ret_tkey->rdata.tkey_record.algorithm = talloc_strdup(ret_tkey, ret_tkey->name);
+ ret_tkey->rdata.tkey_record.algorithm = talloc_strdup(ret_tkey,
+ in_tkey->rdata.tkey_record.algorithm);
if (ret_tkey->rdata.tkey_record.algorithm == NULL) {
return WERR_NOMEM;
}
if (ret_tkey->rdata.tkey_record.algorithm == NULL) {
return WERR_NOMEM;
}
if (tkey == NULL) {
status = create_tkey(dns, in->questions[0].name,
if (tkey == NULL) {
status = create_tkey(dns, in->questions[0].name,
+ in_tkey->rdata.tkey_record.algorithm,
&tkey);
if (!NT_STATUS_IS_OK(status)) {
ret_tkey->rdata.tkey_record.error = DNS_RCODE_BADKEY;
&tkey);
if (!NT_STATUS_IS_OK(status)) {
ret_tkey->rdata.tkey_record.error = DNS_RCODE_BADKEY;
struct dns_server_tkey {
const char *name;
enum dns_tkey_mode mode;
struct dns_server_tkey {
const char *name;
enum dns_tkey_mode mode;
struct auth_session_info *session_info;
struct gensec_security *gensec;
bool complete;
struct auth_session_info *session_info;
struct gensec_security *gensec;
bool complete;