Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
255d2ed6
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
255d2ed6
编写于
5月 27, 2009
作者:
M
mchung
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
3aba8472
d469cf91
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
811 addition
and
0 deletion
+811
-0
test/java/security/cert/CertPathValidator/nameConstraints/NameConstraintsWithRID.java
...PathValidator/nameConstraints/NameConstraintsWithRID.java
+161
-0
test/java/security/cert/CertPathValidator/nameConstraints/NameConstraintsWithUnexpectedRID.java
...tor/nameConstraints/NameConstraintsWithUnexpectedRID.java
+159
-0
test/java/security/cert/CertPathValidator/nameConstraints/NameConstraintsWithoutRID.java
...hValidator/nameConstraints/NameConstraintsWithoutRID.java
+159
-0
test/java/security/cert/CertPathValidator/nameConstraints/generate.sh
...curity/cert/CertPathValidator/nameConstraints/generate.sh
+112
-0
test/java/security/cert/CertPathValidator/nameConstraints/openssl.cnf
...curity/cert/CertPathValidator/nameConstraints/openssl.cnf
+220
-0
未找到文件。
test/java/security/cert/CertPathValidator/nameConstraints/NameConstraintsWithRID.java
0 → 100644
浏览文件 @
255d2ed6
/*
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/**
* @test
*
* @bug 6845286
* @summary Add regression test for name constraints
* @author Xuelei Fan
*/
import
java.io.*
;
import
java.net.SocketException
;
import
java.util.*
;
import
java.security.Security
;
import
java.security.cert.*
;
import
java.security.cert.CertPathValidatorException.BasicReason
;
public
class
NameConstraintsWithRID
{
static
String
selfSignedCertStr
=
"-----BEGIN CERTIFICATE-----\n"
+
"MIICTjCCAbegAwIBAgIJAIoSzC1A/k4vMA0GCSqGSIb3DQEBBQUAMB8xCzAJBgNV\n"
+
"BAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMB4XDTA5MDUwNzA5MjcxMloXDTMwMDQx\n"
+
"NzA5MjcxMlowHzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGUwgZ8wDQYJ\n"
+
"KoZIhvcNAQEBBQADgY0AMIGJAoGBANXzlv5Fn2cdgBRdEK/37/o8rqQXIRIMZqX6\n"
+
"BPuo46Cdhctv+n3hu5bj/PwgJVbAJcqcQfDudSSF5gwGlRqDX9vekPSS47XZXjOZ\n"
+
"qFcnDoWP0gSQXLYVVtjuItkecTrPyUE5v2lRIAh13MGKOSh3ZsrtFvj7Y5d9EqIP\n"
+
"SLxWWPuHAgMBAAGjgZEwgY4wHQYDVR0OBBYEFFydJvQMB2j4EDHW2bQabNsPUvDt\n"
+
"ME8GA1UdIwRIMEaAFFydJvQMB2j4EDHW2bQabNsPUvDtoSOkITAfMQswCQYDVQQG\n"
+
"EwJVUzEQMA4GA1UEChMHRXhhbXBsZYIJAIoSzC1A/k4vMA8GA1UdEwEB/wQFMAMB\n"
+
"Af8wCwYDVR0PBAQDAgIEMA0GCSqGSIb3DQEBBQUAA4GBAHgoopmZ1Q4qXhMDbbYQ\n"
+
"YCi4Cg6cXPFblx5gzhWu/6l9SkvZbAZiLszgyMq5dGj9WyTtibNEp232dQsKTFu7\n"
+
"3ag0DiFqoQ8btgvbwBlzhnRagoeVFjhuBBQutOScw7x8NCSBkZQow+31127mwu3y\n"
+
"YGYhEmI2dNmgbv1hVYTGmLXW\n"
+
"-----END CERTIFICATE-----"
;
static
String
subCaCertStr
=
"-----BEGIN CERTIFICATE-----\n"
+
"MIICdTCCAd6gAwIBAgIJAL+MYVyy7k5YMA0GCSqGSIb3DQEBBQUAMB8xCzAJBgNV\n"
+
"BAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMB4XDTA5MDUwNzA5MjcxNFoXDTI5MDEy\n"
+
"MjA5MjcxNFowMTELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGUxEDAOBgNV\n"
+
"BAsTB0NsYXNzLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM2mwX8dhP3M\n"
+
"i6ATRsd0wco+c7rsyEbP0CRQunVIP8/kOL8+zyQix+QZquY23tvBCbia424GXDkT\n"
+
"irvK/M4yGzrdS51hA5dlH3SHY3CWOAqEPqKtNLn1My4MWtTiUWbHi0YjFuOv0BXz\n"
+
"x9lTEfMf+3QcOgO5FitcqHIMP4jIlT+lAgMBAAGjgaYwgaMwHQYDVR0OBBYEFJHg\n"
+
"eyEWcjxcAwc01BPQrau/4HJaME8GA1UdIwRIMEaAFFydJvQMB2j4EDHW2bQabNsP\n"
+
"UvDtoSOkITAfMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXhhbXBsZYIJAIoSzC1A\n"
+
"/k4vMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMBMGA1UdHgQMMAqhCDAG\n"
+
"iAQqAwQFMA0GCSqGSIb3DQEBBQUAA4GBAI3CDQWZiTlVVVqfCiZwc/yIL7G5bu2g\n"
+
"ccgVz9PyKfTpq8vk59S23TvPwdPt4ZVx4RSoar9ONtbrcLxfP3X6WQ7e9popWNZV\n"
+
"q49YfyU1tD5HFuxj7CAsvfykuRo4ovXaTCVWlTMi7fJJdzU0Eb4xkXXhiWT/RbHG\n"
+
"R7J+8ROMZ+nR\n"
+
"-----END CERTIFICATE-----"
;
static
String
targetCertStr
=
"-----BEGIN CERTIFICATE-----\n"
+
"MIICUDCCAbmgAwIBAgIJAOA8c10w019XMA0GCSqGSIb3DQEBBQUAMDExCzAJBgNV\n"
+
"BAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFzcy0xMB4XDTA5\n"
+
"MDUwNzEwMjY0M1oXDTI5MDEyMjEwMjY0M1owQTELMAkGA1UEBhMCVVMxEDAOBgNV\n"
+
"BAoTB0V4YW1wbGUxEDAOBgNVBAsTB0NsYXNzLTExDjAMBgNVBAMTBVN1c2FuMIGf\n"
+
"MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlmyS8SskMX3mreD95oBaXUGNvPTK0\n"
+
"39IBdxle2TpJEBL/BcS4QUb2+67WjrXhUZWFtpc4RzywfvSSxZH2wbwDDJPs56OC\n"
+
"Eczsdnqe7gOroYm2TMfY0/pItgP3mRkhJpxAWFc/y7Qr8jJbPmKfiYbYROp1eR2t\n"
+
"BrjUiUTrAtM7GwIDAQABo2AwXjALBgNVHQ8EBAMCA+gwDwYDVR0RBAgwBogEKgME\n"
+
"BTAdBgNVHQ4EFgQUyqtfkWtPah5J658LHN8CEGIgAbgwHwYDVR0jBBgwFoAUkeB7\n"
+
"IRZyPFwDBzTUE9Ctq7/gclowDQYJKoZIhvcNAQEFBQADgYEAnwaLBteuJhXF56Rg\n"
+
"l8FIEzgJtT4yu/8WsYjhN6/aLGkgJ37VavWdhjwXIb1RVJE/ab3hTbWF5ht7jMcQ\n"
+
"/WnD8R8CpwEEX/n2wpb3zMHZ8zT7k0mWYm10mPHw1psjOUvJd/zB4gT4tc2A2soM\n"
+
"FbcNIaCtg8blO5ImdOz5hAi+NuY=\n"
+
"-----END CERTIFICATE-----"
;
private
static
CertPath
generateCertificatePath
()
throws
CertificateException
{
// generate certificate from cert strings
CertificateFactory
cf
=
CertificateFactory
.
getInstance
(
"X.509"
);
ByteArrayInputStream
is
;
is
=
new
ByteArrayInputStream
(
targetCertStr
.
getBytes
());
Certificate
targetCert
=
cf
.
generateCertificate
(
is
);
is
=
new
ByteArrayInputStream
(
subCaCertStr
.
getBytes
());
Certificate
subCaCert
=
cf
.
generateCertificate
(
is
);
is
=
new
ByteArrayInputStream
(
selfSignedCertStr
.
getBytes
());
Certificate
selfSignedCert
=
cf
.
generateCertificate
(
is
);
// generate certification path
List
<
Certificate
>
list
=
Arrays
.
asList
(
new
Certificate
[]
{
targetCert
,
subCaCert
,
selfSignedCert
});
return
cf
.
generateCertPath
(
list
);
}
private
static
Set
<
TrustAnchor
>
generateTrustAnchors
()
throws
CertificateException
{
// generate certificate from cert string
CertificateFactory
cf
=
CertificateFactory
.
getInstance
(
"X.509"
);
ByteArrayInputStream
is
=
new
ByteArrayInputStream
(
selfSignedCertStr
.
getBytes
());
Certificate
selfSignedCert
=
cf
.
generateCertificate
(
is
);
// generate a trust anchor
TrustAnchor
anchor
=
new
TrustAnchor
((
X509Certificate
)
selfSignedCert
,
null
);
return
Collections
.
singleton
(
anchor
);
}
public
static
void
main
(
String
args
[])
throws
Exception
{
CertPath
path
=
generateCertificatePath
();
Set
<
TrustAnchor
>
anchors
=
generateTrustAnchors
();
PKIXParameters
params
=
new
PKIXParameters
(
anchors
);
// disable certificate revocation checking
params
.
setRevocationEnabled
(
false
);
// set the validation time
params
.
setDate
(
new
Date
(
109
,
5
,
8
));
// 2009-05-01
// disable OCSP checker
Security
.
setProperty
(
"ocsp.enable"
,
"false"
);
// disable CRL checker
System
.
setProperty
(
"com.sun.security.enableCRLDP"
,
"false"
);
CertPathValidator
validator
=
CertPathValidator
.
getInstance
(
"PKIX"
);
try
{
validator
.
validate
(
path
,
params
);
throw
new
Exception
(
"the subjectAltName is excluded by NameConstraints, "
+
"should thrown CertPathValidatorException"
);
}
catch
(
CertPathValidatorException
uoe
)
{
// that is the expected exception.
}
}
}
test/java/security/cert/CertPathValidator/nameConstraints/NameConstraintsWithUnexpectedRID.java
0 → 100644
浏览文件 @
255d2ed6
/*
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/**
* @test
*
* @bug 6845286
* @summary Add regression test for name constraints
* @author Xuelei Fan
*/
import
java.io.*
;
import
java.net.SocketException
;
import
java.util.*
;
import
java.security.Security
;
import
java.security.cert.*
;
import
java.security.cert.CertPathValidatorException.BasicReason
;
public
class
NameConstraintsWithUnexpectedRID
{
static
String
selfSignedCertStr
=
"-----BEGIN CERTIFICATE-----\n"
+
"MIICTjCCAbegAwIBAgIJAIoSzC1A/k4vMA0GCSqGSIb3DQEBBQUAMB8xCzAJBgNV\n"
+
"BAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMB4XDTA5MDUwNzA5MjcxMloXDTMwMDQx\n"
+
"NzA5MjcxMlowHzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGUwgZ8wDQYJ\n"
+
"KoZIhvcNAQEBBQADgY0AMIGJAoGBANXzlv5Fn2cdgBRdEK/37/o8rqQXIRIMZqX6\n"
+
"BPuo46Cdhctv+n3hu5bj/PwgJVbAJcqcQfDudSSF5gwGlRqDX9vekPSS47XZXjOZ\n"
+
"qFcnDoWP0gSQXLYVVtjuItkecTrPyUE5v2lRIAh13MGKOSh3ZsrtFvj7Y5d9EqIP\n"
+
"SLxWWPuHAgMBAAGjgZEwgY4wHQYDVR0OBBYEFFydJvQMB2j4EDHW2bQabNsPUvDt\n"
+
"ME8GA1UdIwRIMEaAFFydJvQMB2j4EDHW2bQabNsPUvDtoSOkITAfMQswCQYDVQQG\n"
+
"EwJVUzEQMA4GA1UEChMHRXhhbXBsZYIJAIoSzC1A/k4vMA8GA1UdEwEB/wQFMAMB\n"
+
"Af8wCwYDVR0PBAQDAgIEMA0GCSqGSIb3DQEBBQUAA4GBAHgoopmZ1Q4qXhMDbbYQ\n"
+
"YCi4Cg6cXPFblx5gzhWu/6l9SkvZbAZiLszgyMq5dGj9WyTtibNEp232dQsKTFu7\n"
+
"3ag0DiFqoQ8btgvbwBlzhnRagoeVFjhuBBQutOScw7x8NCSBkZQow+31127mwu3y\n"
+
"YGYhEmI2dNmgbv1hVYTGmLXW\n"
+
"-----END CERTIFICATE-----"
;
static
String
subCaCertStr
=
"-----BEGIN CERTIFICATE-----\n"
+
"MIICdTCCAd6gAwIBAgIJAL+MYVyy7k5YMA0GCSqGSIb3DQEBBQUAMB8xCzAJBgNV\n"
+
"BAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMB4XDTA5MDUwNzA5MjcxNFoXDTI5MDEy\n"
+
"MjA5MjcxNFowMTELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGUxEDAOBgNV\n"
+
"BAsTB0NsYXNzLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM2mwX8dhP3M\n"
+
"i6ATRsd0wco+c7rsyEbP0CRQunVIP8/kOL8+zyQix+QZquY23tvBCbia424GXDkT\n"
+
"irvK/M4yGzrdS51hA5dlH3SHY3CWOAqEPqKtNLn1My4MWtTiUWbHi0YjFuOv0BXz\n"
+
"x9lTEfMf+3QcOgO5FitcqHIMP4jIlT+lAgMBAAGjgaYwgaMwHQYDVR0OBBYEFJHg\n"
+
"eyEWcjxcAwc01BPQrau/4HJaME8GA1UdIwRIMEaAFFydJvQMB2j4EDHW2bQabNsP\n"
+
"UvDtoSOkITAfMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXhhbXBsZYIJAIoSzC1A\n"
+
"/k4vMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMBMGA1UdHgQMMAqhCDAG\n"
+
"iAQqAwQFMA0GCSqGSIb3DQEBBQUAA4GBAI3CDQWZiTlVVVqfCiZwc/yIL7G5bu2g\n"
+
"ccgVz9PyKfTpq8vk59S23TvPwdPt4ZVx4RSoar9ONtbrcLxfP3X6WQ7e9popWNZV\n"
+
"q49YfyU1tD5HFuxj7CAsvfykuRo4ovXaTCVWlTMi7fJJdzU0Eb4xkXXhiWT/RbHG\n"
+
"R7J+8ROMZ+nR\n"
+
"-----END CERTIFICATE-----"
;
static
String
targetCertStr
=
"-----BEGIN CERTIFICATE-----\n"
+
"MIICTzCCAbigAwIBAgIJAOA8c10w019UMA0GCSqGSIb3DQEBBQUAMDExCzAJBgNV\n"
+
"BAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFzcy0xMB4XDTA5\n"
+
"MDUwNzA5NTg0OVoXDTI5MDEyMjA5NTg0OVowQTELMAkGA1UEBhMCVVMxEDAOBgNV\n"
+
"BAoTB0V4YW1wbGUxEDAOBgNVBAsTB0NsYXNzLTExDjAMBgNVBAMTBUFsaWNlMIGf\n"
+
"MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfekJF8IZeOe3Ff1rexVyx9yTmPSKh\n"
+
"itEW7tW9m8DgqLGDptJLmbexvUCWNkFquQW1J8sjzjqrkIk8amA2SlHQ6Z15RoxC\n"
+
"E19qi5V5ms97X3lyuJcwwtT24J5PBk9ic/V6zclsNXSj/NoqlciKMxyvRy9zWk6Z\n"
+
"W5cVDf7DTzN2cwIDAQABo18wXTALBgNVHQ8EBAMCA+gwDgYDVR0RBAcwBYgDKgME\n"
+
"MB0GA1UdDgQWBBRh8rvMhT17VI+S3pCVzTwQzVMjOTAfBgNVHSMEGDAWgBSR4Hsh\n"
+
"FnI8XAMHNNQT0K2rv+ByWjANBgkqhkiG9w0BAQUFAAOBgQCNDnJ0Jz37+SmO9uRJ\n"
+
"z5Rr15oJAKsde5LGhghHZwTTYInOwGOYAABkWRB7JhUHNjIoQg9veqObSHEgcYMh\n"
+
"ZmO3rklIxyTeoyn86KR49cdvQUoqEhx1jKrEbFBsAwSbJDw//S+wNYgMHYtcynf4\n"
+
"dcVScVdLUDeqE/3f+5yt1JPRuA==\n"
+
"-----END CERTIFICATE-----"
;
private
static
CertPath
generateCertificatePath
()
throws
CertificateException
{
// generate certificate from cert strings
CertificateFactory
cf
=
CertificateFactory
.
getInstance
(
"X.509"
);
ByteArrayInputStream
is
;
is
=
new
ByteArrayInputStream
(
targetCertStr
.
getBytes
());
Certificate
targetCert
=
cf
.
generateCertificate
(
is
);
is
=
new
ByteArrayInputStream
(
subCaCertStr
.
getBytes
());
Certificate
subCaCert
=
cf
.
generateCertificate
(
is
);
is
=
new
ByteArrayInputStream
(
selfSignedCertStr
.
getBytes
());
Certificate
selfSignedCert
=
cf
.
generateCertificate
(
is
);
// generate certification path
List
<
Certificate
>
list
=
Arrays
.
asList
(
new
Certificate
[]
{
targetCert
,
subCaCert
,
selfSignedCert
});
return
cf
.
generateCertPath
(
list
);
}
private
static
Set
<
TrustAnchor
>
generateTrustAnchors
()
throws
CertificateException
{
// generate certificate from cert string
CertificateFactory
cf
=
CertificateFactory
.
getInstance
(
"X.509"
);
ByteArrayInputStream
is
=
new
ByteArrayInputStream
(
selfSignedCertStr
.
getBytes
());
Certificate
selfSignedCert
=
cf
.
generateCertificate
(
is
);
// generate a trust anchor
TrustAnchor
anchor
=
new
TrustAnchor
((
X509Certificate
)
selfSignedCert
,
null
);
return
Collections
.
singleton
(
anchor
);
}
public
static
void
main
(
String
args
[])
throws
Exception
{
CertPath
path
=
generateCertificatePath
();
Set
<
TrustAnchor
>
anchors
=
generateTrustAnchors
();
PKIXParameters
params
=
new
PKIXParameters
(
anchors
);
// disable certificate revocation checking
params
.
setRevocationEnabled
(
false
);
// set the validation time
params
.
setDate
(
new
Date
(
109
,
5
,
8
));
// 2009-05-01
// disable OCSP checker
Security
.
setProperty
(
"ocsp.enable"
,
"false"
);
// disable CRL checker
System
.
setProperty
(
"com.sun.security.enableCRLDP"
,
"false"
);
CertPathValidator
validator
=
CertPathValidator
.
getInstance
(
"PKIX"
);
try
{
validator
.
validate
(
path
,
params
);
throw
new
Exception
(
"Should thrown UnsupportedOperationException"
);
}
catch
(
UnsupportedOperationException
uoe
)
{
// that is the expected exception.
}
}
}
test/java/security/cert/CertPathValidator/nameConstraints/NameConstraintsWithoutRID.java
0 → 100644
浏览文件 @
255d2ed6
/*
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/**
* @test
*
* @bug 6845286
* @summary Add regression test for name constraints
* @author Xuelei Fan
*/
import
java.io.*
;
import
java.net.SocketException
;
import
java.util.*
;
import
java.security.Security
;
import
java.security.cert.*
;
import
java.security.cert.CertPathValidatorException.BasicReason
;
public
class
NameConstraintsWithoutRID
{
static
String
selfSignedCertStr
=
"-----BEGIN CERTIFICATE-----\n"
+
"MIICTjCCAbegAwIBAgIJAIoSzC1A/k4vMA0GCSqGSIb3DQEBBQUAMB8xCzAJBgNV\n"
+
"BAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMB4XDTA5MDUwNzA5MjcxMloXDTMwMDQx\n"
+
"NzA5MjcxMlowHzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGUwgZ8wDQYJ\n"
+
"KoZIhvcNAQEBBQADgY0AMIGJAoGBANXzlv5Fn2cdgBRdEK/37/o8rqQXIRIMZqX6\n"
+
"BPuo46Cdhctv+n3hu5bj/PwgJVbAJcqcQfDudSSF5gwGlRqDX9vekPSS47XZXjOZ\n"
+
"qFcnDoWP0gSQXLYVVtjuItkecTrPyUE5v2lRIAh13MGKOSh3ZsrtFvj7Y5d9EqIP\n"
+
"SLxWWPuHAgMBAAGjgZEwgY4wHQYDVR0OBBYEFFydJvQMB2j4EDHW2bQabNsPUvDt\n"
+
"ME8GA1UdIwRIMEaAFFydJvQMB2j4EDHW2bQabNsPUvDtoSOkITAfMQswCQYDVQQG\n"
+
"EwJVUzEQMA4GA1UEChMHRXhhbXBsZYIJAIoSzC1A/k4vMA8GA1UdEwEB/wQFMAMB\n"
+
"Af8wCwYDVR0PBAQDAgIEMA0GCSqGSIb3DQEBBQUAA4GBAHgoopmZ1Q4qXhMDbbYQ\n"
+
"YCi4Cg6cXPFblx5gzhWu/6l9SkvZbAZiLszgyMq5dGj9WyTtibNEp232dQsKTFu7\n"
+
"3ag0DiFqoQ8btgvbwBlzhnRagoeVFjhuBBQutOScw7x8NCSBkZQow+31127mwu3y\n"
+
"YGYhEmI2dNmgbv1hVYTGmLXW\n"
+
"-----END CERTIFICATE-----"
;
static
String
subCaCertStr
=
"-----BEGIN CERTIFICATE-----\n"
+
"MIICdTCCAd6gAwIBAgIJAL+MYVyy7k5YMA0GCSqGSIb3DQEBBQUAMB8xCzAJBgNV\n"
+
"BAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMB4XDTA5MDUwNzA5MjcxNFoXDTI5MDEy\n"
+
"MjA5MjcxNFowMTELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0V4YW1wbGUxEDAOBgNV\n"
+
"BAsTB0NsYXNzLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM2mwX8dhP3M\n"
+
"i6ATRsd0wco+c7rsyEbP0CRQunVIP8/kOL8+zyQix+QZquY23tvBCbia424GXDkT\n"
+
"irvK/M4yGzrdS51hA5dlH3SHY3CWOAqEPqKtNLn1My4MWtTiUWbHi0YjFuOv0BXz\n"
+
"x9lTEfMf+3QcOgO5FitcqHIMP4jIlT+lAgMBAAGjgaYwgaMwHQYDVR0OBBYEFJHg\n"
+
"eyEWcjxcAwc01BPQrau/4HJaME8GA1UdIwRIMEaAFFydJvQMB2j4EDHW2bQabNsP\n"
+
"UvDtoSOkITAfMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXhhbXBsZYIJAIoSzC1A\n"
+
"/k4vMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgIEMBMGA1UdHgQMMAqhCDAG\n"
+
"iAQqAwQFMA0GCSqGSIb3DQEBBQUAA4GBAI3CDQWZiTlVVVqfCiZwc/yIL7G5bu2g\n"
+
"ccgVz9PyKfTpq8vk59S23TvPwdPt4ZVx4RSoar9ONtbrcLxfP3X6WQ7e9popWNZV\n"
+
"q49YfyU1tD5HFuxj7CAsvfykuRo4ovXaTCVWlTMi7fJJdzU0Eb4xkXXhiWT/RbHG\n"
+
"R7J+8ROMZ+nR\n"
+
"-----END CERTIFICATE-----"
;
static
String
targetCertStr
=
"-----BEGIN CERTIFICATE-----\n"
+
"MIICPTCCAaagAwIBAgIJAOA8c10w019WMA0GCSqGSIb3DQEBBQUAMDExCzAJBgNV\n"
+
"BAYTAlVTMRAwDgYDVQQKEwdFeGFtcGxlMRAwDgYDVQQLEwdDbGFzcy0xMB4XDTA5\n"
+
"MDUwNzEwMjY0MloXDTI5MDEyMjEwMjY0MlowPzELMAkGA1UEBhMCVVMxEDAOBgNV\n"
+
"BAoTB0V4YW1wbGUxEDAOBgNVBAsTB0NsYXNzLTExDDAKBgNVBAMTA0JvYjCBnzAN\n"
+
"BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAx4N+y29y5mAGnVQHA3x3fQehxm3nFohQ\n"
+
"gKV10bZ24/hwZn6rZXG6VsBaqkrgw7ipRZzk99etihAomAFL9k0q/0nxFP/Ovwio\n"
+
"NzacF3vpv85FF6ATwY1Zs+p4hfxU3WnnyyS9la9Z3o5QBhQbV/WjA/JSG5+ImQFp\n"
+
"nLkPfzU4wXECAwEAAaNPME0wCwYDVR0PBAQDAgPoMB0GA1UdDgQWBBTxUJG+QewS\n"
+
"rSGcuiJy+K4gb1g/BzAfBgNVHSMEGDAWgBSR4HshFnI8XAMHNNQT0K2rv+ByWjAN\n"
+
"BgkqhkiG9w0BAQUFAAOBgQA9fDeTtSXmP/MEni0vtAmgTPd6R31NcPWKibDizwYS\n"
+
"BWjUMcbTN8xeXjm4uQLMK8ZQy2+cmNrTvQ59BZ8Y97y7SJUcBLOW5eivO/mKuBsC\n"
+
"ACB9IxBUGVEwNup7KJ5ixox5jKt+qPwzCheyQQb9NEDJdB0YaHRhFpCcpCFak8yK\n"
+
"/A==\n"
+
"-----END CERTIFICATE-----"
;
private
static
CertPath
generateCertificatePath
()
throws
CertificateException
{
// generate certificate from cert strings
CertificateFactory
cf
=
CertificateFactory
.
getInstance
(
"X.509"
);
ByteArrayInputStream
is
;
is
=
new
ByteArrayInputStream
(
targetCertStr
.
getBytes
());
Certificate
targetCert
=
cf
.
generateCertificate
(
is
);
is
=
new
ByteArrayInputStream
(
subCaCertStr
.
getBytes
());
Certificate
subCaCert
=
cf
.
generateCertificate
(
is
);
is
=
new
ByteArrayInputStream
(
selfSignedCertStr
.
getBytes
());
Certificate
selfSignedCert
=
cf
.
generateCertificate
(
is
);
// generate certification path
List
<
Certificate
>
list
=
Arrays
.
asList
(
new
Certificate
[]
{
targetCert
,
subCaCert
,
selfSignedCert
});
return
cf
.
generateCertPath
(
list
);
}
private
static
Set
<
TrustAnchor
>
generateTrustAnchors
()
throws
CertificateException
{
// generate certificate from cert string
CertificateFactory
cf
=
CertificateFactory
.
getInstance
(
"X.509"
);
ByteArrayInputStream
is
=
new
ByteArrayInputStream
(
selfSignedCertStr
.
getBytes
());
Certificate
selfSignedCert
=
cf
.
generateCertificate
(
is
);
// generate a trust anchor
TrustAnchor
anchor
=
new
TrustAnchor
((
X509Certificate
)
selfSignedCert
,
null
);
return
Collections
.
singleton
(
anchor
);
}
public
static
void
main
(
String
args
[])
throws
Exception
{
CertPath
path
=
generateCertificatePath
();
Set
<
TrustAnchor
>
anchors
=
generateTrustAnchors
();
PKIXParameters
params
=
new
PKIXParameters
(
anchors
);
// disable certificate revocation checking
params
.
setRevocationEnabled
(
false
);
// set the validation time
params
.
setDate
(
new
Date
(
109
,
5
,
8
));
// 2009-05-01
// disable OCSP checker
Security
.
setProperty
(
"ocsp.enable"
,
"false"
);
// disable CRL checker
System
.
setProperty
(
"com.sun.security.enableCRLDP"
,
"false"
);
CertPathValidator
validator
=
CertPathValidator
.
getInstance
(
"PKIX"
);
try
{
validator
.
validate
(
path
,
params
);
}
catch
(
CertPathValidatorException
uoe
)
{
// unexpected exception, rethrow it.
throw
uoe
;
}
}
}
test/java/security/cert/CertPathValidator/nameConstraints/generate.sh
0 → 100644
浏览文件 @
255d2ed6
#
# Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
#!/bin/ksh
#
# needs ksh to run the script.
OPENSSL
=
openssl
# generate a self-signed root certificate
if
[
!
-f
root/root_cert.pem
]
;
then
if
[
!
-d
root
]
;
then
mkdir
root
fi
${
OPENSSL
}
req
-x509
-newkey
rsa:1024
-keyout
root/root_key.pem
\
-out
root/root_cert.pem
-subj
"/C=US/O=Example"
\
-config
openssl.cnf
-reqexts
cert_issuer
-days
7650
\
-passin
pass:passphrase
-passout
pass:passphrase
fi
# generate subca cert issuer
if
[
!
-f
subca/subca_cert.pem
]
;
then
if
[
!
-d
subca
]
;
then
mkdir
subca
fi
${
OPENSSL
}
req
-newkey
rsa:1024
-keyout
subca/subca_key.pem
\
-out
subca/subca_req.pem
-subj
"/C=US/O=Example/OU=Class-1"
\
-days
7650
-passin
pass:passphrase
-passout
pass:passphrase
${
OPENSSL
}
x509
-req
-in
subca/subca_req.pem
-extfile
openssl.cnf
\
-extensions
cert_issuer
-CA
root/root_cert.pem
\
-CAkey
root/root_key.pem
-out
subca/subca_cert.pem
-CAcreateserial
\
-CAserial
root/root_cert.srl
-days
7200
-passin
pass:passphrase
fi
# generate certifiacte for Alice
if
[
!
-f
subca/alice/alice_cert.pem
]
;
then
if
[
!
-d
subca/alice
]
;
then
mkdir
-p
subca/alice
fi
${
OPENSSL
}
req
-newkey
rsa:1024
-keyout
subca/alice/alice_key.pem
\
-out
subca/alice/alice_req.pem
\
-subj
"/C=US/O=Example/OU=Class-1/CN=Alice"
-days
7650
\
-passin
pass:passphrase
-passout
pass:passphrase
${
OPENSSL
}
x509
-req
-in
subca/alice/alice_req.pem
\
-extfile
openssl.cnf
-extensions
alice_of_subca
\
-CA
subca/subca_cert.pem
-CAkey
subca/subca_key.pem
\
-out
subca/alice/alice_cert.pem
-CAcreateserial
\
-CAserial
subca/subca_cert.srl
-days
7200
-passin
pass:passphrase
fi
# generate certifiacte for Bob
if
[
!
-f
subca/bob/bob.pem
]
;
then
if
[
!
-d
subca/bob
]
;
then
mkdir
-p
subca/bob
fi
${
OPENSSL
}
req
-newkey
rsa:1024
-keyout
subca/bob/bob_key.pem
\
-out
subca/bob/bob_req.pem
\
-subj
"/C=US/O=Example/OU=Class-1/CN=Bob"
-days
7650
\
-passin
pass:passphrase
-passout
pass:passphrase
${
OPENSSL
}
x509
-req
-in
subca/bob/bob_req.pem
\
-extfile
openssl.cnf
-extensions
ee_of_subca
\
-CA
subca/subca_cert.pem
-CAkey
subca/subca_key.pem
\
-out
subca/bob/bob_cert.pem
-CAcreateserial
\
-CAserial
subca/subca_cert.srl
-days
7200
-passin
pass:passphrase
fi
# generate certifiacte for Susan
if
[
!
-f
subca/susan/susan_cert.pem
]
;
then
if
[
!
-d
subca/susan
]
;
then
mkdir
-p
subca/susan
fi
${
OPENSSL
}
req
-newkey
rsa:1024
-keyout
subca/susan/susan_key.pem
\
-out
subca/susan/susan_req.pem
\
-subj
"/C=US/O=Example/OU=Class-1/CN=Susan"
-days
7650
\
-passin
pass:passphrase
-passout
pass:passphrase
${
OPENSSL
}
x509
-req
-in
subca/susan/susan_req.pem
\
-extfile
openssl.cnf
-extensions
susan_of_subca
\
-CA
subca/subca_cert.pem
-CAkey
subca/subca_key.pem
\
-out
subca/susan/susan_cert.pem
-CAcreateserial
\
-CAserial
subca/subca_cert.srl
-days
7200
-passin
pass:passphrase
fi
test/java/security/cert/CertPathValidator/nameConstraints/openssl.cnf
0 → 100644
浏览文件 @
255d2ed6
#
# Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
#
# OpenSSL configuration file.
#
HOME = .
RANDFILE = $ENV::HOME/.rnd
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = ./top
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
unique_subject = no
new_certs_dir = $dir/newcerts
certificate = $dir/cacert.pem
serial = $dir/serial
crlnumber = $dir/crlnumber
crl = $dir/crl.pem
private_key = $dir/private/cakey.pem
RANDFILE = $dir/private/.rand
x509_extensions = v3_ca
name_opt = ca_default
cert_opt = ca_default
default_days = 7650
default_crl_days = 30
default_md = sha1
preserve = no
policy = policy_anything
[ ca_top ]
dir = ./root
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
unique_subject = no
new_certs_dir = $dir/newcerts
certificate = $dir/cacert.pem
serial = $dir/serial
crlnumber = $dir/crlnumber
crl = $dir/crl.pem
private_key = $dir/private/cakey.pem
RANDFILE = $dir/private/.rand
x509_extensions = v3_ca
name_opt = ca_default
cert_opt = ca_default
default_days = 7650
default_crl_days = 30
default_md = sha1
preserve = no
policy = policy_anything
[ ca_subca ]
dir = ./subca
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
unique_subject = no
new_certs_dir = $dir/newcerts
certificate = $dir/cacert.pem
serial = $dir/serial
crlnumber = $dir/crlnumber
crl = $dir/crl.pem
private_key = $dir/private/cakey.pem
RANDFILE = $dir/private/.rand
x509_extensions = usr_cert
name_opt = ca_default
cert_opt = ca_default
default_days = 7650
default_crl_days = 30
default_md = sha1
preserve = no
policy = policy_anything
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
string_mask = nombstr
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = NO
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = A-State
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Internet Widgits Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (eg, YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = email:example@openjdk.net, RID:1.2.3.4:true
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = critical,CA:true
keyUsage = keyCertSign
[ cert_issuer ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = critical,CA:true
keyUsage = keyCertSign
nameConstraints = excluded;RID:1.2.3.4.5
[ crl_issuer ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
keyUsage = cRLSign
[ crl_ext ]
authorityKeyIdentifier = keyid:always,issuer:always
[ ee_of_subca ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, keyAgreement
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
[ alice_of_subca ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, keyAgreement
subjectAltName = RID:1.2.3.4
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
[ susan_of_subca ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, keyAgreement
subjectAltName = RID:1.2.3.4.5
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录