All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.asn1.test.CMCFailInfoTest Maven / Gradle / Ivy

Go to download

The Bouncy Castle Java APIs for CMS, PKCS, EAC, TSP, CMP, CRMF, OCSP, and certificate generation. This jar contains APIs for JDK 1.5 and up. The APIs can be used in conjunction with a JCE/JCA provider such as the one provided with the Bouncy Castle Cryptography APIs.

There is a newer version: 1.2.2.1-jre17
Show newest version
package org.bouncycastle.asn1.test;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.cmc.CMCFailInfo;
import org.bouncycastle.util.test.SimpleTest;

public class CMCFailInfoTest
    extends SimpleTest
{

    // From Page 68, CMC: Structures RFC 5272
    private static Object[][] types = new Object[][]{
        {"badAlg", new Long(0L) },
        {"badMessageCheck", new Long(1L) },
        {"badRequest", new Long(2L) },
        {"badTime", new Long(3L) },
        {"badCertId", new Long(4L) },
        {"unsupportedExt", new Long(5L) },
        {"mustArchiveKeys", new Long(6L) },
        {"badIdentity", new Long(7L) },
        {"popRequired", new Long(8L) },
        {"popFailed", new Long(9L) },
        {"noKeyReuse", new Long(10L) },
        {"internalCAError", new Long(11L) },
        {"tryLater", new Long(12L) },
        {"authDataFail", new Long(13L)}
    };
    private static Map typesMap = new HashMap();

    static
    {
        for (int t = 0; t < types.length; t++)
        {
            typesMap.put(types[t][1], types[t][0]);
        }
    }


    public void performTest()
        throws Exception
    {

        //
        // Check that range has changed and this test has not been updated or vice versa.
        // It is intended to act as a double check on the addition of CMCFailInfo presets by
        // requiring this test to be updated equally to ensure it will pass.
        //

        Field rangeField = CMCFailInfo.class.getDeclaredField("range");
        rangeField.setAccessible(true);

        Map range = (Map)rangeField.get(null);

        isEquals("Range in CMCFailInfo does not match test data.",range.size(), types.length);

        for (Iterator rangeKeys = range.keySet().iterator(); rangeKeys.hasNext(); )
        {   Object j = rangeKeys.next();
            if (!typesMap.containsKey(new Long(((ASN1Integer)j).getValue().longValue())))  {
                fail("The 'range' map in CMCFailInfo contains a value not in the test ('typesMap') map, value was: "+j.toString());
            }
        }


        for (Iterator typeKeys = typesMap.keySet().iterator(); typeKeys.hasNext(); )
        {   Object j = typeKeys.next();
            if (!range.containsKey(new ASN1Integer(((Long)j).longValue())))  {
                fail("The 'typesMap' map in CMCFailInfoTest contains a value not in the CMCFailInfo ('range') map, value was: "+j.toString());
            }
        }


        //
        // Test encoding / decoding
        //

        byte[] b = CMCFailInfo.authDataFail.getEncoded();
        CMCFailInfo r = CMCFailInfo.getInstance(b);
        isEquals(r,CMCFailInfo.authDataFail);

    }

    public String getName()
    {
        return "CMCFailInfoTest";
    }

    public static void main(String[] args)
    {
        runTest(new CMCFailInfoTest());
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy