1 /*	$NetBSD: smimea_53.c,v 1.8 2022/09/23 12:15:31 christos Exp $	*/
2 
3 /*
4  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
5  *
6  * SPDX-License-Identifier: MPL-2.0
7  *
8  * This Source Code Form is subject to the terms of the Mozilla Public
9  * License, v. 2.0. If a copy of the MPL was not distributed with this
10  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
11  *
12  * See the COPYRIGHT file distributed with this work for additional
13  * information regarding copyright ownership.
14  */
15 
16 #ifndef RDATA_GENERIC_SMIMEA_53_C
17 #define RDATA_GENERIC_SMIMEA_53_C
18 
19 #define RRTYPE_SMIMEA_ATTRIBUTES 0
20 
21 static isc_result_t
fromtext_smimea(ARGS_FROMTEXT)22 fromtext_smimea(ARGS_FROMTEXT) {
23 	REQUIRE(type == dns_rdatatype_smimea);
24 
25 	return (generic_fromtext_tlsa(CALL_FROMTEXT));
26 }
27 
28 static isc_result_t
totext_smimea(ARGS_TOTEXT)29 totext_smimea(ARGS_TOTEXT) {
30 	REQUIRE(rdata != NULL);
31 	REQUIRE(rdata->type == dns_rdatatype_smimea);
32 
33 	return (generic_totext_tlsa(CALL_TOTEXT));
34 }
35 
36 static isc_result_t
fromwire_smimea(ARGS_FROMWIRE)37 fromwire_smimea(ARGS_FROMWIRE) {
38 	REQUIRE(type == dns_rdatatype_smimea);
39 
40 	return (generic_fromwire_tlsa(CALL_FROMWIRE));
41 }
42 
43 static isc_result_t
towire_smimea(ARGS_TOWIRE)44 towire_smimea(ARGS_TOWIRE) {
45 	isc_region_t sr;
46 
47 	REQUIRE(rdata->type == dns_rdatatype_smimea);
48 	REQUIRE(rdata->length != 0);
49 
50 	UNUSED(cctx);
51 
52 	dns_rdata_toregion(rdata, &sr);
53 	return (mem_tobuffer(target, sr.base, sr.length));
54 }
55 
56 static int
compare_smimea(ARGS_COMPARE)57 compare_smimea(ARGS_COMPARE) {
58 	isc_region_t r1;
59 	isc_region_t r2;
60 
61 	REQUIRE(rdata1->type == rdata2->type);
62 	REQUIRE(rdata1->rdclass == rdata2->rdclass);
63 	REQUIRE(rdata1->type == dns_rdatatype_smimea);
64 	REQUIRE(rdata1->length != 0);
65 	REQUIRE(rdata2->length != 0);
66 
67 	dns_rdata_toregion(rdata1, &r1);
68 	dns_rdata_toregion(rdata2, &r2);
69 	return (isc_region_compare(&r1, &r2));
70 }
71 
72 static isc_result_t
fromstruct_smimea(ARGS_FROMSTRUCT)73 fromstruct_smimea(ARGS_FROMSTRUCT) {
74 	REQUIRE(type == dns_rdatatype_smimea);
75 
76 	return (generic_fromstruct_tlsa(CALL_FROMSTRUCT));
77 }
78 
79 static isc_result_t
tostruct_smimea(ARGS_TOSTRUCT)80 tostruct_smimea(ARGS_TOSTRUCT) {
81 	dns_rdata_smimea_t *smimea = target;
82 
83 	REQUIRE(rdata != NULL);
84 	REQUIRE(rdata->type == dns_rdatatype_smimea);
85 	REQUIRE(smimea != NULL);
86 
87 	smimea->common.rdclass = rdata->rdclass;
88 	smimea->common.rdtype = rdata->type;
89 	ISC_LINK_INIT(&smimea->common, link);
90 
91 	return (generic_tostruct_tlsa(CALL_TOSTRUCT));
92 }
93 
94 static void
freestruct_smimea(ARGS_FREESTRUCT)95 freestruct_smimea(ARGS_FREESTRUCT) {
96 	dns_rdata_smimea_t *smimea = source;
97 
98 	REQUIRE(smimea != NULL);
99 	REQUIRE(smimea->common.rdtype == dns_rdatatype_smimea);
100 
101 	generic_freestruct_tlsa(source);
102 }
103 
104 static isc_result_t
additionaldata_smimea(ARGS_ADDLDATA)105 additionaldata_smimea(ARGS_ADDLDATA) {
106 	REQUIRE(rdata->type == dns_rdatatype_smimea);
107 
108 	UNUSED(rdata);
109 	UNUSED(add);
110 	UNUSED(arg);
111 
112 	return (ISC_R_SUCCESS);
113 }
114 
115 static isc_result_t
digest_smimea(ARGS_DIGEST)116 digest_smimea(ARGS_DIGEST) {
117 	isc_region_t r;
118 
119 	REQUIRE(rdata->type == dns_rdatatype_smimea);
120 
121 	dns_rdata_toregion(rdata, &r);
122 
123 	return ((digest)(arg, &r));
124 }
125 
126 static bool
checkowner_smimea(ARGS_CHECKOWNER)127 checkowner_smimea(ARGS_CHECKOWNER) {
128 	REQUIRE(type == dns_rdatatype_smimea);
129 
130 	UNUSED(name);
131 	UNUSED(type);
132 	UNUSED(rdclass);
133 	UNUSED(wildcard);
134 
135 	return (true);
136 }
137 
138 static bool
checknames_smimea(ARGS_CHECKNAMES)139 checknames_smimea(ARGS_CHECKNAMES) {
140 	REQUIRE(rdata->type == dns_rdatatype_smimea);
141 
142 	UNUSED(rdata);
143 	UNUSED(owner);
144 	UNUSED(bad);
145 
146 	return (true);
147 }
148 
149 static int
casecompare_smimea(ARGS_COMPARE)150 casecompare_smimea(ARGS_COMPARE) {
151 	return (compare_smimea(rdata1, rdata2));
152 }
153 
154 #endif /* RDATA_GENERIC_SMIMEA_53_C */
155