/*
 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
 *
 * SPDX-License-Identifier: MPL-2.0
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0.  If a copy of the MPL was not distributed with this
 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
 *
 * See the COPYRIGHT file distributed with this work for additional
 * information regarding copyright ownership.
 */

// NS4

include "purgekeys.conf";

key rndc_key {
	secret "1234abcd8765";
	algorithm @DEFAULT_HMAC@;
};

controls {
	inet 10.53.0.4 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
};

key "sha1" {
	algorithm "hmac-sha1";
	secret "FrSt77yPTFx6hTs4i2tKLB9LmE0=";
};

key "sha224" {
	algorithm "hmac-sha224";
	secret "hXfwwwiag2QGqblopofai9NuW28q/1rH4CaTnA==";
};

key "sha256" {
	algorithm "hmac-sha256";
	secret "R16NojROxtxH/xbDl//ehDsHm5DjWTQ2YXV+hGC2iBY=";
};

key "keyforview1" {
	algorithm @DEFAULT_HMAC@;
	secret "YPfMoAk6h+3iN8MDRQC004iSNHY=";
};

key "keyforview2" {
	algorithm @DEFAULT_HMAC@;
	secret "4xILSZQnuO1UKubXHkYUsvBRPu8=";
};

key "keyforview3" {
	algorithm @DEFAULT_HMAC@;
	secret "C1Azf+gGPMmxrUg/WQINP6eV9Y0=";
};

dnssec-policy "test" {
	keys {
		csk key-directory lifetime 0 algorithm 14;
	};
};

options {
	query-source address 10.53.0.4;
	port @PORT@;
	pid-file "named.pid";
	listen-on { 10.53.0.4; };
	listen-on-v6 { none; };
	allow-transfer { any; };
	recursion no;
	dnssec-policy "test";
	dnssec-validation no;
};

view "inherit" {
	match-clients { key "sha1"; };

	/* Inherit dnssec-policy 'test' */
	zone "inherit.inherit.signed" {
		type primary;
		file "inherit.inherit.signed.db";
	};

	/* Override dnssec-policy */
	zone "override.inherit.signed" {
		type primary;
		file "override.inherit.signed.db";
		dnssec-policy "default";
	};

	/* Unset dnssec-policy */
	zone "none.inherit.signed" {
		type primary;
		file "none.inherit.signed.db";
		dnssec-policy "none";
	};
};

view "override" {
	match-clients { key "sha224"; };
	dnssec-policy "default";

	/* Inherit dnssec-policy 'test' */
	zone "inherit.override.signed" {
		type primary;
		file "inherit.override.signed.db";
	};

	/* Override dnssec-policy */
	zone "override.override.signed" {
		type primary;
		file "override.override.signed.db";
		dnssec-policy "test";
	};

	/* Unset dnssec-policy */
	zone "none.override.signed" {
		type primary;
		file "none.override.signed.db";
		dnssec-policy "none";
	};
};

view "none" {
	match-clients { key "sha256"; };
	dnssec-policy "none";

	/* Inherit dnssec-policy 'none' */
	zone "inherit.none.signed" {
		type primary;
		file "inherit.none.signed.db";
	};

	/* Override dnssec-policy */
	zone "override.none.signed" {
		type primary;
		file "override.none.signed.db";
		dnssec-policy "test";
	};

	/* Unset dnssec-policy */
	zone "none.none.signed" {
		type primary;
		file "none.none.signed.db";
		dnssec-policy "none";
	};
};

view "example1" {
	match-clients { key "keyforview1"; };

	allow-update { any; };

	zone "example.net" {
		type primary;
		inline-signing no;
		file "example1.db";
	};

	zone "purgekeys.kasp" {
		type primary;
		file "purgekeys.kasp.example1.db";
		dnssec-policy "purgekeys";
	};
};

view "example2" {
	match-clients { key "keyforview2"; };

	zone "example.net" {
		type primary;
		file "example2.db";
	};

	zone "purgekeys.kasp" {
		type primary;
		file "purgekeys.kasp.example2.db";
		dnssec-policy "purgekeys";
	};
};

view "example3" {
	match-clients { key "keyforview3"; };
	zone "example.net" {
		in-view example2;
	};
};
