1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.asn1.x509;
2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.DERBitString;
4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam/**
6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * The ReasonFlags object.
7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * <pre>
8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * ReasonFlags ::= BIT STRING {
9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *      unused                  (0),
10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *      keyCompromise           (1),
11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *      cACompromise            (2),
12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *      affiliationChanged      (3),
13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *      superseded              (4),
14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *      cessationOfOperation    (5),
15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *      certificateHold         (6),
16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *      privilegeWithdrawn      (7),
17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *      aACompromise            (8) }
18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * </pre>
19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */
20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class ReasonFlags
21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    extends DERBitString
22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{
23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @deprecated use lower case version
25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int UNUSED                  = (1 << 7);
27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @deprecated use lower case version
29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int KEY_COMPROMISE          = (1 << 6);
31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @deprecated use lower case version
33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int CA_COMPROMISE           = (1 << 5);
35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @deprecated use lower case version
37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
38b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int AFFILIATION_CHANGED     = (1 << 4);
39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @deprecated use lower case version
41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int SUPERSEDED              = (1 << 3);
43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @deprecated use lower case version
45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int CESSATION_OF_OPERATION  = (1 << 2);
47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @deprecated use lower case version
49b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int CERTIFICATE_HOLD        = (1 << 1);
51b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
52b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @deprecated use lower case version
53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
54b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int PRIVILEGE_WITHDRAWN     = (1 << 0);
55b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
56b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @deprecated use lower case version
57b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
58b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int AA_COMPROMISE           = (1 << 15);
59b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
60b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int unused                  = (1 << 7);
61b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int keyCompromise           = (1 << 6);
62b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int cACompromise            = (1 << 5);
63b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int affiliationChanged      = (1 << 4);
64b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int superseded              = (1 << 3);
65b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int cessationOfOperation    = (1 << 2);
66b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int certificateHold         = (1 << 1);
67b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int privilegeWithdrawn      = (1 << 0);
68b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int aACompromise            = (1 << 15);
69b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
70b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
71b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @param reasons - the bitwise OR of the Key Reason flags giving the
72b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * allowed uses for the key.
73b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
74b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public ReasonFlags(
75b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        int reasons)
76b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
77b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        super(getBytes(reasons), getPadBits(reasons));
78b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
79b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
80b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public ReasonFlags(
81b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        DERBitString reasons)
82b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
83b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        super(reasons.getBytes(), reasons.getPadBits());
84b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
85b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}
86