1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.asn1.misc;
2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
34c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.DERBitString;
4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam/**
6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * The NetscapeCertType object.
7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * <pre>
8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *    NetscapeCertType ::= BIT STRING {
9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *         SSLClient               (0),
10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *         SSLServer               (1),
11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *         S/MIME                  (2),
12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *         Object Signing          (3),
13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *         Reserved                (4),
14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *         SSL CA                  (5),
15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *         S/MIME CA               (6),
16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam *         Object Signing CA       (7) }
17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * </pre>
18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */
19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class NetscapeCertType
20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    extends DERBitString
21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{
22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int        sslClient        = (1 << 7);
23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int        sslServer        = (1 << 6);
24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int        smime            = (1 << 5);
25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int        objectSigning    = (1 << 4);
26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int        reserved         = (1 << 3);
27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int        sslCA            = (1 << 2);
28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int        smimeCA          = (1 << 1);
29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static final int        objectSigningCA  = (1 << 0);
30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * Basic constructor.
33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     *
34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @param usage - the bitwise OR of the Key Usage flags giving the
35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * allowed uses for the key.
36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * e.g. (X509NetscapeCertType.sslCA | X509NetscapeCertType.smimeCA)
37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
38b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public NetscapeCertType(
39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        int usage)
40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        super(getBytes(usage), getPadBits(usage));
42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public NetscapeCertType(
45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        DERBitString usage)
46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        super(usage.getBytes(), usage.getPadBits());
48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
49b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public String toString()
51b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
52b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return "NetscapeCertType: 0x" + Integer.toHexString(data[0] & 0xff);
53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
54b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}
55