Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
9dd8cab5
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看板
提交
9dd8cab5
编写于
7月 25, 2013
作者:
M
mullan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8010748: Add PKIXRevocationChecker NO_FALLBACK option and improve SOFT_FAIL option
Reviewed-by: vinnie
上级
d7ce324e
变更
8
展开全部
隐藏空白更改
内联
并排
Showing
8 changed file
with
285 addition
and
202 deletion
+285
-202
src/share/classes/java/security/cert/PKIXRevocationChecker.java
...are/classes/java/security/cert/PKIXRevocationChecker.java
+66
-21
src/share/classes/sun/security/provider/certpath/OCSP.java
src/share/classes/sun/security/provider/certpath/OCSP.java
+3
-14
src/share/classes/sun/security/provider/certpath/OCSPResponse.java
.../classes/sun/security/provider/certpath/OCSPResponse.java
+15
-5
src/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java
...sun/security/provider/certpath/PKIXCertPathValidator.java
+7
-2
src/share/classes/sun/security/provider/certpath/ReverseState.java
.../classes/sun/security/provider/certpath/ReverseState.java
+12
-4
src/share/classes/sun/security/provider/certpath/RevocationChecker.java
...ses/sun/security/provider/certpath/RevocationChecker.java
+151
-120
src/share/classes/sun/security/provider/certpath/SunCertPathBuilder.java
...es/sun/security/provider/certpath/SunCertPathBuilder.java
+7
-3
test/java/security/cert/PKIXRevocationChecker/UnitTest.java
test/java/security/cert/PKIXRevocationChecker/UnitTest.java
+24
-33
未找到文件。
src/share/classes/java/security/cert/PKIXRevocationChecker.java
浏览文件 @
9dd8cab5
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012,
2013,
Oracle and/or its affiliates. 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
...
...
@@ -50,21 +50,26 @@ import java.util.Set;
* status of certificates with OCSP and CRLs. By default, OCSP is the
* preferred mechanism for checking revocation status, with CRLs as the
* fallback mechanism. However, this preference can be switched to CRLs with
* the {@link Option#PREFER_CRLS PREFER_CRLS} option.
* the {@link Option#PREFER_CRLS PREFER_CRLS} option. In addition, the fallback
* mechanism can be disabled with the {@link Option#NO_FALLBACK NO_FALLBACK}
* option.
*
* <p>A {@code PKIXRevocationChecker} is obtained by calling the
* {@link CertPathValidator#getRevocationChecker getRevocationChecker} method
* of a PKIX {@code CertPathValidator}. Additional parameters and options
* specific to revocation can be set (by calling
{@link #setOCSPResponder}
*
method for instance). The {@code PKIXRevocationChecker} is added to
*
a {@code PKIXParameters} object using the
* {@link PKIXParameters#addCertPathChecker addCertPathChecker}
* specific to revocation can be set (by calling
the
*
{@link #setOcspResponder setOcspResponder} method for instance). The
*
{@code PKIXRevocationChecker} is added to a {@code PKIXParameters} object
*
using the
{@link PKIXParameters#addCertPathChecker addCertPathChecker}
* or {@link PKIXParameters#setCertPathCheckers setCertPathCheckers} method,
* and then the {@code PKIXParameters} is passed along with the {@code CertPath}
* to be validated to the {@link CertPathValidator#validate validate} method
* of a PKIX {@code CertPathValidator}. When supplying a revocation checker in
* this manner, it will be used to check revocation irrespective of the setting
* of the {@link PKIXParameters#isRevocationEnabled RevocationEnabled} flag.
* Similarly, a {@code PKIXRevocationChecker} may be added to a
* {@code PKIXBuilderParameters} object for use with a PKIX
* {@code CertPathBuilder}.
*
* <p>Note that when a {@code PKIXRevocationChecker} is added to
* {@code PKIXParameters}, it clones the {@code PKIXRevocationChecker};
...
...
@@ -83,6 +88,13 @@ import java.util.Set;
* need not synchronize.
*
* @since 1.8
*
* @see <a href="http://www.ietf.org/rfc/rfc2560.txt"><i>RFC 2560: X.509
* Internet Public Key Infrastructure Online Certificate Status Protocol -
* OCSP</i></a>, <br><a
* href="http://www.ietf.org/rfc/rfc5280.txt"><i>RFC 5280: Internet X.509
* Public Key Infrastructure Certificate and Certificate Revocation List (CRL)
* Profile</i></a>
*/
public
abstract
class
PKIXRevocationChecker
extends
PKIXCertPathChecker
{
private
URI
ocspResponder
;
...
...
@@ -101,7 +113,7 @@ public abstract class PKIXRevocationChecker extends PKIXCertPathChecker {
*
* @param uri the responder URI
*/
public
void
setO
CSP
Responder
(
URI
uri
)
{
public
void
setO
csp
Responder
(
URI
uri
)
{
this
.
ocspResponder
=
uri
;
}
...
...
@@ -114,7 +126,7 @@ public abstract class PKIXRevocationChecker extends PKIXCertPathChecker {
*
* @return the responder URI, or {@code null} if not set
*/
public
URI
getO
CSP
Responder
()
{
public
URI
getO
csp
Responder
()
{
return
ocspResponder
;
}
...
...
@@ -126,7 +138,7 @@ public abstract class PKIXRevocationChecker extends PKIXCertPathChecker {
*
* @param cert the responder's certificate
*/
public
void
setO
CSP
ResponderCert
(
X509Certificate
cert
)
{
public
void
setO
csp
ResponderCert
(
X509Certificate
cert
)
{
this
.
ocspResponderCert
=
cert
;
}
...
...
@@ -140,7 +152,7 @@ public abstract class PKIXRevocationChecker extends PKIXCertPathChecker {
*
* @return the responder's certificate, or {@code null} if not set
*/
public
X509Certificate
getO
CSP
ResponderCert
()
{
public
X509Certificate
getO
csp
ResponderCert
()
{
return
ocspResponderCert
;
}
...
...
@@ -151,7 +163,7 @@ public abstract class PKIXRevocationChecker extends PKIXCertPathChecker {
* @param extensions a list of extensions. The list is copied to protect
* against subsequent modification.
*/
public
void
setO
CSP
Extensions
(
List
<
Extension
>
extensions
)
public
void
setO
csp
Extensions
(
List
<
Extension
>
extensions
)
{
this
.
ocspExtensions
=
(
extensions
==
null
)
?
Collections
.<
Extension
>
emptyList
()
...
...
@@ -161,10 +173,10 @@ public abstract class PKIXRevocationChecker extends PKIXCertPathChecker {
/**
* Gets the optional OCSP request extensions.
*
* @return an unmodifiable list of extensions.
Returns an empty list
if no
* @return an unmodifiable list of extensions.
The list is empty
if no
* extensions have been specified.
*/
public
List
<
Extension
>
getO
CSP
Extensions
()
{
public
List
<
Extension
>
getO
csp
Extensions
()
{
return
Collections
.
unmodifiableList
(
ocspExtensions
);
}
...
...
@@ -177,7 +189,7 @@ public abstract class PKIXRevocationChecker extends PKIXCertPathChecker {
* DER-encoded OCSP response for that certificate. A deep copy of
* the map is performed to protect against subsequent modification.
*/
public
void
setO
CSP
Responses
(
Map
<
X509Certificate
,
byte
[]>
responses
)
public
void
setO
csp
Responses
(
Map
<
X509Certificate
,
byte
[]>
responses
)
{
if
(
responses
==
null
)
{
this
.
ocspResponses
=
Collections
.<
X509Certificate
,
byte
[]>
emptyMap
();
...
...
@@ -200,7 +212,7 @@ public abstract class PKIXRevocationChecker extends PKIXCertPathChecker {
* the map is returned to protect against subsequent modification.
* Returns an empty map if no responses have been specified.
*/
public
Map
<
X509Certificate
,
byte
[]>
getO
CSP
Responses
()
{
public
Map
<
X509Certificate
,
byte
[]>
getO
csp
Responses
()
{
Map
<
X509Certificate
,
byte
[]>
copy
=
new
HashMap
<>(
ocspResponses
.
size
());
for
(
Map
.
Entry
<
X509Certificate
,
byte
[]>
e
:
ocspResponses
.
entrySet
())
{
copy
.
put
(
e
.
getKey
(),
e
.
getValue
().
clone
());
...
...
@@ -223,15 +235,31 @@ public abstract class PKIXRevocationChecker extends PKIXCertPathChecker {
/**
* Gets the revocation options.
*
* @return an unmodifiable set of revocation options
, or an empty set
if
* no
ne are specified
* @return an unmodifiable set of revocation options
. The set is empty
if
* no
options have been specified.
*/
public
Set
<
Option
>
getOptions
()
{
return
Collections
.
unmodifiableSet
(
options
);
}
/**
* Returns a list containing the exceptions that are ignored by the
* revocation checker when the {@link Option#SOFT_FAIL SOFT_FAIL} option
* is set. The list is cleared each time {@link #init init} is called.
* The list is ordered in ascending order according to the certificate
* index returned by {@link CertPathValidatorException#getIndex getIndex}
* method of each entry.
* <p>
* An implementation of {@code PKIXRevocationChecker} is responsible for
* adding the ignored exceptions to the list.
*
* @return an unmodifiable list containing the ignored exceptions. The list
* is empty if no exceptions have been ignored.
*/
public
abstract
List
<
CertPathValidatorException
>
getSoftFailExceptions
();
@Override
public
Object
clone
()
{
public
PKIXRevocationChecker
clone
()
{
PKIXRevocationChecker
copy
=
(
PKIXRevocationChecker
)
super
.
clone
();
copy
.
ocspExtensions
=
new
ArrayList
<>(
ocspExtensions
);
copy
.
ocspResponses
=
new
HashMap
<>(
ocspResponses
);
...
...
@@ -262,9 +290,26 @@ public abstract class PKIXRevocationChecker extends PKIXCertPathChecker {
*/
PREFER_CRLS
,
/**
* Ignore network failures. The default behavior is to consider it a
* failure if the revocation status of a certificate cannot be obtained
* due to a network error. This option applies to both OCSP and CRLs.
* Disable the fallback mechanism.
*/
NO_FALLBACK
,
/**
* Allow revocation check to succeed if the revocation status cannot be
* determined for one of the following reasons:
* <p><ul>
* <li>The CRL or OCSP response cannot be obtained because of a
* network error.
* <li>The OCSP responder returns one of the following errors
* specified in section 2.3 of RFC 2560: internalError, tryLater,
* or unauthorized.
* </ul><br>
* Note that these conditions apply to both OCSP and CRLs, and unless
* the {@code NO_FALLBACK} option is set, the revocation check is
* allowed to succeed only if both mechanisms fail under one of the
* conditions as stated above.
* Exceptions that cause the network errors are ignored but can be
* later retrieved by calling the
* {@link #getSoftFailExceptions getSoftFailExceptions} method.
*/
SOFT_FAIL
}
...
...
src/share/classes/sun/security/provider/certpath/OCSP.java
浏览文件 @
9dd8cab5
...
...
@@ -255,7 +255,9 @@ public final class OCSP {
}
response
=
Arrays
.
copyOf
(
response
,
total
);
}
catch
(
IOException
ioe
)
{
throw
new
NetworkFailureException
(
ioe
);
throw
new
CertPathValidatorException
(
"Unable to determine revocation status due to network error"
,
ioe
,
null
,
-
1
,
BasicReason
.
UNDETERMINED_REVOCATION_STATUS
);
}
finally
{
if
(
in
!=
null
)
{
try
{
...
...
@@ -355,17 +357,4 @@ public final class OCSP {
*/
Map
<
String
,
Extension
>
getSingleExtensions
();
}
static
class
NetworkFailureException
extends
CertPathValidatorException
{
private
static
final
long
serialVersionUID
=
0
l
;
NetworkFailureException
(
Throwable
t
)
{
super
(
t
);
}
@Override
public
CertPathValidatorException
.
Reason
getReason
()
{
return
BasicReason
.
UNDETERMINED_REVOCATION_STATUS
;
}
}
}
src/share/classes/sun/security/provider/certpath/OCSPResponse.java
浏览文件 @
9dd8cab5
...
...
@@ -30,6 +30,7 @@ import java.security.*;
import
java.security.cert.CertificateException
;
import
java.security.cert.CertificateParsingException
;
import
java.security.cert.CertPathValidatorException
;
import
java.security.cert.CertPathValidatorException.BasicReason
;
import
java.security.cert.CRLReason
;
import
java.security.cert.TrustAnchor
;
import
java.security.cert.X509Certificate
;
...
...
@@ -121,8 +122,8 @@ public final class OCSPResponse {
public
enum
ResponseStatus
{
SUCCESSFUL
,
// Response has valid confirmations
MALFORMED_REQUEST
,
// Illegal
confirmation
request
INTERNAL_ERROR
,
// Internal error in
issu
er
MALFORMED_REQUEST
,
// Illegal request
INTERNAL_ERROR
,
// Internal error in
respond
er
TRY_LATER
,
// Try again later
UNUSED
,
// is not used
SIG_REQUIRED
,
// Must sign the request
...
...
@@ -381,9 +382,18 @@ public final class OCSPResponse {
Date
date
,
byte
[]
nonce
)
throws
CertPathValidatorException
{
if
(
responseStatus
!=
ResponseStatus
.
SUCCESSFUL
)
{
throw
new
CertPathValidatorException
(
"OCSP response error: "
+
responseStatus
);
switch
(
responseStatus
)
{
case
SUCCESSFUL:
break
;
case
UNAUTHORIZED:
case
TRY_LATER:
case
INTERNAL_ERROR:
throw
new
CertPathValidatorException
(
"OCSP response error: "
+
responseStatus
,
null
,
null
,
-
1
,
BasicReason
.
UNDETERMINED_REVOCATION_STATUS
);
default
:
throw
new
CertPathValidatorException
(
"OCSP response error: "
+
responseStatus
);
}
// Check that the response includes a response for all of the
...
...
src/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java
浏览文件 @
9dd8cab5
/*
* Copyright (c) 2000, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
3
, Oracle and/or its affiliates. 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
...
...
@@ -193,10 +193,15 @@ public final class PKIXCertPathValidator extends CertPathValidatorSpi {
List
<
PKIXCertPathChecker
>
checkers
=
params
.
certPathCheckers
();
for
(
PKIXCertPathChecker
checker
:
checkers
)
{
if
(
checker
instanceof
PKIXRevocationChecker
)
{
if
(
revCheckerAdded
)
{
throw
new
CertPathValidatorException
(
"Only one PKIXRevocationChecker can be specified"
);
}
revCheckerAdded
=
true
;
// if it's our own, initialize it
if
(
checker
instanceof
RevocationChecker
)
if
(
checker
instanceof
RevocationChecker
)
{
((
RevocationChecker
)
checker
).
init
(
anchor
,
params
);
}
}
}
// only add a RevocationChecker if revocation is enabled and
...
...
src/share/classes/sun/security/provider/certpath/ReverseState.java
浏览文件 @
9dd8cab5
/*
* Copyright (c) 2000, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
3
, Oracle and/or its affiliates. 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
...
...
@@ -30,6 +30,7 @@ import java.security.PublicKey;
import
java.security.cert.CertificateException
;
import
java.security.cert.CertPathValidatorException
;
import
java.security.cert.PKIXCertPathChecker
;
import
java.security.cert.PKIXRevocationChecker
;
import
java.security.cert.TrustAnchor
;
import
java.security.cert.X509Certificate
;
import
java.util.ArrayList
;
...
...
@@ -235,9 +236,16 @@ class ReverseState implements State {
for
(
PKIXCertPathChecker
checker
:
userCheckers
)
{
if
(
checker
instanceof
AlgorithmChecker
)
{
((
AlgorithmChecker
)
checker
).
trySetTrustAnchor
(
anchor
);
}
else
if
(
checker
instanceof
RevocationChecker
)
{
((
RevocationChecker
)
checker
).
init
(
anchor
,
buildParams
);
((
RevocationChecker
)
checker
).
init
(
false
);
}
else
if
(
checker
instanceof
PKIXRevocationChecker
)
{
if
(
revCheckerAdded
)
{
throw
new
CertPathValidatorException
(
"Only one PKIXRevocationChecker can be specified"
);
}
// if it's our own, initialize it
if
(
checker
instanceof
RevocationChecker
)
{
((
RevocationChecker
)
checker
).
init
(
anchor
,
buildParams
);
}
((
PKIXRevocationChecker
)
checker
).
init
(
false
);
revCheckerAdded
=
true
;
}
}
...
...
src/share/classes/sun/security/provider/certpath/RevocationChecker.java
浏览文件 @
9dd8cab5
此差异已折叠。
点击以展开。
src/share/classes/sun/security/provider/certpath/SunCertPathBuilder.java
浏览文件 @
9dd8cab5
/*
* Copyright (c) 2000, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 201
3
, Oracle and/or its affiliates. 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
...
...
@@ -422,7 +422,6 @@ public final class SunCertPathBuilder extends CertPathBuilderSpi {
buildParams
.
anyPolicyInhibited
(),
buildParams
.
policyQualifiersRejected
(),
rootNode
);
checkers
.
add
(
policyChecker
);
// add the algorithm checker
...
...
@@ -455,11 +454,16 @@ public final class SunCertPathBuilder extends CertPathBuilderSpi {
List
<
PKIXCertPathChecker
>
ckrs
=
buildParams
.
certPathCheckers
();
for
(
PKIXCertPathChecker
ckr
:
ckrs
)
{
if
(
ckr
instanceof
PKIXRevocationChecker
)
{
if
(
revCheckerAdded
)
{
throw
new
CertPathValidatorException
(
"Only one PKIXRevocationChecker can be specified"
);
}
revCheckerAdded
=
true
;
// if it's our own, initialize it
if
(
ckr
instanceof
RevocationChecker
)
if
(
ckr
instanceof
RevocationChecker
)
{
((
RevocationChecker
)
ckr
).
init
(
builder
.
trustAnchor
,
buildParams
);
}
}
}
// only add a RevocationChecker if revocation is enabled and
...
...
test/java/security/cert/PKIXRevocationChecker/UnitTest.java
浏览文件 @
9dd8cab5
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012,
2013,
Oracle and/or its affiliates. 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
...
...
@@ -23,7 +23,7 @@
/**
* @test
* @bug 6854712 7171570
* @bug 6854712 7171570
8010748
* @summary Basic unit test for PKIXRevocationChecker
*/
...
...
@@ -32,19 +32,9 @@ import java.io.InputStream;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.net.URI
;
import
java.security.cert.CertificateFactory
;
import
java.security.cert.CertPathBuilder
;
import
java.security.cert.CertPathChecker
;
import
java.security.cert.CertPathValidator
;
import
java.security.cert.Extension
;
import
java.security.cert.PKIXRevocationChecker
;
import
java.security.cert.*
;
import
java.security.cert.PKIXRevocationChecker.Option
;
import
java.security.cert.X509Certificate
;
import
java.util.ArrayList
;
import
java.util.EnumSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.*
;
public
class
UnitTest
{
...
...
@@ -56,22 +46,23 @@ public class UnitTest {
System
.
out
.
println
(
"Testing that get methods return null or "
+
"empty lists/sets/maps"
);
requireNull
(
prc
.
getO
CSPResponder
(),
"getOCSP
Responder()"
);
requireNull
(
prc
.
getO
CSPResponderCert
(),
"getOCSP
ResponderCert()"
);
requireEmpty
(
prc
.
getO
CSPExtensions
(),
"getOCSP
Extensions()"
);
requireEmpty
(
prc
.
getO
CSPResponses
(),
"getOCSP
Responses()"
);
requireNull
(
prc
.
getO
cspResponder
(),
"getOcsp
Responder()"
);
requireNull
(
prc
.
getO
cspResponderCert
(),
"getOcsp
ResponderCert()"
);
requireEmpty
(
prc
.
getO
cspExtensions
(),
"getOcsp
Extensions()"
);
requireEmpty
(
prc
.
getO
cspResponses
(),
"getOcsp
Responses()"
);
requireEmpty
(
prc
.
getOptions
(),
"getOptions()"
);
requireEmpty
(
prc
.
getSoftFailExceptions
(),
"getSoftFailExceptions()"
);
System
.
out
.
println
(
"Testing that get methods return same parameters "
+
"that are passed to set methods"
);
URI
uri
=
new
URI
(
"http://localhost"
);
prc
.
setO
CSP
Responder
(
uri
);
requireEquals
(
uri
,
prc
.
getO
CSPResponder
(),
"getOCSP
Responder()"
);
prc
.
setO
csp
Responder
(
uri
);
requireEquals
(
uri
,
prc
.
getO
cspResponder
(),
"getOcsp
Responder()"
);
X509Certificate
cert
=
getCert
();
prc
.
setO
CSP
ResponderCert
(
cert
);
requireEquals
(
cert
,
prc
.
getO
CSP
ResponderCert
(),
"getO
CSP
ResponderCert()"
);
prc
.
setO
csp
ResponderCert
(
cert
);
requireEquals
(
cert
,
prc
.
getO
csp
ResponderCert
(),
"getO
csp
ResponderCert()"
);
List
<
Extension
>
exts
=
new
ArrayList
<>();
for
(
String
oid
:
cert
.
getNonCriticalExtensionOIDs
())
{
...
...
@@ -79,8 +70,8 @@ public class UnitTest {
exts
.
add
(
new
ExtensionImpl
(
oid
,
cert
.
getExtensionValue
(
oid
),
false
));
}
prc
.
setO
CSP
Extensions
(
exts
);
requireEquals
(
exts
,
prc
.
getO
CSPExtensions
(),
"getOCSP
Extensions()"
);
prc
.
setO
csp
Extensions
(
exts
);
requireEquals
(
exts
,
prc
.
getO
cspExtensions
(),
"getOcsp
Extensions()"
);
Set
<
Option
>
options
=
EnumSet
.
of
(
Option
.
ONLY_END_ENTITY
);
prc
.
setOptions
(
options
);
...
...
@@ -88,14 +79,14 @@ public class UnitTest {
System
.
out
.
println
(
"Testing that parameters are re-initialized to "
+
"default values if null is passed to set methods"
);
prc
.
setO
CSP
Responder
(
null
);
requireNull
(
prc
.
getO
CSPResponder
(),
"getOCSP
Responder()"
);
prc
.
setO
CSP
ResponderCert
(
null
);
requireNull
(
prc
.
getO
CSPResponderCert
(),
"getOCSP
ResponderCert()"
);
prc
.
setO
CSP
Extensions
(
null
);
requireEmpty
(
prc
.
getO
CSPExtensions
(),
"getOCSP
Extensions()"
);
prc
.
setO
CSP
Responses
(
null
);
requireEmpty
(
prc
.
getO
CSPResponses
(),
"getOCSP
Responses()"
);
prc
.
setO
csp
Responder
(
null
);
requireNull
(
prc
.
getO
cspResponder
(),
"getOcsp
Responder()"
);
prc
.
setO
csp
ResponderCert
(
null
);
requireNull
(
prc
.
getO
cspResponderCert
(),
"getOcsp
ResponderCert()"
);
prc
.
setO
csp
Extensions
(
null
);
requireEmpty
(
prc
.
getO
cspExtensions
(),
"getOcsp
Extensions()"
);
prc
.
setO
csp
Responses
(
null
);
requireEmpty
(
prc
.
getO
cspResponses
(),
"getOcsp
Responses()"
);
prc
.
setOptions
(
null
);
requireEmpty
(
prc
.
getOptions
(),
"getOptions()"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录