Package org.apache.harmony.security.asn1

Examples of org.apache.harmony.security.asn1.ASN1Type


        StringBuffer buf;
        String octet;
        ASN1IA5String newAsn1Object;
        ByteArrayInputStream in;
        DERDecoder decoder;
        ASN1Type asn1Type;


        /* Create ASN.1 object.
         */
        asn1Object = new ASN1IA5String("Hello World !");

        /* Print the ASN.1 object to the standard output.
         */
        System.out.println("ASN.1 object: ");
        System.out.println(asn1Object.toString());
        System.out.println();

        /* Encoding process.
         */
        /* Initialize an output stream to which the encoded data will be
         * written.
         */
        out     = new ByteArrayOutputStream();

        /* Initialize encoder instance with this output stream.
         */
        encoder     = new DEREncoder(out);

        /* Byte array to store the encoded data.
         */
        encodedAsn1Object = null;

        try
        {
            /* Encoder reads the data stored in the variable asn1Object and
             * encodes it writing the output to the output stream.
             */
            asn1Object.encode(encoder);

            /* Store the data in the output stream in a byte array. This array
             * will be decoded later.
             */
            encodedAsn1Object = out.toByteArray();

            /* Close the stream.
             */
            encoder.close();
        }
        catch (ASN1Exception e)
        {
            System.out.println("Error during encoding.");
            e.printStackTrace();
        }
        catch (IOException e)
        {
            System.out.println("Error during encoding.");
            e.printStackTrace();
        }


        /* Print the encoded data to the standard output in hexadecimal
         * representation.
         */
        buf = new StringBuffer();

        for (int i = 0; i < encodedAsn1Object.length; i++)
        {
            octet = Integer.toHexString(encodedAsn1Object[i] & 0xff);
            buf.append(" 0x");
            if (octet.length() == 1)
            {
                buf.append('0');
            }
            buf.append(octet);
        }

        System.out.println("Encoded ASN.1 object:");
        System.out.println(buf.toString());
        System.out.println();


        /* Decoding process.
         */
        /* Create new empty object of the expected class. This object will
         * store the decoded values.
         */
        newAsn1Object     = new ASN1IA5String();

        /* Initialize input stream containing the encoded data.
         */
        in     = new ByteArrayInputStream(encodedAsn1Object);

        /* Initialize decoder instance with this input stream.
         */
        decoder = new DERDecoder(in);

        try
        {
            /* Decode the data in the input stream and stored it in
             * newAsn1Object.
             */
            newAsn1Object.decode(decoder);

            /* Close the stream.
             */
            decoder.close();
        }
        catch (ASN1Exception e)
        {
            System.out.println("Error during decoding.");
            e.printStackTrace();
        }
        catch (IOException e)
        {
            System.out.println("Error during decoding.");
            e.printStackTrace();
        }

        /* Print the new ASN.1 object to the standard output.
         */
        System.out.println(
            "New ASN.1 object got by decoding the previous bytes:");
        System.out.println(newAsn1Object.toString());
        System.out.println();


        /* Alternative decoding procedure without assuming to know the ASN.1
         * type to be decoded.
         */
        System.out.println("Alternative decoding procedure:");

        /* Variable to store the data that will be decoded. Its type is not
         * determined.
         */
        asn1Type     = null;

        /* Input stream containing the encoded data.
         */
        in     = new ByteArrayInputStream(encodedAsn1Object);

        /* Initialize decoder instance with this input stream.
         */
        decoder = new DERDecoder(in);

        try
        {
            /* Decoder returns a Java object of the corresponding CODEC class
             * and already containing the decoded data.
             */
            asn1Type = decoder.readType();
            decoder.close();
        }
        catch (ASN1Exception e)
        {
            System.out.println("Error during decoding.");
            e.printStackTrace();
        }
        catch (IOException e)
        {
            System.out.println("Error during decoding.");
            e.printStackTrace();
        }

        /* Print the new ASN.1 object to the standard output.
         */
        System.out.println(
            "New ASN.1 object got by decoding the previous bytes:");
        System.out.println(asn1Type.toString());
        System.out.println();
    }
