Home | History | Annotate | Download | only in cert
      1 package tests.security.cert;
      2 
      3 import dalvik.annotation.AndroidOnly;
      4 
      5 import junit.framework.TestCase;
      6 
      7 import org.apache.harmony.security.asn1.ASN1Integer;
      8 import org.apache.harmony.security.asn1.ASN1OctetString;
      9 import org.apache.harmony.security.tests.support.cert.TestUtils;
     10 
     11 import java.io.ByteArrayInputStream;
     12 import java.io.IOException;
     13 import java.math.BigInteger;
     14 import java.security.InvalidKeyException;
     15 import java.security.NoSuchAlgorithmException;
     16 import java.security.NoSuchProviderException;
     17 import java.security.Principal;
     18 import java.security.PublicKey;
     19 import java.security.SignatureException;
     20 import java.security.cert.CRL;
     21 import java.security.cert.CRLException;
     22 import java.security.cert.Certificate;
     23 import java.security.cert.CertificateException;
     24 import java.security.cert.CertificateFactory;
     25 import java.security.cert.X509CRL;
     26 import java.security.cert.X509CRLEntry;
     27 import java.security.cert.X509CRLSelector;
     28 import java.security.cert.X509Certificate;
     29 import java.util.ArrayList;
     30 import java.util.Collection;
     31 import java.util.Date;
     32 import java.util.Set;
     33 
     34 import javax.security.auth.x500.X500Principal;
     35 
     36 public class X509CRLSelector2Test extends TestCase {
     37 
     38     protected void setUp() throws Exception {
     39         super.setUp();
     40     }
     41 
     42     protected void tearDown() throws Exception {
     43         super.tearDown();
     44     }
     45 
     46     /**
     47      * constructor testing.
     48      *
     49      */
     50     public void testX509CRLSelector() {
     51         X509CRLSelector selector = new X509CRLSelector();
     52         assertNull(selector.getDateAndTime());
     53         assertNull(selector.getCertificateChecking());
     54         assertNull(selector.getIssuerNames());
     55         assertNull(selector.getIssuers());
     56         assertNull(selector.getMaxCRL());
     57         assertNull(selector.getMinCRL());
     58     }
     59 
     60     /**
     61      * addIssuer(X500Principal issuer) method testing. Tests if CRLs with
     62      * specified issuers match the selector, and if not specified issuer does
     63      * not match the selector.
     64      */
     65     public void testAddIssuerLjavax_security_auth_x500_X500Principal02() {
     66         X509CRLSelector selector = new X509CRLSelector();
     67         X500Principal iss1 = new X500Principal("O=First Org.");
     68         X500Principal iss2 = new X500Principal("O=Second Org.");
     69         CRL crl1 = new TestCRL(iss1);
     70         CRL crl2 = new TestCRL(iss2);
     71 
     72         selector.addIssuer(iss1);
     73         assertTrue("The CRL should match the selection criteria.", selector
     74                 .match(crl1));
     75         assertFalse("The CRL should not match the selection criteria.",
     76                 selector.match(crl2));
     77         selector.addIssuer(iss2);
     78         assertTrue("The CRL should match the selection criteria.", selector
     79                 .match(crl2));
     80     }
     81 
     82     /**
     83      * addIssuerName(String name) method testing. Tests if CRLs with specified
     84      * issuers match the selector, and if not specified issuer does not match
     85      * the selector.
     86      */
     87     public void testAddIssuerNameLjava_lang_String03() {
     88         X509CRLSelector selector = new X509CRLSelector();
     89         String iss1 = "O=First Org.";
     90         String iss2 = "O=Second Org.";
     91         TestCRL crl1 = new TestCRL(new X500Principal(iss1));
     92         TestCRL crl2 = new TestCRL(new X500Principal(iss2));
     93 
     94         try {
     95             selector.addIssuerName(iss1);
     96         } catch (IOException e) {
     97             e.printStackTrace();
     98             fail("Unexpected IOException was thrown.");
     99         }
    100         assertTrue("The CRL should match the selection criteria.", selector
    101                 .match(crl1));
    102         assertFalse("The CRL should not match the selection criteria.",
    103                 selector.match(crl2));
    104         try {
    105             selector.addIssuerName(iss2);
    106         } catch (IOException e) {
    107             e.printStackTrace();
    108             fail("Unexpected IOException was thrown.");
    109         }
    110         assertTrue("The CRL should match the selection criteria.", selector
    111                 .match(crl2));
    112     }
    113 
    114     /**
    115      * setIssuerNames(Collection <?> names) method testing. Tests if CRLs with
    116      * any issuers match the selector in the case of null issuerNames criteria,
    117      * if specified issuers match the selector, if not specified issuer does not
    118      * match the selector, and if the internal collection of issuer names is
    119      * copied during initialization.
    120      */
    121     @SuppressWarnings("unchecked")
    122     public void testSetIssuerNamesLjava_util_Collection02() {
    123         X509CRLSelector selector = new X509CRLSelector();
    124         String iss1 = "O=First Org.";
    125         byte[] iss2 = new byte[]
    126         // manually obtained DER encoding of "O=Second Org." issuer name;
    127         { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11, 83, 101, 99, 111,
    128                 110, 100, 32, 79, 114, 103, 46 };
    129 
    130         String iss3 = "O=Third Org.";
    131         TestCRL crl1 = new TestCRL(new X500Principal(iss1));
    132         TestCRL crl2 = new TestCRL(new X500Principal(iss2));
    133         TestCRL crl3 = new TestCRL(new X500Principal(iss3));
    134 
    135         try {
    136             selector.setIssuerNames(null);
    137         } catch (IOException e) {
    138             e.printStackTrace();
    139             fail("Unexpected IOException was thrown.");
    140         }
    141         assertTrue("Any CRL issuers should match in the case of null issuers.",
    142                 selector.match(crl1) && selector.match(crl2));
    143 
    144         ArrayList issuers = new ArrayList(2);
    145         issuers.add(iss1);
    146         issuers.add(iss2);
    147         try {
    148             selector.setIssuerNames(issuers);
    149         } catch (IOException e) {
    150             e.printStackTrace();
    151             fail("Unexpected IOException was thrown.");
    152         }
    153         assertTrue("The CRL should match the selection criteria.", selector
    154                 .match(crl1)
    155                 && selector.match(crl2));
    156         assertFalse("The CRL should not match the selection criteria.",
    157                 selector.match(crl3));
    158         issuers.add(iss3);
    159         assertFalse("The internal issuer collection is not protected "
    160                 + "against the modifications.", selector.match(crl3));
    161     }
    162 
    163     /**
    164      * setIssuers(Collection <X500Principal> issuers) method testing. Tests if
    165      * CRLs with any issuers match the selector in the case of null issuerNames
    166      * criteria, if specified issuers match the selector, and if not specified
    167      * issuer does not match the selector.
    168      */
    169     public void testSetIssuersLjava_util_Collection() {
    170         X509CRLSelector selector = new X509CRLSelector();
    171         X500Principal iss1 = new X500Principal("O=First Org.");
    172         X500Principal iss2 = new X500Principal("O=Second Org.");
    173         X500Principal iss3 = new X500Principal("O=Third Org.");
    174         TestCRL crl1 = new TestCRL(iss1);
    175         TestCRL crl2 = new TestCRL(iss2);
    176         TestCRL crl3 = new TestCRL(iss3);
    177 
    178         selector.setIssuers(null);
    179         assertTrue("Any CRL issuers should match in the case of null issuers.",
    180                 selector.match(crl1) && selector.match(crl2));
    181 
    182         ArrayList<X500Principal> issuers = new ArrayList<X500Principal>(2);
    183         issuers.add(iss1);
    184         issuers.add(iss2);
    185         selector.setIssuers(issuers);
    186         assertTrue("The CRL should match the selection criteria.", selector
    187                 .match(crl1)
    188                 && selector.match(crl2));
    189         assertFalse("The CRL should not match the selection criteria.",
    190                 selector.match(crl3));
    191         issuers.add(iss3);
    192         assertFalse("The internal issuer collection is not protected "
    193                 + "against the modifications.", selector.match(crl3));
    194     }
    195 
    196     /**
    197      * addIssuerName(byte[] name) method testing. Tests if CRLs with specified
    198      * issuers match the selector, and if not specified issuer does not match
    199      * the selector.
    200      */
    201     public void testAddIssuerName$B() {
    202         X509CRLSelector selector = new X509CRLSelector();
    203         byte[] iss1 = new byte[]
    204         // manually obtained DER encoding of "O=First Org." issuer name;
    205         { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10, 70, 105, 114, 115,
    206                 116, 32, 79, 114, 103, 46 };
    207         byte[] iss2 = new byte[]
    208         // manually obtained DER encoding of "O=Second Org." issuer name;
    209         { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11, 83, 101, 99, 111,
    210                 110, 100, 32, 79, 114, 103, 46 };
    211         TestCRL crl1 = new TestCRL(new X500Principal(iss1));
    212         TestCRL crl2 = new TestCRL(new X500Principal(iss2));
    213 
    214         try {
    215             selector.addIssuerName(iss1);
    216         } catch (IOException e) {
    217             e.printStackTrace();
    218             fail("Unexpected IOException was thrown.");
    219         }
    220         assertTrue("The CRL should match the selection criteria.", selector
    221                 .match(crl1));
    222         assertFalse("The CRL should not match the selection criteria.",
    223                 selector.match(crl2));
    224         try {
    225             selector.addIssuerName(iss2);
    226         } catch (IOException e) {
    227             e.printStackTrace();
    228             fail("Unexpected IOException was thrown.");
    229         }
    230         assertTrue("The CRL should match the selection criteria.", selector
    231                 .match(crl2));
    232     }
    233 
    234     /**
    235      * setMinCRLNumber(BigInteger minCRL) method testing. Tests if CRLs with any
    236      * crl number value match the selector in the case of null crlNumber
    237      * criteria, if specified minCRL value matches the selector, and if CRL with
    238      * inappropriate crlNumber value does not match the selector.
    239      */
    240     @AndroidOnly("Uses specific class: " +
    241             "org.apache.harmony.security.asn1.ASN1OctetString.")
    242     public void testSetMinCRLNumberLjava_math_BigInteger() {
    243         X509CRLSelector selector = new X509CRLSelector();
    244         BigInteger minCRL = new BigInteger("10000");
    245         CRL crl = new TestCRL(minCRL);
    246 
    247         selector.setMinCRLNumber(null);
    248         assertTrue("Any CRL should match in the case of null minCRLNumber.",
    249                 selector.match(crl));
    250         selector.setMinCRLNumber(minCRL);
    251         assertTrue("The CRL should match the selection criteria.", selector
    252                 .match(crl));
    253         selector.setMinCRLNumber(new BigInteger("10001"));
    254         assertFalse("The CRL should not match the selection criteria.",
    255                 selector.match(crl));
    256     }
    257 
    258     /**
    259      * setMaxCRLNumber(BigInteger maxCRL) method testing. Tests if CRLs with any
    260      * crl number value match the selector in the case of null crlNumber
    261      * criteria, if specified maxCRL value matches the selector, and if CRL with
    262      * inappropriate crlNumber value does not match the selector.
    263      */
    264     @AndroidOnly("Uses specific class: " +
    265             "org.apache.harmony.security.asn1.ASN1OctetString.")
    266     public void testSetMaxCRLNumberLjava_math_BigInteger() {
    267         X509CRLSelector selector = new X509CRLSelector();
    268         BigInteger maxCRL = new BigInteger("10000");
    269         TestCRL crl = new TestCRL(maxCRL);
    270 
    271         selector.setMaxCRLNumber(null);
    272         assertTrue("Any CRL should match in the case of null minCRLNumber.",
    273                 selector.match(crl));
    274         selector.setMaxCRLNumber(maxCRL);
    275         assertTrue("The CRL should match the selection criteria.", selector
    276                 .match(crl));
    277         selector.setMaxCRLNumber(new BigInteger("9999"));
    278         assertFalse("The CRL should not match the selection criteria.",
    279                 selector.match(crl));
    280     }
    281 
    282     /**
    283      * setDateAndTime(Date dateAndTime) method testing. Tests if CRLs with any
    284      * update dates match the selector in the case of null dateAndTime criteria,
    285      * if correct dates match and incorrect do not match the selector.
    286      */
    287     public void testSetDateAndTimeLjava_util_Date() {
    288         X509CRLSelector selector = new X509CRLSelector();
    289         TestCRL crl = new TestCRL(new Date(200), new Date(300));
    290         selector.setDateAndTime(null);
    291         assertTrue("Any CRL should match in the case of null dateAndTime.",
    292                 selector.match(crl));
    293         selector.setDateAndTime(new Date(200));
    294         assertTrue("The CRL should match the selection criteria.", selector
    295                 .match(crl));
    296         selector.setDateAndTime(new Date(250));
    297         assertTrue("The CRL should match the selection criteria.", selector
    298                 .match(crl));
    299         selector.setDateAndTime(new Date(300));
    300         assertTrue("The CRL should match the selection criteria.", selector
    301                 .match(crl));
    302         selector.setDateAndTime(new Date(150));
    303         assertFalse("The CRL should not match the selection criteria.",
    304                 selector.match(crl));
    305         selector.setDateAndTime(new Date(350));
    306         assertFalse("The CRL should not match the selection criteria.",
    307                 selector.match(crl));
    308     }
    309 
    310     /**
    311      * setCertificateChecking(X509Certificate) method testing.
    312      */
    313     public void testSetCertificateCheckingLjava_X509Certificate()
    314             throws CertificateException {
    315         X509CRLSelector selector = new X509CRLSelector();
    316 
    317         CertificateFactory certFact = CertificateFactory.getInstance("X509");
    318         X509Certificate cert = (X509Certificate) certFact
    319                 .generateCertificate(new ByteArrayInputStream(TestUtils
    320                         .getX509Certificate_v3()));
    321 
    322         TestCRL crl = new TestCRL();
    323         selector.setCertificateChecking(cert);
    324         assertTrue("The CRL should match the selection criteria.", selector
    325                 .match(crl));
    326         assertEquals(cert, selector.getCertificateChecking());
    327 
    328         selector.setCertificateChecking(null);
    329         assertTrue("The CRL should match the selection criteria.", selector
    330                 .match(crl));
    331         assertNull(selector.getCertificateChecking());
    332     }
    333 
    334     /**
    335      * getIssuers() method testing. Tests if the method return null in the case
    336      * of not specified issuers, if the returned collection corresponds to the
    337      * specified issuers and this collection is unmodifiable.
    338      */
    339     public void testGetIssuers() {
    340         X509CRLSelector selector = new X509CRLSelector();
    341         X500Principal iss1 = new X500Principal("O=First Org.");
    342         X500Principal iss2 = new X500Principal("O=Second Org.");
    343         X500Principal iss3 = new X500Principal("O=Third Org.");
    344         assertNull("The collection should be null.", selector.getIssuers());
    345         selector.addIssuer(iss1);
    346         selector.addIssuer(iss2);
    347         Collection<X500Principal> result = selector.getIssuers();
    348         try {
    349             result.add(iss3);
    350             fail("The returned collection should be unmodifiable.");
    351         } catch (UnsupportedOperationException e) {
    352         }
    353         assertTrue("The collection should contain the specified DN.", result
    354                 .contains(iss2));
    355     }
    356 
    357     /**
    358      * getIssuerNames() method testing. Tests if the method return null in the
    359      * case of not specified issuers, if the returned collection corresponds to
    360      * the specified issuers.
    361      */
    362     public void testGetIssuerNames() {
    363         X509CRLSelector selector = new X509CRLSelector();
    364         byte[] iss1 = new byte[]
    365         // manually obtained DER encoding of "O=First Org." issuer name;
    366         { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10, 70, 105, 114, 115,
    367                 116, 32, 79, 114, 103, 46 };
    368         byte[] iss2 = new byte[]
    369         // manually obtained DER encoding of "O=Second Org." issuer name;
    370         { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11, 83, 101, 99, 111,
    371                 110, 100, 32, 79, 114, 103, 46 };
    372         assertNull("The collection should be null.", selector.getIssuerNames());
    373         try {
    374             selector.addIssuerName(iss1);
    375             selector.addIssuerName(iss2);
    376         } catch (IOException e) {
    377             e.printStackTrace();
    378             fail("Unexpected IOException was thrown.");
    379         }
    380         Collection<Object> result = selector.getIssuerNames();
    381         assertEquals("The collection should contain all of the specified DNs.",
    382                 2, result.size());
    383     }
    384 
    385     /**
    386      * getMinCRL() method testing. Tests if the method return null in the case
    387      * of not specified minCRL criteria, and if the returned value corresponds
    388      * to the specified one.
    389      */
    390     public void testGetMinCRL() {
    391         X509CRLSelector selector = new X509CRLSelector();
    392         assertNull("Initially the minCRL should be null.", selector.getMinCRL());
    393         BigInteger minCRL = new BigInteger("10000");
    394         selector.setMinCRLNumber(minCRL);
    395         assertTrue("The result should be equal to specified.", minCRL
    396                 .equals(selector.getMinCRL()));
    397     }
    398 
    399     /**
    400      * getMaxCRL() method testing. Tests if the method return null in the case
    401      * of not specified maxCRL criteria, and if the returned value corresponds
    402      * to the specified one.
    403      */
    404     public void testGetMaxCRL() {
    405         X509CRLSelector selector = new X509CRLSelector();
    406         assertNull("Initially the maxCRL should be null.", selector.getMaxCRL());
    407         BigInteger maxCRL = new BigInteger("10000");
    408         selector.setMaxCRLNumber(maxCRL);
    409         assertTrue("The result should be equal to specified.", maxCRL
    410                 .equals(selector.getMaxCRL()));
    411     }
    412 
    413     /**
    414      * getDateAndTime() method testing. Tests if the method return null in the
    415      * case of not specified dateAndTime criteria, and if the returned value
    416      * corresponds to the specified one.
    417      */
    418     public void testGetDateAndTime() {
    419         X509CRLSelector selector = new X509CRLSelector();
    420         assertNull("Initially the dateAndTime criteria should be null.",
    421                 selector.getDateAndTime());
    422         Date date = new Date(200);
    423         selector.setDateAndTime(date);
    424         assertTrue("The result should be equal to specified.", date
    425                 .equals(selector.getDateAndTime()));
    426     }
    427 
    428     /**
    429      * getCertificateChecking() method testing.
    430      */
    431     public void testGetCertificateCheckingLjava_X509Certificate()
    432             throws CertificateException {
    433         X509CRLSelector selector = new X509CRLSelector();
    434 
    435         CertificateFactory certFact = CertificateFactory.getInstance("X509");
    436         X509Certificate cert = (X509Certificate) certFact
    437                 .generateCertificate(new ByteArrayInputStream(TestUtils
    438                         .getX509Certificate_v3()));
    439 
    440         selector.setCertificateChecking(cert);
    441         assertEquals(cert, selector.getCertificateChecking());
    442 
    443         selector.setCertificateChecking(null);
    444         assertNull(selector.getCertificateChecking());
    445     }
    446 
    447     /**
    448      * match(CRL crl) method testing. Tests if the null object matches to the
    449      * selector or not.
    450      */
    451     public void testMatchLjava_security_cert_X509CRL() {
    452         X509CRLSelector selector = new X509CRLSelector();
    453         assertFalse("The null object should not match", selector
    454                 .match((X509CRL) null));
    455     }
    456 
    457     /**
    458      * clone() method testing. Tests if the selector is cloned correctly: the
    459      * crl which matche to the initial selector should match to the clone and
    460      * the change of clone should not cause the change of initial selector.
    461      */
    462     @AndroidOnly("Uses specific classes: " +
    463             "org.apache.harmony.security.asn1.ASN1OctetString, " +
    464             "org.apache.harmony.security.asn1.ASN1Integer.")
    465     public void testClone() {
    466         X509CRLSelector selector = new X509CRLSelector();
    467         X500Principal iss1 = new X500Principal("O=First Org.");
    468         X500Principal iss2 = new X500Principal("O=Second Org.");
    469         X500Principal iss3 = new X500Principal("O=Third Org.");
    470         BigInteger minCRL = new BigInteger("10000");
    471         BigInteger maxCRL = new BigInteger("10000");
    472         Date date = new Date(200);
    473 
    474         selector.addIssuer(iss1);
    475         selector.addIssuer(iss2);
    476         selector.setMinCRLNumber(minCRL);
    477         selector.setMaxCRLNumber(maxCRL);
    478         selector.setDateAndTime(date);
    479 
    480         X509CRLSelector clone = (X509CRLSelector) selector.clone();
    481         TestCRL crl = new TestCRL(iss1);
    482         crl.setCrlNumber(minCRL);
    483         crl.setUpdateDates(new Date(200), new Date(200));
    484         assertTrue("The specified CRL should match the clone selector.",
    485                 selector.match(crl));
    486 
    487         clone.addIssuer(iss3);
    488         assertFalse("The changes of the clone selector should not cause "
    489                 + "the changes of initial object", selector.getIssuerNames()
    490                 .size() == 3);
    491     }
    492     public void testToString() {
    493         X509CRLSelector selector = new X509CRLSelector();
    494         X500Principal iss1 = new X500Principal("O=First Org.");
    495         X500Principal iss2 = new X500Principal("O=Second Org.");
    496         BigInteger minCRL = new BigInteger("10000");
    497         BigInteger maxCRL = new BigInteger("10000");
    498         Date date = new Date(200);
    499 
    500         selector.addIssuer(iss1);
    501         selector.addIssuer(iss2);
    502         selector.setMinCRLNumber(minCRL);
    503         selector.setMaxCRLNumber(maxCRL);
    504         selector.setDateAndTime(date);
    505 
    506         assertNotNull("The result should not be null.", selector.toString());
    507     }
    508 
    509     /**
    510      * The abstract class stub implementation.
    511      */
    512     private class TestCRL extends X509CRL {
    513 
    514         private X500Principal principal = null;
    515 
    516         private BigInteger crlNumber = null;
    517 
    518         private Date thisUpdate = null;
    519 
    520         private Date nextUpdate = null;
    521 
    522         public TestCRL() {
    523         }
    524 
    525         public TestCRL(X500Principal principal) {
    526             this.principal = principal;
    527         }
    528 
    529         public TestCRL(Date thisUpdate, Date nextUpdate) {
    530             setUpdateDates(thisUpdate, nextUpdate);
    531         }
    532 
    533         public TestCRL(BigInteger crlNumber) {
    534             setCrlNumber(crlNumber);
    535         }
    536 
    537         public void setUpdateDates(Date thisUpdate, Date nextUpdate) {
    538             this.thisUpdate = thisUpdate;
    539             this.nextUpdate = nextUpdate;
    540         }
    541 
    542         public void setCrlNumber(BigInteger crlNumber) {
    543             this.crlNumber = crlNumber;
    544         }
    545 
    546         public X500Principal getIssuerX500Principal() {
    547             return principal;
    548         }
    549 
    550         public String toString() {
    551             return null;
    552         }
    553 
    554         public boolean isRevoked(Certificate cert) {
    555             return true;
    556         }
    557 
    558         public Set<String> getNonCriticalExtensionOIDs() {
    559             return null;
    560         }
    561 
    562         public Set<String> getCriticalExtensionOIDs() {
    563             return null;
    564         }
    565 
    566         public byte[] getExtensionValue(String oid) {
    567             if ("2.5.29.20".equals(oid) && (crlNumber != null)) {
    568                 return ASN1OctetString.getInstance().encode(
    569                         ASN1Integer.getInstance().encode(
    570                                 crlNumber.toByteArray()));
    571             }
    572             return null;
    573         }
    574 
    575         public boolean hasUnsupportedCriticalExtension() {
    576             return false;
    577         }
    578 
    579         public byte[] getEncoded() {
    580             return null;
    581         }
    582 
    583         @SuppressWarnings("unused")
    584         public void verify(PublicKey key) throws CRLException,
    585                 NoSuchAlgorithmException, InvalidKeyException,
    586                 NoSuchProviderException, SignatureException {
    587         }
    588 
    589         @SuppressWarnings("unused")
    590         public void verify(PublicKey key, String sigProvider)
    591                 throws CRLException, NoSuchAlgorithmException,
    592                 InvalidKeyException, NoSuchProviderException,
    593                 SignatureException {
    594         }
    595 
    596         public int getVersion() {
    597             return 2;
    598         }
    599 
    600         public Principal getIssuerDN() {
    601             return null;
    602         }
    603 
    604         public Date getThisUpdate() {
    605             return thisUpdate;
    606         }
    607 
    608         public Date getNextUpdate() {
    609             return nextUpdate;
    610         }
    611 
    612         public X509CRLEntry getRevokedCertificate(BigInteger serialNumber) {
    613             return null;
    614         }
    615 
    616         public Set<X509CRLEntry> getRevokedCertificates() {
    617             return null;
    618         }
    619 
    620         public byte[] getTBSCertList() {
    621             return null;
    622         }
    623 
    624         public byte[] getSignature() {
    625             return null;
    626         }
    627 
    628         public String getSigAlgName() {
    629             return null;
    630         }
    631 
    632         public String getSigAlgOID() {
    633             return null;
    634         }
    635 
    636         public byte[] getSigAlgParams() {
    637             return null;
    638         }
    639     }
    640 }
    641