1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @author Alexander Y. Kleymenov 208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.x509; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.x501.Name; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.x509.EDIPartyName; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.x509.GeneralName; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.x509.GeneralNames; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.x509.ORAddress; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.x509.OtherName; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * GeneralNameTest 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class GeneralNameTest extends TestCase { 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGeneralName() { 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName san0 = 448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new GeneralName(new OtherName("1.2.3.4.5", new byte[] { 1, 2, 0, 1 })); 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName san1 = new GeneralName(1, "rfc@822.Name"); 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName san2 = new GeneralName(2, "dNSName"); 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName san3 = new GeneralName(new ORAddress()); 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName san4 = new GeneralName(new Name("O=Organization")); 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName san5 = 508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new GeneralName(new EDIPartyName("assigner", "party")); 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName san6 = new GeneralName(6, "http://uniform.Resource.Id"); 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName san7 = new GeneralName(7, "1.1.1.1"); 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName san8 = new GeneralName(8, "1.2.3.4444.55555"); 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralNames sans_1 = new GeneralNames(); 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sans_1.addName(san0); 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sans_1.addName(san1); 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sans_1.addName(san2); 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sans_1.addName(san3); 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sans_1.addName(san4); 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sans_1.addName(san5); 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sans_1.addName(san6); 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sans_1.addName(san7); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sans_1.addName(san8); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath byte[] encoding = GeneralNames.ASN1.encode(sans_1); 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralNames.ASN1.decode(encoding); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // should not be thrown: 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // provided string representations are correct 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.printStackTrace(); 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGeneralName1() throws Exception { 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OtherName on = 778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new OtherName("1.2.3.4.5", new byte[] { 1, 2, 0, 1 }); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encoding = OtherName.ASN1.encode(on); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new GeneralName(0, encoding); 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes OtherName.ASN1.decode(encoding); 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName gn = new GeneralName(on); 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new GeneralName(0, gn.getEncodedName()); 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(gn, new GeneralName(0, gn.getEncodedName())); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ipStrToBytes method testing. 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testIpStrToBytes() throws Exception { 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-727 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object[][] positives = { 928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { "010a:020b:3337:1000:FFFA:ABCD:9999:0000", 938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 0x01, 0x0a, 0x02, 0x0b, 0x33, 0x37, 0x10, 0x00, 0xFF, 948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 0xFA, 0xAB, 0xCD, 0x99, 0x99, 0x00, 0x00 } }, 958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { "010a:020b:3337:1000:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e:0f10", 968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 0x01, 0x0a, 0x02, 0x0b, 0x33, 0x37, 0x10, 0x00, 0xFF, 978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 0xFA, 0xAB, 0xCD, 0x99, 0x99, 0x00, 0x00, 0x01, 0x02, 0x03, 988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0b, 0x0c, 0x0D, 998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 0x0e, 0x0f, 0x10 } }, 1008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { "010a:020b:1133:1000:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e:0f10", 1018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 0x01, 0x0a, 0x02, 0x0b, 0x11, 0x33, 0x10, 0x00, 0xFF, 1028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 0xFA, 0xAB, 0xCD, 0x99, 0x99, 0x00, 0x00, 0x01, 0x02, 0x03, 1038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0b, 0x0c, 0x0D, 1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 0x0e, 0x0f, 0x10 } }, 1058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { "010a:020b:1133:1000:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e:0f10", 1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 0x01, 0x0a, 0x02, 0x0b, 0x11, 0x33, 0x10, 0x00, 0xFF, 1078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 0xFA, 0xAB, 0xCD, 0x99, 0x99, 0x00, 0x00, 0x01, 0x02, 0x03, 1088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0b, 0x0c, 0x0D, 1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 0x0e, 0x0f, 0x10 } }, 1108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { "100.2.35.244", 1118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 100, 2, 35, 244 } }, 1128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath { "100.2.35.244/51.6.79.118", 1138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new int[] { 100, 2, 35, 244, 51, 6, 79, 118 } }, 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] negatives = { 1168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:0000:3333:1000:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e:0", 1178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:3:1000:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e:0f10", 1188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:33:1000:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e:0f10", 1198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:333:1000:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e:0f10", 1208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:10V0:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e:0f10", 1218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:1000-FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e:0f10", 1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:1000:FFFA:ABCD:9999", 1238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:1000:FFFA:ABCD:9999/0000:0102:0304:0506:0708:090A:0b0c:0D0e:0f10", 1248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:1000:FFFA:ABCD:9999:0000:0102/0304:0506:0708:090A:0b0c:0D0e:0f10", 1258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:1000:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e:0f10:1234", 1268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.35.244/51.6.79.118.119", 1278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.35.244.115/79.118.119", 1288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.35.244/79.118.119.1167", 1298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.35.244/79.118.119.116.7", 1308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.35.244.79/118.119.116.7", 1318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.35/79/118.119.116.7", 1328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.35.79/118/119.116.7", 1338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2..35.79/118/119.116.7", 1348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.a.35.79/118/119.116.7", 1358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.35.79/119.116.7-1", 1368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.35.244.111", 1378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "100.2.35.244/111", 1388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:1000:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e0f10", 1398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:1000:FFFA:ABCD:9999:0000/0102:0304:0506:0708:090A:0b0c:0D0e0f:10", 1408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:1000:FFFA:ABCD:9999:0000/0102/0304:0506:0708:090A:0b0c:0D0e0f:10", 1418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:1000:FFFA:ABCD:9999:0000/0102030405060708090A0b0c:0D0e:0f10:ffff", 1428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "010a:020b:1133:1000:FFFA:ABCD:9999:00000102030405060708090A/0b0c:0D0e:0f10:ffff", 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 1448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < positives.length; i++) { 1458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath byte[] res = GeneralName.ipStrToBytes((String) positives[i][0]); 1468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int[] ref = (int[]) positives[i][1]; 1478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("Length differs for " + positives[i][0], ref.length, res.length); 1488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int j = 0; j < res.length; j++) { 1498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("Element differs for " + positives[i][0], (byte) ref[j], res[j]); 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int n = 0; n < negatives.length; n++) { 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String ip = negatives[n]; 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] bts = GeneralName.ipStrToBytes(ip); 1568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < bts.length; i++) { 1578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath System.out.print((bts[i] & 0xFF) + " "); 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println(""); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println(ip); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IOException was thrown for " + n); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * oidStrToInts method testing 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testOidStrToInts() throws Exception { 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-727 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object[][] positives = { 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "1.2", new int[] { 1, 2 } }, 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "1.2.3.4.5", new int[] { 1, 2, 3, 4, 5 } }, 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "123.456.7890.1234567890", 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new int[] { 123, 456, 7890, 1234567890 } }, }; 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] negatives = { ".1.2", "1.2.", "11-22.44.22", "111..222" }; 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < positives.length; i++) { 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] res = GeneralName.oidStrToInts((String) positives[i][0]); 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] ref = (int[]) positives[i][1]; 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Length differs for " + positives[i][0], ref.length, 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes res.length); 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j = 0; j < res.length; j++) { 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (res[j] != ref[j]) { 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Element differs for " + positives[i][0], 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) ref[j], res[j]); 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < negatives.length; i++) { 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes GeneralName.oidStrToInts(negatives[i]); 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected IOException was not thrown for " + negatives[i]); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 201