Issue #2. Handle CNAME responses
[captive-validator.git] / src / com / verisign / tat / dnssec / SecurityStatus.java
1 /***************************** -*- Java -*- ********************************\
2  *                                                                         *
3  *   Copyright (c) 2009 VeriSign, Inc. All rights reserved.                *
4  *                                                                         *
5  * This software is provided solely in connection with the terms of the    *
6  * license agreement.  Any other use without the prior express written     *
7  * permission of VeriSign is completely prohibited.  The software and      *
8  * documentation are "Commercial Items", as that term is defined in 48     *
9  * C.F.R.  section 2.101, consisting of "Commercial Computer Software" and *
10  * "Commercial Computer Software Documentation" as such terms are defined  *
11  * in 48 C.F.R. section 252.227-7014(a)(5) and 48 C.F.R. section           *
12  * 252.227-7014(a)(1), and used in 48 C.F.R. section 12.212 and 48 C.F.R.  *
13  * section 227.7202, as applicable.  Pursuant to the above and other       *
14  * relevant sections of the Code of Federal Regulations, as applicable,    *
15  * VeriSign's publications, commercial computer software, and commercial   *
16  * computer software documentation are distributed and licensed to United  *
17  * States Government end users with only those rights as granted to all    *
18  * other end users, according to the terms and conditions contained in the *
19  * license agreement(s) that accompany the products and software           *
20  * documentation.                                                          *
21  *                                                                         *
22 \***************************************************************************/
23
24 package com.verisign.tat.dnssec;
25
26 import java.io.Serializable;
27
28 /**
29  * Codes for DNSSEC security statuses.
30  *
31  * @author davidb
32  */
33 public class SecurityStatus implements Serializable {
34     private static final long serialVersionUID = 1L;
35     public static final byte  INVALID          = -1;
36
37     /**
38      * UNCHECKED means that object has yet to be validated.
39      */
40     public static final byte UNCHECKED = 0;
41
42     /**
43      * BOGUS means that the object (RRset or message) failed to validate
44      * (according to local policy), but should have validated.
45      */
46     public static final byte BOGUS = 1;
47
48     /**
49      * BAD is a synonym for BOGUS.
50      */
51     public static final byte BAD = BOGUS;
52
53     /**
54      * INDTERMINATE means that the object is insecure, but not authoritatively
55      * so. Generally this means that the RRset is not below a configured trust
56      * anchor.
57      */
58     public static final byte INDETERMINATE = 2;
59
60     /**
61      * INSECURE means that the object is authoritatively known to be insecure.
62      * Generally this means that this RRset is below a trust anchor, but also
63      * below a verified, insecure delegation.
64      */
65     public static final byte INSECURE = 3;
66
67     /**
68      * SECURE means that the object (RRset or message) validated according to
69      * local policy.
70      */
71     public static final byte SECURE = 4;
72     private byte status;
73
74     public SecurityStatus() {
75         status = UNCHECKED;
76     }
77
78     public SecurityStatus(byte status) {
79         setStatus(status);
80     }
81
82     public static String string(int status) {
83         switch (status) {
84         case INVALID:
85             return "Invalid";
86
87         case BOGUS:
88             return "Bogus";
89
90         case SECURE:
91             return "Secure";
92
93         case INSECURE:
94             return "Insecure";
95
96         case INDETERMINATE:
97             return "Indeterminate";
98
99         case UNCHECKED:
100             return "Unchecked";
101
102         default:
103             return "UNKNOWN";
104         }
105     }
106
107     public byte getStatus() {
108         return status;
109     }
110
111     public void setStatus(byte status) {
112         this.status = status;
113     }
114 }