1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * or more contributor license agreements.  See the NOTICE file
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed with this work for additional information
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * regarding copyright ownership.  The ASF licenses this file
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to you under the Apache License, Version 2.0 (the
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * "License"); you may not use this file except in compliance
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * with the License.  You may obtain a copy of the License at
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   http://www.apache.org/licenses/LICENSE-2.0
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * software distributed under the License is distributed on an
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * KIND, either express or implied.  See the License for the
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specific language governing permissions and limitations
17f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * under the License.
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.security.x509;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.BigInteger;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.asn1.ASN1Integer;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.asn1.ASN1Type;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * CRL Entry's CRL Number Extension (OID = 2.5.29.20).
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <pre>
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   CRLNumber ::= INTEGER (0..MAX)
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </pre>
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (as specified in RFC 3280 http://www.ietf.org/rfc/rfc3280.txt)
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
365c27fb80ffd335aa45dc8829ba3ecbc18c01e4e8Jesse Wilsonpublic final class CRLNumber extends ExtensionValue {
375c27fb80ffd335aa45dc8829ba3ecbc18c01e4e8Jesse Wilson    /** crl number value */
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final BigInteger number;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Constructs the object on the base of its encoded form.
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public CRLNumber(byte[] encoding) throws IOException {
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super(encoding);
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        number = new BigInteger((byte[]) ASN1.decode(encoding));
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the invalidity date.
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public BigInteger getNumber() {
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return number;
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns ASN.1 encoded form of this X.509 CRLNumber value.
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
585c27fb80ffd335aa45dc8829ba3ecbc18c01e4e8Jesse Wilson    @Override public byte[] getEncoded() {
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (encoding == null) {
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            encoding = ASN1.encode(number.toByteArray());
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return encoding;
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
658216dc1fd9d31867770439985c3d66570330e4c7Elliott Hughes    @Override public void dumpValue(StringBuilder sb, String prefix) {
668216dc1fd9d31867770439985c3d66570330e4c7Elliott Hughes        sb.append(prefix).append("CRL Number: [ ").append(number).append(" ]\n");
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * ASN.1 Encoder/Decoder.
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
722f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes    public static final ASN1Type ASN1 = ASN1Integer.getInstance();
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
74