public class TrustAnchor extends Object
该类表示一个“最受信任的CA”,它被用作验证X.509认证路径的信任锚点。 最受信任的CA包括CA的公钥,CA的名称以及可以使用该密钥验证的路径集合上的任何限制。 这些参数可以以受信任的形式指定X509Certificate
或作为单个参数。
并发访问
所有TrustAnchor
对象必须是不可变的和线程安全的。 也就是说,多个线程可以同时在单个TrustAnchor
对象(或多个)上调用此类中定义的方法,而不会产生不良影响。 要求TrustAnchor
对象是不可变的和线程安全的,可以让它们传递到各种代码,而不用担心协调访问。 这个规定适用于这个类的所有公共领域和方法,以及任何由子类添加或覆盖的规则。
Constructor and Description |
---|
TrustAnchor(String caName, PublicKey pubKey, byte[] nameConstraints)
创建一个
TrustAnchor 的实例,其中最受信任的CA被指定为可分辨名称和公钥。
|
TrustAnchor(X500Principal caPrincipal, PublicKey pubKey, byte[] nameConstraints)
创建一个
TrustAnchor 的实例,其中最受信任的CA被指定为X500Principal和公钥。
|
TrustAnchor(X509Certificate trustedCert, byte[] nameConstraints)
创建的实例
TrustAnchor 具有指定
X509Certificate 和可选的名称的限制,其意图验证的X.509证书路径时被用作附加的约束。
|
Modifier and Type | Method and Description |
---|---|
X500Principal |
getCA()
以X500Principal返回最受信任的CA的名称。
|
String |
getCAName()
返回RFC 2253
String 格式中最受信任的CA的名称。
|
PublicKey |
getCAPublicKey()
返回最受信任的CA的公钥。
|
byte[] |
getNameConstraints()
返回名称约束参数。
|
X509Certificate |
getTrustedCert()
返回最受信任的CA证书。
|
String |
toString()
返回描述的格式化字符串
TrustAnchor 。
|
public TrustAnchor(X509Certificate trustedCert, byte[] nameConstraints)
TrustAnchor
具有指定X509Certificate
和可选的名称的限制,其意图验证的X.509证书路径时被用作附加的约束。
名称约束被指定为字节数组。 该字节数组应包含名称约束的DER编码形式,因为它们将出现在RFC 3280和X.509中定义的NameConstraints结构中。 此结构的ASN.1定义如下。
NameConstraints ::= SEQUENCE { permittedSubtrees [0] GeneralSubtrees OPTIONAL, excludedSubtrees [1] GeneralSubtrees OPTIONAL } GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree GeneralSubtree ::= SEQUENCE { base GeneralName, minimum [0] BaseDistance DEFAULT 0, maximum [1] BaseDistance OPTIONAL } BaseDistance ::= INTEGER (0..MAX) GeneralName ::= CHOICE { otherName [0] OtherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER}
请注意,提供的名称约束字节数组被克隆以防止后续修改。
trustedCert
- 信任
X509Certificate
nameConstraints
- 包含用于检查名称约束的NameConstraints扩展的ASN.1 DER编码的字节数组。
只包括扩展的值,而不是OID或临界标志。
指定null
省略参数。
IllegalArgumentException
- 如果名称约束无法解码
NullPointerException
- 如果指定的
X509Certificate
是
null
public TrustAnchor(X500Principal caPrincipal, PublicKey pubKey, byte[] nameConstraints)
TrustAnchor
的实例,其中最受信任的CA被指定为X500Principal和公钥。
名称约束是可选参数,并且在验证X.509认证路径时被用作额外的约束。
名称约束被指定为字节数组。 该字节数组包含名称约束的DER编码形式,因为它们将出现在RFC 3280和X.509中定义的NameConstraints结构中。 此结构的ASN.1表示的文档中被提供为TrustAnchor(X509Certificate trustedCert, byte[] nameConstraints)
。
请注意,此处提供的名称约束字节数组被克隆以防止后续修改。
caPrincipal
- 最受信任的CA的名称为X500Principal
pubKey
- 最受信任的CA的公钥
nameConstraints
- 一个包含用于检查名称约束的NameConstraints扩展的ASN.1 DER编码的字节数组。
只包括扩展的值,而不是OID或临界标志。
指定null
省略参数。
NullPointerException
- 如果指定的
caPrincipal
或
pubKey
参数是
null
public TrustAnchor(String caName, PublicKey pubKey, byte[] nameConstraints)
TrustAnchor
的实例,其中最受信任的CA被指定为可分辨名称和公钥。
名称约束是可选参数,并且在验证X.509认证路径时被用作额外的约束。
名称约束被指定为字节数组。 该字节数组包含名称约束的DER编码形式,因为它们将出现在RFC 3280和X.509中定义的NameConstraints结构中。 此结构的ASN.1表示的文档中被提供为TrustAnchor(X509Certificate trustedCert, byte[] nameConstraints)
。
请注意,此处提供的名称约束字节数组被克隆以防止后续修改。
caName
- 最受信任的CA的X.500可分辨名称在
RFC 2253
String
格式
pubKey
- 最受信任的CA的公钥
nameConstraints
- 包含用于检查名称约束的NameConstraints扩展的ASN.1 DER编码的字节数组。
只包括扩展的值,而不是OID或临界标志。
指定null
以省略参数。
IllegalArgumentException
- 如果指定的
caName
参数为空
(caName.length() == 0)
或格式不正确或名称约束无法解码
NullPointerException
- 如果指定的
caName
或
pubKey
参数是
null
public final X509Certificate getTrustedCert()
X509Certificate
或
null
如果委托机构没有被指定为受信任的证书
public final X500Principal getCA()
null
如果未指定信任锚为信任公钥和名称或X500Principal的对
public final String getCAName()
String
格式中最受信任的CA的名称。
null
如果未指定信任锚为信任公钥和名称或X500Principal的对
public final PublicKey getCAPublicKey()
null
如果未指定信任锚为信任公钥和名称或X500Principal的对
public final byte[] getNameConstraints()
名称约束作为字节数组返回。 该字节数组包含名称约束的DER编码形式,因为它们将出现在RFC 3280和X.509中定义的NameConstraints结构中。 此结构的ASN.1表示的文档中被提供为TrustAnchor(X509Certificate trustedCert, byte[] nameConstraints)
。
请注意,返回的字节数组被克隆以防止后续修改。
null
。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.