1 // SPDX-License-Identifier: BSD-2-Clause
2 package org.xbill.DNS;
3 
4 import java.io.IOException;
5 import java.util.Date;
6 
7 import org.xbill.DNS.DNSSEC.DNSSECException;
8 
9 import junit.framework.TestCase;
10 
11 public class DNSSECTest extends TestCase
12 {
13 	private TXTRecord txt = new TXTRecord(Name.root, DClass.IN, 3600, "test");
14 
testECDSALeadingZeroUndersize()15 	public void testECDSALeadingZeroUndersize() throws IOException, DNSSECException
16 	{
17 		DNSKEYRecord dnskey = (DNSKEYRecord) Record.fromString(Name.root, Type.DNSKEY, DClass.IN, 3600,
18 			"256 3 13 HgcQzDrxDm641ASGyEF0MXrjDji4XDnWzjrY9VoIn5GfAvHpuqI2W8yihplAz6C/56Zxq1XbAHjLZATfhZFmaA==", Name.root);
19 		RRSIGRecord rrsig = (RRSIGRecord) Record.fromString(Name.root, Type.RRSIG, DClass.IN, 3600,
20 			"TXT 13 0 3600 19700101000003 19700101000000 46271 . dRwMEthIeGiucMcEcDmwixM8/LZcZ+W6lMM0KDSY5rwAGrm1j7tS/VU6xs+rpD5dSRmBYosinkWD6Jk3zRmyBQ==", Name.root);
21 
22 		RRset rrset = new RRset();
23 		rrset.addRR(txt);
24 		rrset.addRR(rrsig);
25 		DNSSEC.verify(rrset, rrsig, dnskey, new Date(60));
26 	}
27 
testECDSALeadingZeroOversize()28 	public void testECDSALeadingZeroOversize() throws IOException, DNSSECException
29 	{
30 		DNSKEYRecord dnskey = (DNSKEYRecord) Record.fromString(Name.root, Type.DNSKEY, DClass.IN, 3600,
31 			"256 3 13 OYt2tO1n75q/Wb6CglqPVrU22f02clZehWamgXc9ZGPhVMAerzPR9/bhf1XxtC3xAR9riVuGh9CEPVvmiNqukQ==", Name.root);
32 		RRSIGRecord rrsig = (RRSIGRecord) Record.fromString(Name.root, Type.RRSIG, DClass.IN, 3600,
33 			"TXT 13 0 3600 19700101000003 19700101000000 25719 . m6sD/b0ZbfBXsQruhq5dYTnHGaA+PRTL5Y1W36rMdnGBb7eOJRRzDS5Wk5hZlrS4RUKQ/tKMCn7lsl9fn4U2lw==", Name.root);
34 
35 		RRset rrset = new RRset();
36 		rrset.addRR(txt);
37 		rrset.addRR(rrsig);
38 		DNSSEC.verify(rrset, rrsig, dnskey, new Date(60));
39 	}
40 
testDSALeadingZeroUndersize()41 	public void testDSALeadingZeroUndersize() throws DNSSECException, IOException
42 	{
43 		DNSKEYRecord dnskey = (DNSKEYRecord) Record.fromString(Name.root, Type.DNSKEY, DClass.IN, 3600,
44 			"256 3 3 AJYu3cw2nLqOuyYO5rahJtk0bjjF/KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64B81uRpH5t9jQTxeEu0ImbzRMqzVDZkVG9xD7nN1kuF2eEcbJ6nPRO6RpJxRR9samq8kTwWkNNZIaTHS0UJxueNQMLcf1z2heQabMuKTVjDhwgYjVNDaIKbEFuUL55TKRAt3Xr7t5zCMLaujMvqNHOzCFEusXN5mXjJqAj8J0l4B4tbL7M4iIFZeXJDXGCEcsBbNrVAfFnlOO06B6dkB8L", Name.root);
45 		RRSIGRecord rrsig = (RRSIGRecord) Record.fromString(Name.root, Type.RRSIG, DClass.IN, 3600l,
46 			"TXT 3 0 3600 19700101000003 19700101000000 36714 . AAAycZeIdBGB7vjlFzd5+ZgV8IxGRLpLierdV1KO4SGIy707hKUXJRc=", Name.root);
47 
48 		RRset set = new RRset();
49 		set.addRR(txt);
50 		set.addRR(rrsig);
51 		DNSSEC.verify(set, rrsig, dnskey, new Date(60));
52 	}
53 
testDSALeadingZeroOversize()54 	public void testDSALeadingZeroOversize() throws DNSSECException, IOException
55 	{
56 		DNSKEYRecord dnskey = (DNSKEYRecord) Record.fromString(Name.root, Type.DNSKEY, DClass.IN, 3600,
57 			"256 3 3 AJYu3cw2nLqOuyYO5rahJtk0bjjF/KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64B81uRpH5t9jQTxeEu0ImbzRMqzVDZkVG9xD7nN1kuF2eEcbJ6nPRO6RpJxRR9samq8kTwWkNNZIaTHS0UJxueNQMLcf1z2heQabMuKTVjDhwgYjVNDaIKbEFuUL55TKQflphJYUXcb2M3wKNGoXP7NufzhfVaDtiS44waWjC8IN98Ab+SPPfM4+xgTsgzWt8KvzL8hhqSW+4+5zjiQ6UG", Name.root);
58 		RRSIGRecord rrsig = (RRSIGRecord) Record.fromString(Name.root, Type.RRSIG, DClass.IN, 3600l,
59 			"TXT 3 0 3600 19700101000003 19700101000000 57407 . AIh8Bp0EFNszs3cB0gNatjWy8tBrgUAUe1gTHkVsm1pva1GYWOW/FbA=", Name.root);
60 
61 		RRset set = new RRset();
62 		set.addRR(txt);
63 		set.addRR(rrsig);
64 		DNSSEC.verify(set, rrsig, dnskey, new Date(60));
65 	}
66 }
67