View Full Code Here


                    new byte[] { 0x03, 0x02, 0x07, (byte) 0x80 } } };

    public void testDecode_Encode() throws IOException {

        // decoder/encoder for testing
        ASN1BitString asn1 = ASN1BitString.getInstance();

        // decode from byte array
        for (int i = 0; i < validBitstring.length; i++) {
            DerInputStream in = new DerInputStream(
                    (byte[]) validBitstring[i][1]);

            BitString expected = (BitString) validBitstring[i][0];
            BitString decoded = (BitString) asn1.decode(in);

            assertEquals("Testcase: " + i, expected.unusedBits,
                    decoded.unusedBits);

            assertTrue("Testcase: " + i, Arrays.equals(expected.bytes,
                    decoded.bytes));
        }

        // decode from input stream
        for (int i = 0; i < validBitstring.length; i++) {
            DerInputStream in = new DerInputStream(new ByteArrayInputStream(
                    (byte[]) validBitstring[i][1]));

            BitString expected = (BitString) validBitstring[i][0];
            BitString decoded = (BitString) asn1.decode(in);

            assertEquals("Testcase: " + i, expected.unusedBits,
                    decoded.unusedBits);

            assertTrue("Testcase: " + i, Arrays.equals(expected.bytes,
View Full Code Here

                {
                        new boolean[] { false, false, false, false, false,
                                false, false, false, true }, // object
                        new byte[] { 0x03, 0x03, 0x07, 0x00, (byte) 0x80 } } };

        ASN1NamedBitList decoder = new ASN1NamedBitList();

        for (int i = 0; i < testcaseBoolean.length; i++) {
            DerInputStream in = new DerInputStream(
                    (byte[]) testcaseBoolean[i][1]);

            assertTrue("Testcase: " + i, Arrays.equals(
                    (boolean[]) testcaseBoolean[i][0], (boolean[]) decoder
                            .decode(in)));
        }
    }
View Full Code Here

                {
                        new boolean[] { false, false, false, false, false,
                                false, false, false, true }, // object
                        new byte[] { 0x03, 0x03, 0x07, 0x00, (byte) 0x80 } } };

        ASN1NamedBitList decoder = new ASN1NamedBitList(8);

        for (int i = 0; i < testcaseBoolean.length; i++) {
            DerInputStream in = new DerInputStream(
                    (byte[]) testcaseBoolean[i][1]);

            assertTrue("Testcase: " + i, Arrays.equals(
                    (boolean[]) testcaseBoolean[i][0], (boolean[]) decoder
                            .decode(in)));
        }
    }
View Full Code Here

                {
                        new boolean[] { false, false, false, false, false,
                                false, false, false, true }, // object
                        new byte[] { 0x03, 0x03, 0x07, 0x00, (byte) 0x80 } } };

        ASN1NamedBitList encoder = new ASN1NamedBitList();

        for (int i = 0; i < testcaseBoolean.length; i++) {
            DerOutputStream out = new DerOutputStream(encoder,
                    testcaseBoolean[i][0]);
            assertTrue("Testcase: " + i, Arrays.equals(
View Full Code Here

    private static byte[] eTrue = new byte[] { 0x01, 0x01, (byte) 0xFF };

    public void test_Decode_Encode() throws IOException {

        // oid decoder/encoder for testing
        ASN1Boolean asn1 = ASN1Boolean.getInstance();

        // decoding false
        DerInputStream in = new DerInputStream(eFalse);
        assertEquals("Decoding false value", Boolean.FALSE, asn1.decode(in));

        // decoding true
        in = new DerInputStream(eTrue);
        assertEquals("Decoding true value", Boolean.TRUE, asn1.decode(in));

        // encoding false
        DerOutputStream out = new DerOutputStream(asn1, Boolean.FALSE);
        assertTrue("Encoding false value", Arrays.equals(eFalse, out.encoded));
View Full Code Here

        }
    }

    public void testChoiceInSequenceOf() throws IOException {

        ASN1Choice choice = new ASN1Choice(new ASN1Type[] {
                ASN1Boolean.getInstance(), ASN1Integer.getInstance() }) {

            public int getIndex(Object object) {
                if (object instanceof Boolean) {
                    return 0; // ASN1Boolean
View Full Code Here

    //
    //

    public void test_ExplicitChoice() throws IOException {

        ASN1Choice choice = new ASN1Choice(new ASN1Type[] { ASN1Boolean
                .getInstance() }) {

            public Object getObjectToEncode(Object obj) {
                return obj;
            }
View Full Code Here

    /**
     * TODO Put method description here
     */
    public void testChoiceOfChoice() throws Exception {

        ASN1Choice choice1 = new ASN1Choice(new ASN1Type[] {
                ASN1Oid.getInstance(), // first
                ASN1Boolean.getInstance(),// second: decoded component
                ASN1Integer.getInstance() // third
                }) {

            public Object getDecodedObject(BerInputStream in)
                    throws IOException {

                assertEquals("choice1", 1, in.choiceIndex);

                return in.content;
            }

            public Object getObjectToEncode(Object obj) {
                return obj;
            }

            public int getIndex(Object obj) {
                return 0;
            }
        };

        ASN1Choice choice2 = new ASN1Choice(new ASN1Type[] { choice1, // first: decoded component
                ASN1BitString.getInstance() // second
                }) {

            public Object getDecodedObject(BerInputStream in)
                    throws IOException {

                assertEquals("choice2", 0, in.choiceIndex);

                return in.content;
            }

            public Object getObjectToEncode(Object obj) {
                return obj;
            }

            public int getIndex(Object obj) {
                return 0;
            }
        };

        Boolean b = (Boolean) choice2.decode(new byte[] { 0x01, 0x01, 0x00 });

        assertTrue(b == Boolean.FALSE);
    }
View Full Code Here

    /**
     * TODO Put method description here
     */
    public void testDistinctTags() throws Exception {

        ASN1Choice choice1 = new ASN1Choice(new ASN1Type[] {
                ASN1Boolean.getInstance(),// component to be checked
                ASN1Oid.getInstance(), ASN1Integer.getInstance() }) {

            public Object getObjectToEncode(Object obj) {
                return obj;
            }

            public int getIndex(Object obj) {
                return 0;
            }
        };

        // two ASN.1 booleans
        try {
            new ASN1Choice(new ASN1Type[] { choice1, //
                    ASN1Boolean.getInstance() // component to be checked
                    }) {

                public Object getObjectToEncode(Object obj) {
                    return obj;
                }

                public int getIndex(Object obj) {
                    return 0;
                }
            };
            fail("No expected IllegalArgumentException");
        } catch (IllegalArgumentException e) {
        }

        // ASN.1 ANY
        try {
            new ASN1Choice(new ASN1Type[] { choice1,//
                    ASN1Any.getInstance() // component to be checked
                    }) {

                public Object getObjectToEncode(Object obj) {
                    return obj;
                }

                public int getIndex(Object obj) {
                    return 0;
                }
            };
            fail("No expected IllegalArgumentException");
        } catch (IllegalArgumentException e) {
        }

        // two choices
        ASN1Choice choice2 = new ASN1Choice(new ASN1Type[] {
                ASN1BitString.getInstance(), //
                ASN1Boolean.getInstance() //component to be checked
                }) {

            public Object getObjectToEncode(Object obj) {
                return obj;
            }

            public int getIndex(Object obj) {
                return 0;
            }
        };

        try {
            new ASN1Choice(new ASN1Type[] { choice1, choice2 }) {

                public Object getObjectToEncode(Object obj) {
                    return obj;
                }

View Full Code Here

TOP

Related Classes of org.apache.harmony.security.asn1.ASN1Type

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.