Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilder.java
38860 views
/*1* Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223// This test case relies on updated static security property, no way to re-use24// security property in samevm/agentvm mode.2526/**27* @test28*29* @bug 686106230* @summary Disable MD2 support31*32* @run main/othervm CPBuilder trustAnchor_SHA1withRSA_1024 0 true33* @run main/othervm CPBuilder trustAnchor_SHA1withRSA_512 0 true34* @run main/othervm CPBuilder intermediate_SHA1withRSA_1024_1024 1 true35* @run main/othervm CPBuilder intermediate_SHA1withRSA_1024_512 1 true36* @run main/othervm CPBuilder intermediate_SHA1withRSA_512_1024 1 true37* @run main/othervm CPBuilder intermediate_SHA1withRSA_512_512 1 true38* @run main/othervm CPBuilder intermediate_MD2withRSA_1024_1024 1 false39* @run main/othervm CPBuilder intermediate_MD2withRSA_1024_512 1 false40* @run main/othervm CPBuilder endentiry_SHA1withRSA_1024_1024 2 true41* @run main/othervm CPBuilder endentiry_SHA1withRSA_1024_512 2 true42* @run main/othervm CPBuilder endentiry_SHA1withRSA_512_1024 2 true43* @run main/othervm CPBuilder endentiry_SHA1withRSA_512_512 2 true44* @run main/othervm CPBuilder endentiry_MD2withRSA_1024_1024 2 false45* @run main/othervm CPBuilder endentiry_MD2withRSA_1024_512 2 false46*47* @author Xuelei Fan48*/4950import java.io.*;51import java.net.SocketException;52import java.util.*;53import java.security.Security;54import java.security.cert.*;55import sun.security.util.DerInputStream;5657public class CPBuilder {5859// SHA1withRSA 102460static String trustAnchor_SHA1withRSA_1024 =61"-----BEGIN CERTIFICATE-----\n" +62"MIICPjCCAaegAwIBAgIBADANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +63"MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA4MDYwMTExNDRaFw0zMDA3MTcwMTExNDRa\n" +64"MB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMIGfMA0GCSqGSIb3DQEB\n" +65"AQUAA4GNADCBiQKBgQC8UdC863pFk1Rvd7xUYd60+e9KsLhb6SqOfU42ZA715FcH\n" +66"E1TRvQPmYzAnHcO04TrWZQtO6E+E2RCmeBnetBvIMVka688QkO14wnrIrf2tRodd\n" +67"rZNZEBzkX+zyXCRo9tKEUDFf9Qze7Ilbb+Zzm9CUfu4M1Oz6iQcXRx7aM0jEAQID\n" +68"AQABo4GJMIGGMB0GA1UdDgQWBBTn0C+xmZY/BTab4W9gBp3dGa7WgjBHBgNVHSME\n" +69"QDA+gBTn0C+xmZY/BTab4W9gBp3dGa7WgqEjpCEwHzELMAkGA1UEBhMCVVMxEDAO\n" +70"BgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUwAwEB/zALBgNVHQ8EBAMCAgQw\n" +71"DQYJKoZIhvcNAQEFBQADgYEAiCXL2Yp4ruyRXAIJ8zBEaPC9oV2agqgbSbly2z8z\n" +72"Ik5SeSRysP+GHBpb8uNyANJnQKv+T0GrJiTLMBjKCOiJl6xzk3EZ2wbQB6G/SQ9+\n" +73"UWcsXSC8oGSEPpkj5In/9/UbuUIfT9H8jmdyLNKQvlqgq6kyfnskME7ptGgT95Hc\n" +74"tas=\n" +75"-----END CERTIFICATE-----";7677// SHA1withRSA 51278static String trustAnchor_SHA1withRSA_512 =79"-----BEGIN CERTIFICATE-----\n" +80"MIIBuTCCAWOgAwIBAgIBADANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +81"MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA4MDYwMTExNDRaFw0zMDA3MTcwMTExNDRa\n" +82"MB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMFwwDQYJKoZIhvcNAQEB\n" +83"BQADSwAwSAJBAM0Kn4ieCdCHsrm78ZMMN4jQEEEqACAMKB7O8j9g4gfz2oAfmHwv\n" +84"7JH/hZ0Xen1zUmBbwe+e2J5D/4Fisp9Bn98CAwEAAaOBiTCBhjAdBgNVHQ4EFgQU\n" +85"g4Kwd47hdNQBp8grZsRJ5XvhvxAwRwYDVR0jBEAwPoAUg4Kwd47hdNQBp8grZsRJ\n" +86"5XvhvxChI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlggEAMA8G\n" +87"A1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMA0GCSqGSIb3DQEBBQUAA0EAn77b\n" +88"FJx+HvyRvjZYCzMjnUct3Ql4iLOkURYDh93J5TXi/l9ajvAMEuwzYj0qZ+Ktm/ia\n" +89"U5r+8B9nzx+j2Zh3kw==\n" +90"-----END CERTIFICATE-----";9192// SHA1withRSA 1024 signed with RSA 102493static String intermediate_SHA1withRSA_1024_1024 =94"-----BEGIN CERTIFICATE-----\n" +95"MIICUDCCAbmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +96"MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA4MDYwMTExNDhaFw0yOTA0MjMwMTExNDha\n" +97"MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +98"cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVOqnlZspyAEr90ELFaUo8\n" +99"BF0O2Kn0yTdUeyiLOth4RA3qxWrjxJq45VmEBjZpEzPHfnp3PhnfmLcLfhoPONFg\n" +100"bcHzlkj75ZaKCgHoyV456fMBmj348fcoUkH2WdSQ82pmxHOiHqquYNUSTimFIq82\n" +101"AayhbKqDmhfx5lJdYNqd5QIDAQABo4GJMIGGMB0GA1UdDgQWBBTfWD9mRTppcUAl\n" +102"UqGuu/R5t8CB5jBHBgNVHSMEQDA+gBTn0C+xmZY/BTab4W9gBp3dGa7WgqEjpCEw\n" +103"HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +104"AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQEFBQADgYEAHze3wAcIe84zNOoN\n" +105"P8l9EmlVVoU30z3LB3hxq3m/dC/4gE5Z9Z8EG1wJw4qaxlTZ4dif12nbTTdofVhb\n" +106"Bd4syjo6fcUA4q7sfg9TFpoHQ+Ap7PgjK99moMKdMy50Xy8s6FPvaVkF89s66Z6y\n" +107"e4q7TSwe6QevGOZaL5N/iy2XGEs=\n" +108"-----END CERTIFICATE-----";109110// SHA1withRSA 1024 signed with RSA 512111static String intermediate_SHA1withRSA_1024_512 =112"-----BEGIN CERTIFICATE-----\n" +113"MIICDzCCAbmgAwIBAgIBAzANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +114"MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA4MDYwMTExNDlaFw0yOTA0MjMwMTExNDla\n" +115"MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +116"cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVOqnlZspyAEr90ELFaUo8\n" +117"BF0O2Kn0yTdUeyiLOth4RA3qxWrjxJq45VmEBjZpEzPHfnp3PhnfmLcLfhoPONFg\n" +118"bcHzlkj75ZaKCgHoyV456fMBmj348fcoUkH2WdSQ82pmxHOiHqquYNUSTimFIq82\n" +119"AayhbKqDmhfx5lJdYNqd5QIDAQABo4GJMIGGMB0GA1UdDgQWBBTfWD9mRTppcUAl\n" +120"UqGuu/R5t8CB5jBHBgNVHSMEQDA+gBSDgrB3juF01AGnyCtmxEnle+G/EKEjpCEw\n" +121"HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +122"AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQEFBQADQQCYNmdkONfuk07XjRze\n" +123"WQyq2cfdae4uIdyUfa2rpgYMtSXuQW3/XrQGiz4G6WBXA2wo7folOOpAKYgvHPrm\n" +124"w6Dd\n" +125"-----END CERTIFICATE-----";126127// SHA1withRSA 512 signed with RSA 1024128static String intermediate_SHA1withRSA_512_1024 =129"-----BEGIN CERTIFICATE-----\n" +130"MIICDDCCAXWgAwIBAgIBBDANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +131"MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA4MDYwMTExNDlaFw0yOTA0MjMwMTExNDla\n" +132"MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +133"cy0xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKubXYoEHZpZkhzA9XX+NrpqJ4SV\n" +134"lOMBoL3aWExQpJIgrUaZfbGMBBozIHBJMMayokguHbJvq4QigEgLuhfJNqsCAwEA\n" +135"AaOBiTCBhjAdBgNVHQ4EFgQUN0CHiTYPtjyvpP2a6y6mhsZ6U40wRwYDVR0jBEAw\n" +136"PoAU59AvsZmWPwU2m+FvYAad3Rmu1oKhI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYD\n" +137"VQQKEwdFeGFtcGxlggEAMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMA0G\n" +138"CSqGSIb3DQEBBQUAA4GBAE2VOlw5ySLT3gUzKCYEga4QPaSrf6lHHPi2g48LscEY\n" +139"h9qQXh4nuIVugReBIEf6N49RdT+M2cgRJo4sZ3ukYLGQzxNuttL5nPSuuvrAR1oG\n" +140"LUyzOWcUpKHbVHi6zlTt79RvTKZvLcduLutmtPtLJcM9PdiAI1wEooSgxTwZtB/Z\n" +141"-----END CERTIFICATE-----";142143// SHA1withRSA 512 signed with RSA 512144static String intermediate_SHA1withRSA_512_512 =145"-----BEGIN CERTIFICATE-----\n" +146"MIIByzCCAXWgAwIBAgIBBTANBgkqhkiG9w0BAQUFADAfMQswCQYDVQQGEwJVUzEQ\n" +147"MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA4MDYwMTExNDlaFw0yOTA0MjMwMTExNDla\n" +148"MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +149"cy0xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKubXYoEHZpZkhzA9XX+NrpqJ4SV\n" +150"lOMBoL3aWExQpJIgrUaZfbGMBBozIHBJMMayokguHbJvq4QigEgLuhfJNqsCAwEA\n" +151"AaOBiTCBhjAdBgNVHQ4EFgQUN0CHiTYPtjyvpP2a6y6mhsZ6U40wRwYDVR0jBEAw\n" +152"PoAUg4Kwd47hdNQBp8grZsRJ5XvhvxChI6QhMB8xCzAJBgNVBAYTAlVTMRAwDgYD\n" +153"VQQKEwdFeGFtcGxlggEAMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMA0G\n" +154"CSqGSIb3DQEBBQUAA0EAoCf0Zu559qcB4xPpzqkVsYiyW49S4Yc0mmQXb1yoQgLx\n" +155"O+DCkjG5d14+t1MsnkhB2izoQUMxQ3vDc1YnA/tEpw==\n" +156"-----END CERTIFICATE-----";157158// MD2withRSA 1024 signed with RSA 1024159static String intermediate_MD2withRSA_1024_1024 =160"-----BEGIN CERTIFICATE-----\n" +161"MIICUDCCAbmgAwIBAgIBBjANBgkqhkiG9w0BAQIFADAfMQswCQYDVQQGEwJVUzEQ\n" +162"MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA4MDYwMTExNDlaFw0yOTA0MjMwMTExNDla\n" +163"MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +164"cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVOqnlZspyAEr90ELFaUo8\n" +165"BF0O2Kn0yTdUeyiLOth4RA3qxWrjxJq45VmEBjZpEzPHfnp3PhnfmLcLfhoPONFg\n" +166"bcHzlkj75ZaKCgHoyV456fMBmj348fcoUkH2WdSQ82pmxHOiHqquYNUSTimFIq82\n" +167"AayhbKqDmhfx5lJdYNqd5QIDAQABo4GJMIGGMB0GA1UdDgQWBBTfWD9mRTppcUAl\n" +168"UqGuu/R5t8CB5jBHBgNVHSMEQDA+gBTn0C+xmZY/BTab4W9gBp3dGa7WgqEjpCEw\n" +169"HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +170"AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQECBQADgYEAPtEjwbWuC5kc4DPc\n" +171"Ttf/wdbD8ZCdAWzcc3XF9q1TlvwVMNk6mbfM05y6ZVsztKTkwZ4EcvFu/yIqw1EB\n" +172"E1zlXQCaWXT3/ZMbqYZV4+mx+RUl8spUCb1tda25jnTg3mTOzB1iztm4gy903EMd\n" +173"m8omKDKeCgcw5dR4ITQYvyxe1as=\n" +174"-----END CERTIFICATE-----";175176// MD2withRSA 1024 signed with RSA 512177static String intermediate_MD2withRSA_1024_512 =178"-----BEGIN CERTIFICATE-----\n" +179"MIICDzCCAbmgAwIBAgIBBzANBgkqhkiG9w0BAQIFADAfMQswCQYDVQQGEwJVUzEQ\n" +180"MA4GA1UEChMHRXhhbXBsZTAeFw0wOTA4MDYwMTExNDlaFw0yOTA0MjMwMTExNDla\n" +181"MDExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFz\n" +182"cy0xMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVOqnlZspyAEr90ELFaUo8\n" +183"BF0O2Kn0yTdUeyiLOth4RA3qxWrjxJq45VmEBjZpEzPHfnp3PhnfmLcLfhoPONFg\n" +184"bcHzlkj75ZaKCgHoyV456fMBmj348fcoUkH2WdSQ82pmxHOiHqquYNUSTimFIq82\n" +185"AayhbKqDmhfx5lJdYNqd5QIDAQABo4GJMIGGMB0GA1UdDgQWBBTfWD9mRTppcUAl\n" +186"UqGuu/R5t8CB5jBHBgNVHSMEQDA+gBSDgrB3juF01AGnyCtmxEnle+G/EKEjpCEw\n" +187"HzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGWCAQAwDwYDVR0TAQH/BAUw\n" +188"AwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQECBQADQQBHok1v6xymtpB7N9xy\n" +189"0OmDT27uhmzlP0eOzJvXVxj3Oi9TLQJgCUJ9122MzfRAs1E1uJTtvuu+UmI80NQx\n" +190"KQdp\n" +191"-----END CERTIFICATE-----";192193// SHA1withRSA 1024 signed with RSA 1024194static String endentiry_SHA1withRSA_1024_1024 =195"-----BEGIN CERTIFICATE-----\n" +196"MIICNzCCAaCgAwIBAgIBAjANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +197"MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0wOTA4MDYwMTEx\n" +198"NTBaFw0yOTA0MjMwMTExNTBaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +199"cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +200"9w0BAQEFAAOBjQAwgYkCgYEAy6/2g3rxQzJEvTyOnBcEnZthmAD0AnP6LG8b35jt\n" +201"vh71LHbF1FhkOT42Rfg20aBfWTMRf+FeOJBXpD4gCNjQA40vy8FaQxgYNAf7ho5v\n" +202"z6yAEE6SG7YviE+XGcvpQo47w8c6QSQjpBzdw7JxwbVlzUT7pF8x3RnXlGhWnWv6\n" +203"c1ECAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBSaXXERsow2Wm/6uT07\n" +204"OorBleV92TAfBgNVHSMEGDAWgBTfWD9mRTppcUAlUqGuu/R5t8CB5jANBgkqhkiG\n" +205"9w0BAQUFAAOBgQAOfIeasDg91CR3jGfuAEVKwncM1OPFmniAUcdPm74cCAyJ90Me\n" +206"dhUElWPGoAuXGfiyZlOlGUYWqEroe/dnkmnotJjLWR+MA4ZyX3O1YI8T4W3deWcC\n" +207"J4WMCF7mp17SaYYKX9F0AxwNJFpUkbB41IkTxPr0MmzB1871/pbY8dLAvA==\n" +208"-----END CERTIFICATE-----";209210// SHA1withRSA 1024 signed with RSA 512211static String endentiry_SHA1withRSA_1024_512 =212"-----BEGIN CERTIFICATE-----\n" +213"MIIB9jCCAaCgAwIBAgIBAzANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +214"MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0wOTA4MDYwMTEx\n" +215"NTBaFw0yOTA0MjMwMTExNTBaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +216"cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +217"9w0BAQEFAAOBjQAwgYkCgYEAy6/2g3rxQzJEvTyOnBcEnZthmAD0AnP6LG8b35jt\n" +218"vh71LHbF1FhkOT42Rfg20aBfWTMRf+FeOJBXpD4gCNjQA40vy8FaQxgYNAf7ho5v\n" +219"z6yAEE6SG7YviE+XGcvpQo47w8c6QSQjpBzdw7JxwbVlzUT7pF8x3RnXlGhWnWv6\n" +220"c1ECAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBSaXXERsow2Wm/6uT07\n" +221"OorBleV92TAfBgNVHSMEGDAWgBQ3QIeJNg+2PK+k/ZrrLqaGxnpTjTANBgkqhkiG\n" +222"9w0BAQUFAANBADV6X+ea0ftEKXy7yKNAbdIp35893T6AVwbdclomPkeOs86OtoTG\n" +223"1BIzWSK9QE7W6Wbf63e2RdcqoLK+DxsuwUg=\n" +224"-----END CERTIFICATE-----";225226// SHA1withRSA 512 signed with RSA 1024227static String endentiry_SHA1withRSA_512_1024 =228"-----BEGIN CERTIFICATE-----\n" +229"MIIB8zCCAVygAwIBAgIBBDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +230"MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0wOTA4MDYwMTEx\n" +231"NTFaFw0yOTA0MjMwMTExNTFaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +232"cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTBcMA0GCSqGSIb3\n" +233"DQEBAQUAA0sAMEgCQQCpfQzhld7w2JhW/aRaLkmrLrc/QAsQE+J4DXioXaajsWPo\n" +234"uMmYmuiQolb6OIY/LcivSubKM3G5PkAWoovUPIWLAgMBAAGjTzBNMAsGA1UdDwQE\n" +235"AwID6DAdBgNVHQ4EFgQUFWuXLkf4Ji57H9ISycgWi982TUIwHwYDVR0jBBgwFoAU\n" +236"31g/ZkU6aXFAJVKhrrv0ebfAgeYwDQYJKoZIhvcNAQEFBQADgYEAUyW8PrEdbzLu\n" +237"B+h6UemBOJ024rYq90hJE/5wUEKPvxZ9vPEUgl+io6cGhL3cLfxfh6z5xtEGp4Tb\n" +238"NB0Ye3Qi01FBiNDY8s3rQRrmel6VysU8u+0Oi2jmQY6vZXn/zXN5rrTLITCaSicG\n" +239"dOMv1xLM83Ee432WWlDwKOUxhzDGpWc=\n" +240"-----END CERTIFICATE-----";241242// SHA1withRSA 512 signed with RSA 512243static String endentiry_SHA1withRSA_512_512 =244"-----BEGIN CERTIFICATE-----\n" +245"MIIBsjCCAVygAwIBAgIBBTANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJVUzEQ\n" +246"MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0wOTA4MDYwMTEx\n" +247"NTFaFw0yOTA0MjMwMTExNTFaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +248"cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTBcMA0GCSqGSIb3\n" +249"DQEBAQUAA0sAMEgCQQCpfQzhld7w2JhW/aRaLkmrLrc/QAsQE+J4DXioXaajsWPo\n" +250"uMmYmuiQolb6OIY/LcivSubKM3G5PkAWoovUPIWLAgMBAAGjTzBNMAsGA1UdDwQE\n" +251"AwID6DAdBgNVHQ4EFgQUFWuXLkf4Ji57H9ISycgWi982TUIwHwYDVR0jBBgwFoAU\n" +252"N0CHiTYPtjyvpP2a6y6mhsZ6U40wDQYJKoZIhvcNAQEFBQADQQBG4grtrVEHick0\n" +253"z/6Lcl/MGyHT0c8KTXE0AMVXG1NRjAicAmYno/yDaJ9OmfymObKZKV9fF7yCW/N/\n" +254"TMU6m7N0\n" +255"-----END CERTIFICATE-----";256257// MD2withRSA 1024 signed with RSA 1024258static String endentiry_MD2withRSA_1024_1024 =259"-----BEGIN CERTIFICATE-----\n" +260"MIICNzCCAaCgAwIBAgIBBjANBgkqhkiG9w0BAQIFADAxMQswCQYDVQQGEwJVUzEQ\n" +261"MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0wOTA4MDYwMTEx\n" +262"NTFaFw0yOTA0MjMwMTExNTFaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +263"cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +264"9w0BAQEFAAOBjQAwgYkCgYEAy6/2g3rxQzJEvTyOnBcEnZthmAD0AnP6LG8b35jt\n" +265"vh71LHbF1FhkOT42Rfg20aBfWTMRf+FeOJBXpD4gCNjQA40vy8FaQxgYNAf7ho5v\n" +266"z6yAEE6SG7YviE+XGcvpQo47w8c6QSQjpBzdw7JxwbVlzUT7pF8x3RnXlGhWnWv6\n" +267"c1ECAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBSaXXERsow2Wm/6uT07\n" +268"OorBleV92TAfBgNVHSMEGDAWgBTfWD9mRTppcUAlUqGuu/R5t8CB5jANBgkqhkiG\n" +269"9w0BAQIFAAOBgQBxKsFf8NNQcXjDoKJJSG4Rk6ikcrhiGYuUI32+XHvs6hnav1Zc\n" +270"aJUpy7J4gMj/MnysMh/4AF9+m6zEEjuisXKUbYZhgtJxz+ukGSo163mJ8QJiAlRb\n" +271"Iwsy81r08mlSCR6jx2YhDAUxJIPC92R5Vb4CEutB7tWTwwz7vIHq330erA==\n" +272"-----END CERTIFICATE-----";273274// MD2withRSA 1024 signed with RSA 512275static String endentiry_MD2withRSA_1024_512 =276"-----BEGIN CERTIFICATE-----\n" +277"MIIB9jCCAaCgAwIBAgIBBzANBgkqhkiG9w0BAQIFADAxMQswCQYDVQQGEwJVUzEQ\n" +278"MA4GA1UEChMHRXhhbXBsZTEQMA4GA1UECxMHQ2xhc3MtMTAeFw0wOTA4MDYwMTEx\n" +279"NTFaFw0yOTA0MjMwMTExNTFaMEExCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFeGFt\n" +280"cGxlMRAwDgYDVQQLEwdDbGFzcy0xMQ4wDAYDVQQDEwVBbGljZTCBnzANBgkqhkiG\n" +281"9w0BAQEFAAOBjQAwgYkCgYEAy6/2g3rxQzJEvTyOnBcEnZthmAD0AnP6LG8b35jt\n" +282"vh71LHbF1FhkOT42Rfg20aBfWTMRf+FeOJBXpD4gCNjQA40vy8FaQxgYNAf7ho5v\n" +283"z6yAEE6SG7YviE+XGcvpQo47w8c6QSQjpBzdw7JxwbVlzUT7pF8x3RnXlGhWnWv6\n" +284"c1ECAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBSaXXERsow2Wm/6uT07\n" +285"OorBleV92TAfBgNVHSMEGDAWgBQ3QIeJNg+2PK+k/ZrrLqaGxnpTjTANBgkqhkiG\n" +286"9w0BAQIFAANBAIX63Ypi9P71RnC/pcMbhD+wekRFsTzU593X3MC7tyBJtEXwvAZG\n" +287"iMxXF5A+ohlr7/CrkV7ZTL8PLxnJdY5Y8rQ=\n" +288"-----END CERTIFICATE-----";289290static HashMap<String, String> certmap = new HashMap<String, String>();291static {292certmap.put("trustAnchor_SHA1withRSA_1024",293trustAnchor_SHA1withRSA_1024);294certmap.put("trustAnchor_SHA1withRSA_512",295trustAnchor_SHA1withRSA_512);296certmap.put("intermediate_SHA1withRSA_1024_1024",297intermediate_SHA1withRSA_1024_1024);298certmap.put("intermediate_SHA1withRSA_1024_512",299intermediate_SHA1withRSA_1024_512);300certmap.put("intermediate_SHA1withRSA_512_1024",301intermediate_SHA1withRSA_512_1024);302certmap.put("intermediate_SHA1withRSA_512_512",303intermediate_SHA1withRSA_512_512);304certmap.put("intermediate_MD2withRSA_1024_1024",305intermediate_MD2withRSA_1024_1024);306certmap.put("intermediate_MD2withRSA_1024_512",307intermediate_MD2withRSA_1024_512);308certmap.put("endentiry_SHA1withRSA_1024_1024",309endentiry_SHA1withRSA_1024_1024);310certmap.put("endentiry_SHA1withRSA_1024_512",311endentiry_SHA1withRSA_1024_512);312certmap.put("endentiry_SHA1withRSA_512_1024",313endentiry_SHA1withRSA_512_1024);314certmap.put("endentiry_SHA1withRSA_512_512",315endentiry_SHA1withRSA_512_512);316certmap.put("endentiry_MD2withRSA_1024_1024",317endentiry_MD2withRSA_1024_1024);318certmap.put("endentiry_MD2withRSA_1024_512",319endentiry_MD2withRSA_1024_512);320}321322private static Set<TrustAnchor> generateTrustAnchors()323throws CertificateException {324// generate certificate from cert string325CertificateFactory cf = CertificateFactory.getInstance("X.509");326HashSet<TrustAnchor> anchors = new HashSet<TrustAnchor>();327328ByteArrayInputStream is =329new ByteArrayInputStream(trustAnchor_SHA1withRSA_1024.getBytes());330Certificate cert = cf.generateCertificate(is);331TrustAnchor anchor = new TrustAnchor((X509Certificate)cert, null);332anchors.add(anchor);333334is = new ByteArrayInputStream(trustAnchor_SHA1withRSA_512.getBytes());335cert = cf.generateCertificate(is);336anchor = new TrustAnchor((X509Certificate)cert, null);337anchors.add(anchor);338339return anchors;340}341342private static CertStore generateCertificateStore() throws Exception {343Collection entries = new HashSet();344345// generate certificate from certificate string346CertificateFactory cf = CertificateFactory.getInstance("X.509");347348for (String key : certmap.keySet()) {349String certStr = certmap.get(key);350ByteArrayInputStream is =351new ByteArrayInputStream(certStr.getBytes());;352Certificate cert = cf.generateCertificate(is);353entries.add(cert);354}355356return CertStore.getInstance("Collection",357new CollectionCertStoreParameters(entries));358}359360private static X509CertSelector generateSelector(String name)361throws Exception {362X509CertSelector selector = new X509CertSelector();363364String certStr = certmap.get(name);365if (certStr == null) {366return null;367}368369// generate certificate from certificate string370CertificateFactory cf = CertificateFactory.getInstance("X.509");371ByteArrayInputStream is = new ByteArrayInputStream(certStr.getBytes());372X509Certificate target = (X509Certificate)cf.generateCertificate(is);373374selector.setCertificate(target);375376return selector;377}378379private static boolean match(String name, Certificate cert)380throws Exception {381X509CertSelector selector = new X509CertSelector();382383String certStr = certmap.get(name);384if (certStr == null) {385return false;386}387388// generate certificate from certificate string389CertificateFactory cf = CertificateFactory.getInstance("X.509");390ByteArrayInputStream is = new ByteArrayInputStream(certStr.getBytes());391X509Certificate target = (X509Certificate)cf.generateCertificate(is);392393return target.equals(cert);394}395396public static void main(String args[]) throws Exception {397// reset the security property to make sure that the algorithms398// and keys used in this test are not disabled.399Security.setProperty("jdk.certpath.disabledAlgorithms", "MD2");400401CertPathBuilder builder = CertPathBuilder.getInstance("PKIX");402403X509CertSelector selector = generateSelector(args[0]);404if (selector == null) {405// no target certificate, ignore it406return;407}408409Set<TrustAnchor> anchors = generateTrustAnchors();410CertStore certs = generateCertificateStore();411412PKIXBuilderParameters params =413new PKIXBuilderParameters(anchors, selector);414params.addCertStore(certs);415params.setRevocationEnabled(false);416params.setDate(new Date(109, 9, 1)); // 2009-09-01417418boolean success = Boolean.valueOf(args[2]);419try {420PKIXCertPathBuilderResult result =421(PKIXCertPathBuilderResult)builder.build(params);422if (!success) {423throw new Exception("expected algorithm disabled exception");424}425426int length = Integer.parseInt(args[1]);427List<? extends Certificate> path =428result.getCertPath().getCertificates();429if (length != path.size()) {430throw new Exception("unexpected certification path length");431}432433if (!path.isEmpty()) { // the target is not a trust anchor434if (!match(args[0], path.get(0))) {435throw new Exception("unexpected certificate");436}437}438} catch (CertPathBuilderException cpbe) {439if (success) {440throw new Exception("unexpected exception");441} else {442System.out.println("Get the expected exception " + cpbe);443}444}445}446447}448449450