public class X509CertSelector extends Object implements CertSelector
X509Certificatesを選択するCertSelectorです。このクラスは、PKIX準拠の証明書パスを構築するためにCertStoreから証明書を選択するときに、特に役立ちます。
最初に構築されたX509CertSelectorには有効な基準が含まれていないため、各getメソッドはデフォルト値(null。getBasicConstraintsメソッドの場合は-1)を返します。したがって、matchメソッドはX509Certificateに対してtrueを返します。通常、X509CertSelectorは、setIssuerやsetKeyUsageを呼び出していくつかの基準を有効にした後、CertStore.getCertificatesや類似のメソッドに渡されます。
matchメソッドが通常的に単一のX509Certificateと一意に一致するように、いくつかの基準を(たとえばsetIssuerやsetSerialNumberを呼び出すことで)有効にできます。通常、2つの発行CAで同じ識別名を持つことができるため、それぞれは同じシリアル番号で証明書を発行します。ほかの一意の組み合わせには、発行者、サブジェクト、subjectKeyIdentifierそしてsubjectPublicKey基準が含まれます。
これから説明するX.509証明書機能拡張の定義については、RFC 3280「Internet X.509 Public Key Infrastructure Certificate and CRL Profile」を参照してください。
並行アクセス
特に断らないかぎり、このクラスで定義されているメソッドはスレッドセーフではありません。単一のオブジェクトに並行アクセスする必要のある複数スレッドは、スレッド間で同期をとり、必要に応じてロックする必要があります。複数のスレッドがそれぞれ個別のオブジェクトを処理する場合、それらのスレッドは同期する必要はありません。
CertSelector, X509Certificate| コンストラクタと説明 |
|---|
X509CertSelector()
X509CertSelectorを作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void |
addPathToName(int type, byte[] name)
pathToNames基準値に名前を追加します。
|
void |
addPathToName(int type, String name)
pathToNames基準値に名前を追加します。
|
void |
addSubjectAlternativeName(int type, byte[] name)
subjectAlternativeNames基準値に名前を追加します。
|
void |
addSubjectAlternativeName(int type, String name)
subjectAlternativeNames基準値に名前を追加します。
|
Object |
clone()
このオブジェクトの複製を返します。
|
byte[] |
getAuthorityKeyIdentifier()
authorityKeyIdentifier基準値を返します。
|
int |
getBasicConstraints()
基本制約に対する制約を返します。
|
X509Certificate |
getCertificate()
certificateEquals基準値を返します。
|
Date |
getCertificateValid()
certificateValid基準値を返します。
|
Set<String> |
getExtendedKeyUsage()
extendedKeyUsage基準値を返します。
|
X500Principal |
getIssuer()
発行者の基準値を
X500Principalとして返します。 |
byte[] |
getIssuerAsBytes()
発行者の基準値をバイト配列として返します。
|
String |
getIssuerAsString()
バグ: 代わりにgetIssuer()またはgetIssuerAsBytes()を使用してください。
|
boolean[] |
getKeyUsage()
keyUsage基準値を返します。
|
boolean |
getMatchAllSubjectAltNames()
setSubjectAlternativeNamesメソッドやaddSubjectAlternativeNameメソッドで指定されたsubjectAlternativeNamesがすべて、または少なくとも1つ、X509Certificateに含まれていなければならないかどうかを示します。 |
byte[] |
getNameConstraints()
名前制約の基準値を返します。
|
Collection<List<?>> |
getPathToNames()
pathToNames基準値の複製を返します。
|
Set<String> |
getPolicy()
ポリシー基準値を返します。
|
Date |
getPrivateKeyValid()
privateKeyValid基準値を返します。
|
BigInteger |
getSerialNumber()
serialNumber基準値を返します。
|
X500Principal |
getSubject()
サブジェクトの基準値を
X500Principalとして返します。 |
Collection<List<?>> |
getSubjectAlternativeNames()
subjectAlternativeNames基準値のコピーを返します。
|
byte[] |
getSubjectAsBytes()
サブジェクトの基準値をバイト配列として返します。
|
String |
getSubjectAsString()
バグ: 代わりにgetSubject()またはgetSubjectAsBytes()を使用してください。
|
byte[] |
getSubjectKeyIdentifier()
subjectKeyIdentifier基準値を返します。
|
PublicKey |
getSubjectPublicKey()
subjectPublicKey基準値を返します。
|
String |
getSubjectPublicKeyAlgID()
subjectPublicKeyAlgID基準値を返します。
|
boolean |
match(Certificate cert)
Certificateが選択されるかどうかを判断します。 |
void |
setAuthorityKeyIdentifier(byte[] authorityKeyID)
authorityKeyIdentifier基準値を設定します。
|
void |
setBasicConstraints(int minMaxPathLen)
基本制約に対する制約を設定します。
|
void |
setCertificate(X509Certificate cert)
certificateEquals基準値を設定します。
|
void |
setCertificateValid(Date certValid)
certificateValid基準値を設定します。
|
void |
setExtendedKeyUsage(Set<String> keyPurposeSet)
extendedKeyUsage基準値を設定します。
|
void |
setIssuer(byte[] issuerDN)
発行者の基準値を設定します。
|
void |
setIssuer(String issuerDN)
バグ: 代わりにsetIssuer(X500Principal)またはsetIssuer(byte[])を使用してください。
|
void |
setIssuer(X500Principal issuer)
発行者の基準値を設定します。
|
void |
setKeyUsage(boolean[] keyUsage)
keyUsage基準値を設定します。
|
void |
setMatchAllSubjectAltNames(boolean matchAllNames)
setSubjectAlternativeNamesメソッドやaddSubjectAlternativeNameメソッドで指定されたすべてのsubjectAlternativeNamesの照合を使用可能または使用不可にします。 |
void |
setNameConstraints(byte[] bytes)
名前制約の基準値を設定します。
|
void |
setPathToNames(Collection<List<?>> names)
pathToNames基準値を設定します。
|
void |
setPolicy(Set<String> certPolicySet)
ポリシー制約を設定します。
|
void |
setPrivateKeyValid(Date privateKeyValid)
privateKeyValid基準値を設定します。
|
void |
setSerialNumber(BigInteger serial)
serialNumber基準値を設定します。
|
void |
setSubject(byte[] subjectDN)
サブジェクトの基準値を設定します。
|
void |
setSubject(String subjectDN)
バグ: 代わりにsetSubject(X500Principal)またはsetSubject(byte[])を使用してください。
|
void |
setSubject(X500Principal subject)
サブジェクトの基準値を設定します。
|
void |
setSubjectAlternativeNames(Collection<List<?>> names)
subjectAlternativeNames基準値を設定します。
|
void |
setSubjectKeyIdentifier(byte[] subjectKeyID)
subjectKeyIdentifier基準値を設定します。
|
void |
setSubjectPublicKey(byte[] key)
subjectPublicKey基準値を設定します。
|
void |
setSubjectPublicKey(PublicKey key)
subjectPublicKey基準値を設定します。
|
void |
setSubjectPublicKeyAlgID(String oid)
subjectPublicKeyAlgID基準値を設定します。
|
String |
toString()
CertSelectorのプリント可能表現を返します。 |
public X509CertSelector()
X509CertSelectorを作成します。最初は条件が設定されていないため、どのX509Certificateでも一致します。public void setCertificate(X509Certificate cert)
X509Certificateは、matchメソッドに渡されたX509Certificateと同じでないといけません。nullの場合、このチェックは行われません。
このメソッドは、単一の証明書と一致させる必要があるときに特に役立ちます。このcertificateEquals基準に加えてほかの基準を指定することも可能ですが、通常の場合そうすることは必要ないか、または実用的ではありません。
cert - 一致させるX509Certificate。またはnullgetCertificate()public void setSerialNumber(BigInteger serial)
X509Certificateの証明書シリアル番号と一致する必要があります。nullの場合、証明書シリアル番号は問われません。serial - 一致させる証明書シリアル番号。またはnullgetSerialNumber()public void setIssuer(X500Principal issuer)
X509Certificateの発行者識別名と一致する必要があります。nullの場合、発行者識別名は問われません。issuer - X500Principalとしての識別名またはnullpublic void setIssuer(String issuerDN) throws IOException
発行者の基準値を設定します。指定した識別名は、X509Certificateの発行者識別名と一致する必要があります。nullの場合、発行者識別名は問われません。
issuerDNがnullでない場合は、RFC 2253形式で識別名が含まれなければいけません。
issuerDN - RFC 2253形式の識別名。またはnullIOException - 構文解析エラーが発生した場合(DNの不正な形式)public void setIssuer(byte[] issuerDN)
throws IOException
X509Certificateの発行者識別名と一致する必要があります。nullの場合、発行者の基準値は無効になり、任意の発行者識別名と一致します。
issuerDNがnullではない場合、X.501で定義されているDER符号化された単一識別名が含まれる必要があります。この構造体のASN.1表記は次のようになります。
Name ::= CHOICE {
RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::=
SET SIZE (1 .. MAX) OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY DEFINED BY AttributeType
....
DirectoryString ::= CHOICE {
teletexString TeletexString (SIZE (1..MAX)),
printableString PrintableString (SIZE (1..MAX)),
universalString UniversalString (SIZE (1..MAX)),
utf8String UTF8String (SIZE (1.. MAX)),
bmpString BMPString (SIZE (1..MAX)) }
以後の変更から保護するために、ここで指定されるバイト配列は複製されています。
issuerDN - ASN.1 DER符号化形式による識別名を含むバイト配列。またはnullIOException - 符号化エラーが発生した場合(DNの不正な形式)public void setSubject(X500Principal subject)
X509Certificateのサブジェクト識別名と一致する必要があります。nullの場合、サブジェクト識別名は問われません。subject - X500Principalとしての識別名またはnullpublic void setSubject(String subjectDN) throws IOException
サブジェクトの基準値を設定します。指定した識別名は、X509Certificateのサブジェクト識別名と一致する必要があります。nullの場合、サブジェクト識別名は問われません。
subjectDNがnullでない場合は、RFC 2253形式で識別名が含まれなければいけません。
subjectDN - RFC 2253形式の識別名。またはnullIOException - 構文解析エラーが発生した場合(DNの不正な形式)public void setSubject(byte[] subjectDN)
throws IOException
X509Certificateのサブジェクト識別名と一致する必要があります。nullの場合、サブジェクト識別名は問われません。
subjectDNがnullではない場合、X.501で定義されているDER符号化された単一識別名が含まれる必要があります。この構造体のASN.1表記については、setIssuer(byte [] issuerDN)を参照してください。
subjectDN - ASN.1 DER形式による識別名を含むバイト配列。またはnullIOException - 符号化エラーが発生した場合(DNの不正な形式)public void setSubjectKeyIdentifier(byte[] subjectKeyID)
X509Certificateには、その内容が指定した基準値と一致するようなSubjectKeyIdentifier機能拡張が含まれている必要があります。基準値がnullの場合、subjectKeyIdentifierチェックは行われません。
subjectKeyIDがnullではない場合、SubjectKeyIdentifier機能拡張の値(オブジェクト識別子、クリティカルの程度の設定、カプセル化されたOCTET STRINGは含まれない)の内容に対応するDER符号化された値が1つ含まれる必要があります。この構造体のASN.1表記は次のとおりです。
SubjectKeyIdentifier ::= KeyIdentifier
KeyIdentifier ::= OCTET STRING
サブジェクトの鍵識別子の形式は標準で定義されていないため、サブジェクトの鍵識別子はX509CertSelectorで構文解析されません。代わりに、バイトごとに比較することで、値が比較されます。
以後の変更から保護するために、ここで提供されるバイト配列は複製されています。
subjectKeyID - サブジェクトの鍵識別子。またはnullgetSubjectKeyIdentifier()public void setAuthorityKeyIdentifier(byte[] authorityKeyID)
X509Certificateには、その内容が指定した基準値と一致するようなAuthorityKeyIdentifier機能拡張が含まれている必要があります。基準値がnullの場合、authorityKeyIdentifierチェックは行われません。
authorityKeyIDがnullではない場合、AuthorityKeyIdentifier機能拡張の値(オブジェクト識別子、クリティカルの程度の設定、カプセル化されたOCTET STRINGは含まれない)の内容に対応するDER符号化された値が1つ含まれる必要があります。この構造体のASN.1表記は次のとおりです。
AuthorityKeyIdentifier ::= SEQUENCE {
keyIdentifier [0] KeyIdentifier OPTIONAL,
authorityCertIssuer [1] GeneralNames OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
KeyIdentifier ::= OCTET STRING
権限の鍵識別子はX509CertSelectorで構文解析されません。代わりに、バイトごとに比較することで、値が比較されます。
AuthorityKeyIdentifierのkeyIdentifierフィールドが生成されると、通常、その値は発行者の証明書にあるSubjectKeyIdentifier機能拡張から取得されます。しかし、発行者の証明書でのX509Certificate.getExtensionValue(<SubjectKeyIdentifier Object Identifier>)の結果が直接setAuthorityKeyIdentifierの入力に使用されるとは限りません。これは、SubjectKeyIdentifierに含まれるものがKeyIdentifierのOCTET STRINGだけであり、KeyIdentifier、GeneralNames、CertificateSerialNumberのSEQUENCEは含まれないためです。発行者の証明書でのSubjectKeyIdentifier機能拡張の値を使用するには、埋め込まれたKeyIdentifier OCTET STRINGの値を抽出してから、DERでこのOCTET STRINGをSEQUENCE内に符号化します。SubjectKeyIdentifierの詳細は、setSubjectKeyIdentifier(byte[] subjectKeyID)を参照してください。
また、以後の変更から保護するために、ここで提供されるバイト配列は複製されています。
authorityKeyID - 権限の鍵識別子。またはnullgetAuthorityKeyIdentifier()public void setCertificateValid(Date certValid)
X509Certificateの証明書有効期間内でなければいけません。nullの場合、certificateValidのチェックは行われません。
以後の変更から保護するために、ここで提供されるDateは複製されています。
certValid - チェック対象のDate。またはnullgetCertificateValid()public void setPrivateKeyValid(Date privateKeyValid)
X509Certificateの非公開鍵有効期間内でなければいけません。nullの場合、privateKeyValidのチェックは行われません。
以後の変更から保護するために、ここで提供されるDateは複製されています。
privateKeyValid - チェック対象のDate。またはnullgetPrivateKeyValid()public void setSubjectPublicKeyAlgID(String oid) throws IOException
X509Certificateには、指定したアルゴリズムによるサブジェクトの公開鍵が含まれなければいけません。nullの場合、subjectPublicKeyAlgIDのチェックは行われません。oid - チェック対象のアルゴリズムのオブジェクト識別子(OID)、またはnull。OIDはピリオドで区切られた負でない整数の組で表されるIOException - 最初のコンポーネントが0、1、2のいずれでもなく、2番目のコンポーネントが39よりも大きいというように、OIDが無効の場合getSubjectPublicKeyAlgID()public void setSubjectPublicKey(PublicKey key)
X509Certificateには、指定したサブジェクトの公開鍵が含まれなければいけません。nullの場合、subjectPublicKeyのチェックは行われません。key - チェック対象のサブジェクトの公開鍵。またはnullgetSubjectPublicKey()public void setSubjectPublicKey(byte[] key)
throws IOException
X509Certificateには、指定したサブジェクトの公開鍵が含まれなければいけません。nullの場合、subjectPublicKeyのチェックは行われません。
このメソッドでは公開鍵をバイト配列として指定できるため、不明な鍵タイプに対して使うことができます。
keyがnullではない場合、X.509で定義されているDER符号化されたSubjectPublicKeyInfo構造体が含まれている必要があります。この構造体のASN.1表記は次のようになります。
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
-- contains a value of the type
-- registered for use with the
-- algorithm object identifier value
以後の変更から保護するために、ここで提供されるバイト配列は複製されています。
key - ASN.1 DER形式によるサブジェクトの公開鍵を含むバイト配列。またはnullIOException - 符号化エラーが発生した場合(サブジェクトの公開鍵の不正な形式)getSubjectPublicKey()public void setKeyUsage(boolean[] keyUsage)
X509Certificateで有効になっている必要があります。nullの場合、keyUsageの確認は行われません。keyUsage機能拡張のないX509Certificateでは、すべてのkeyUsageの値が暗黙的に有効です。
以後の変更から保護するために、ここで提供されるboolean型配列は複製されています。
keyUsage - X509Certificate.getKeyUsage()によって返されるboolean型配列と同じ形式のboolean型配列。またはnullgetKeyUsage()public void setExtendedKeyUsage(Set<String> keyPurposeSet) throws IOException
X509Certificateの拡張鍵使用法の拡張機能で有効になっている必要があります。keyPurposeSetが空かnullの場合、extendedKeyUsageのチェックは行われません。extendedKeyUsage拡張機能のないX509Certificateでは、すべての鍵目的が暗黙的に有効です。
以後の変更から保護するために、Setは複製されています。
keyPurposeSet - 文字列形式の鍵目的OIDのSet、またはnull。各OIDはピリオドで区切られた負でない整数の組で表されるIOException - 最初のコンポーネントが0、1、2のいずれでもなく、2番目のコンポーネントが39よりも大きいというように、OIDが無効の場合getExtendedKeyUsage()public void setMatchAllSubjectAltNames(boolean matchAllNames)
setSubjectAlternativeNamesメソッドやaddSubjectAlternativeNameメソッドで指定されたすべてのsubjectAlternativeNamesの照合を使用可能または使用不可にします。使用可能な場合、指定したサブジェクトの代替名がすべてX509Certificateに含まれていなければいけません。使用不可の場合、指定したサブジェクトの代替名が少なくとも1つX509Certificateに含まれていなければいけません。
デフォルトでmatchAllNamesフラグはtrueです。
matchAllNames - trueの場合はフラグを使用可能にし、falseの場合は使用不可にするgetMatchAllSubjectAltNames()public void setSubjectAlternativeNames(Collection<List<?>> names) throws IOException
X509Certificateには、subjectAlternativeNamesフラグの値に応じて、指定したsubjectAlternativeNamesのすべて、または少なくとも1つが含まれている必要があります(setMatchAllSubjectAltNamesを参照)。
このメソッドを使用すると、1回のメソッド呼出しで、呼出し側がsubjectAlternativeNames基準値に対するサブジェクトの代替名の完全なセットを指定できます。指定した値でsubjectAlternativeNames基準値の前の値が置き換えられます。
nullでないnamesパラメータは、サブジェクトの代替名基準値に含まれている名前ごとに1エントリとなるCollectionになります。各エントリはListで、その最初のエントリはInteger (名前タイプ、0-8)、2番目のエントリはStringかバイト配列(それぞれが文字列形式またはASN.1 DER符号化形式の名前)になります。同じタイプに複数の名前が存在することもあります。この引数の値としてnullが指定された場合、subjectAlternativeNamesのチェックは行われません。
Collection内の各サブジェクトの代替名は、StringまたはASN.1符号化バイト配列として指定できます。使用される形式の詳細は、addSubjectAlternativeName(int type, String name)およびaddSubjectAlternativeName(int type, byte [] name)を参照してください。
注: 識別名は、文字列形式ではなくバイト配列形式で指定してください。詳細は、「addSubjectAlternativeName(int, String)」の注を参照してください。
namesパラメータには重複した名前(同じ名前および名前タイプ)が含まれていますが、この識別名はgetSubjectAlternativeNamesメソッドで返された名前のCollectionから削除できます。
以後の変更から保護するために、Collectionにディープ・コピーが行われます。
names - 名前のCollection。またはnullIOException - 構文解析エラーが発生した場合getSubjectAlternativeNames()public void addSubjectAlternativeName(int type,
String name)
throws IOException
X509Certificateには、subjectAlternativeNamesフラグの値に応じて、指定したsubjectAlternativeNamesのすべて、または少なくとも1つが含まれている必要があります(setMatchAllSubjectAltNamesを参照)。
このメソッドでは、呼出し側が名前をサブジェクトの代替名のセットに追加できます。指定した名前は、subjectAlternativeNames基準で先に存在する値に追加されます。指定した名前が重複する場合は無視されます。
名前は文字列形式で与えられます。RFC 822、DNS、URIの各名前では、RFC 3280に含まれる制限に従って、明確に定義された文字列形式が用いられます。IPv4アドレス名はドットで4つに区切られた表記法が使用されます。OID名は、ピリオドで区切られた負にならない一連の整数として表されます。ディレクトリ名(識別名)はRFC 2253文字列形式になります。otherName、X.400名、EDI相手名、IPv6アドレス名、そのほかのタイプの名前には、標準の文字列形式はありません。これらは、addSubjectAlternativeName(int type, byte [] name)メソッドを使用して指定するようにしてください。
注: 識別名については、かわりにaddSubjectAlternativeName(int, byte[])を使用してください。このメソッドの実行結果を信用しないでください。RFC 2253文字列形式で記述された一部の識別名では、符号化情報の損失により、証明書の一致処理に失敗する可能性があるためです。
type - 名前のタイプ(0-8、RFC 3280のセクション4.2.1.7で指定されている)name - 文字列形式の名前。nullではないIOException - 構文解析エラーが発生した場合public void addSubjectAlternativeName(int type,
byte[] name)
throws IOException
X509Certificateには、subjectAlternativeNamesフラグの値に応じて、指定したsubjectAlternativeNamesのすべて、または少なくとも1つが含まれている必要があります(setMatchAllSubjectAltNamesを参照)。
このメソッドでは、呼出し側が名前をサブジェクトの代替名のセットに追加できます。指定した名前は、subjectAlternativeNames基準で先に存在する値に追加されます。指定した名前が重複する場合は無視されます。
名前はバイト配列で指定されます。このバイト配列には、RFC 3280とX.509で定義されているGeneralName構造体にあるような、DER符号化した名前が含まれている必要があります。符号化されたバイト配列には名前の符号化された値だけが含まれている必要があり、GeneralName構造体の名前に関連付けられたタグが含まれていてはいけません。NameConstraints構造体のASN.1定義は次のとおりです。
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}
以後の変更から保護するために、ここで提供されるバイト配列は複製されています。
type - 名前のタイプ(0 - 8、上記のとおり)name - ASN.1 DER符号化形式による名前を含むバイト配列IOException - 構文解析エラーが発生した場合public void setNameConstraints(byte[] bytes)
throws IOException
X509Certificateには、指定した名前制約を満たすようなサブジェクトとサブジェクトの代替名がなければいけません。
名前制約はバイト配列で指定されます。このバイト配列には、RFC 3280とX.509で定義されているNameConstraints構造体にあるような名前制約のDER符号化形式が含まれなければいけません。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}
以後の変更から保護するために、ここで提供されるバイト配列は複製されています。
bytes - 名前制約をチェックするために使用されるNameConstraints拡張情報をASN.1 DERで符号化した値を含むバイト配列。拡張情報の値だけが含まれ、OIDやクリティカルの程度を表すフラグは含まれない。名前制約のチェックを行わない場合はnullにする。IOException - 構文解析エラーが発生した場合getNameConstraints()public void setBasicConstraints(int minMaxPathLen)
X509Certificatesに含まれている必要があります。値が -2の場合、エンド・エンティティの証明書だけが許容されます。-1の場合、チェックは行われません。
順方向(ターゲットからトラスト・アンカーへ)の証明書パスを構築するときに、この制約は役立ちます。パスが部分的に構築されている場合、候補証明書のmaxPathLen値は部分パス内の証明書数以上でなければいけません。
minMaxPathLen - 基本制約に対する制約の値IllegalArgumentException - 値が -2未満の場合getBasicConstraints()public void setPolicy(Set<String> certPolicySet) throws IOException
X509Certificateには、その証明書ポリシー拡張機能内に指定したポリシーが少なくとも1つ含まれている必要があります。certPolicySetが空の場合、X509Certificateには、その証明書ポリシー機能拡張内に指定したポリシーが複数含まれている必要があります。certPolicySetがnullの場合、ポリシーのチェックは行われません。
以後の変更から保護するために、Setは複製されています。
certPolicySet - 文字列形式の証明書ポリシーOIDのSet、またはnull。各OIDはピリオドで区切られた負でない整数の組で表されるIOException - 最初のコンポーネントが0、1、2のどれでもなく、2番目のコンポーネントが39よりも大きいというように、OIDの構文解析エラーが発生した場合getPolicy()public void setPathToNames(Collection<List<?>> names) throws IOException
X509Certificateに含まれてはいけません。
このメソッドを使用すると、1回のメソッド呼出しで、呼出し側がX509Certificatesの名前制約が許容される必要のある、名前の完全なセットを指定できます。指定した値はpathToNames基準値の前の値を置き換えます。
順方向(ターゲットからトラスト・アンカーへ)の証明書パスを構築するときに、この制約は役立ちます。パスが部分的に構築されている場合、候補証明書の名前制約は部分パス内の名前へのパスを構築できない制約ではいけません。
nullでないnamesパラメータは、pathToNames基準値に含まれている名前ごとに1エントリとなるCollectionになります。各エントリはListで、その最初のエントリはInteger (名前タイプ、0-8)、2番目のエントリはStringかバイト配列(それぞれが文字列形式またはASN.1 DER符号化形式の名前)になります。同じタイプに複数の名前が存在することもあります。この引数の値としてnullが指定された場合、pathToNamesのチェックは行われません。
Collection内の各名前は、StringかASN.1符号化バイト配列として指定できます。使用される形式の詳細は、addPathToName(int type, String name)およびaddPathToName(int type, byte [] name)を参照してください。
注: 識別名は、文字列形式ではなくバイト配列形式で指定してください。詳細は、「addPathToName(int, String)」の注を参照してください。
namesパラメータには重複した名前(同じ名前および名前タイプ)が含まれていますが、この識別名はgetPathToNamesメソッドで返された名前のCollectionから削除できます。
以後の変更から保護するために、Collectionにディープ・コピーが行われます。
names - 名前1つあたり1エントリのCollection。またはnullIOException - 構文解析エラーが発生した場合getPathToNames()public void addPathToName(int type,
String name)
throws IOException
X509Certificateに含まれてはいけません。
このメソッドでは、呼出し側が名前をX509Certificatesの名前制約が許容される必要のある、名前のセットに追加できます。指定した名前は、pathToNames基準値で先に存在する値に追加されます。名前が重複する場合は無視されます。
名前は文字列形式で与えられます。RFC 822、DNS、URIの各名前では、RFC 3280に含まれる制限に従って、明確に定義された文字列形式が用いられます。IPv4アドレス名はドットで4つに区切られた表記法が使用されます。OID名は、ピリオドで区切られた負にならない一連の整数として表されます。ディレクトリ名(識別名)はRFC 2253文字列形式になります。otherName、X.400名、EDI相手名、IPv6アドレス名、そのほかのタイプの名前には、標準の文字列形式はありません。これらは、addPathToName(int type, byte [] name)メソッドを使用して指定するようにしてください。
注: 識別名については、かわりにaddPathToName(int, byte[])を使用してください。このメソッドの実行結果を信用しないでください。RFC 2253文字列形式で記述された一部の識別名では、符号化情報の損失により、証明書の一致処理に失敗する可能性があるためです。
type - 名前のタイプ(0-8、RFC 3280のセクション4.2.1.7で指定されている)name - 文字列形式の名前IOException - 構文解析エラーが発生した場合public void addPathToName(int type,
byte[] name)
throws IOException
X509Certificateに含まれてはいけません。
このメソッドでは、呼出し側が名前をX509Certificatesの名前制約が許容される必要のある、名前のセットに追加できます。指定した名前は、pathToNames基準値で先に存在する値に追加されます。名前が重複する場合は無視されます。
名前はバイト配列で指定されます。このバイト配列には、RFC 3280とX.509で定義されているGeneralName構造体にあるような、DER符号化した名前が含まれている必要があります。この構造体のASN.1定義は、addSubjectAlternativeName(int type, byte [] name)で説明しています。
以後の変更から保護するために、ここで提供されるバイト配列は複製されています。
type - 名前のタイプ(0-8、RFC 3280のセクション4.2.1.7で指定されている)name - ASN.1 DER符号化形式による名前を含むバイト配列IOException - 構文解析エラーが発生した場合public X509Certificate getCertificate()
X509Certificateは、matchメソッドに渡されたX509Certificateと同じでないといけません。nullの場合、このチェックは行われません。X509Certificate。またはnullsetCertificate(java.security.cert.X509Certificate)public BigInteger getSerialNumber()
X509Certificateの証明書シリアル番号と一致する必要があります。nullの場合、証明書シリアル番号は問われません。nullsetSerialNumber(java.math.BigInteger)public X500Principal getIssuer()
X500Principalとして返します。この識別名は、X509Certificateの発行者識別名と一致する必要があります。nullの場合、発行者の基準値は無効になり、発行者識別名は問われません。nullpublic String getIssuerAsString()
発行者の基準値をStringとして返します。この識別名は、X509Certificateの発行者識別名と一致する必要があります。nullの場合、発行者の基準値は無効になり、発行者識別名は問われません。
返された値がnullでない場合は、RFC 2253形式の識別名になります。
nullpublic byte[] getIssuerAsBytes()
throws IOException
X509Certificateの発行者識別名と一致する必要があります。nullの場合、発行者の基準値は無効になり、発行者識別名は問われません。
返された値がnullではない場合、X.501で定義されているDER符号化された単一識別名を含むバイト配列になります。この構造体のASN.1表記については、setIssuer(byte [] issuerDN)のドキュメントを参照してください。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
nullIOException - 符号化エラーが発生した場合public X500Principal getSubject()
X500Principalとして返します。この識別名は、X509Certificateのサブジェクト識別名と一致する必要があります。nullの場合、サブジェクトの基準値は無効になり、サブジェクト識別名は問われません。nullpublic String getSubjectAsString()
サブジェクトの基準値をStringとして返します。この識別名は、X509Certificateのサブジェクト識別名と一致する必要があります。nullの場合、サブジェクトの基準値は無効になり、サブジェクト識別名は問われません。
返された値がnullでない場合は、RFC 2253形式の識別名になります。
nullpublic byte[] getSubjectAsBytes()
throws IOException
X509Certificateのサブジェクト識別名と一致する必要があります。nullの場合、サブジェクトの基準値は無効になり、サブジェクト識別名は問われません。
返された値がnullではない場合、X.501で定義されているDER符号化された単一識別名を含むバイト配列になります。この構造体のASN.1表記については、setSubject(byte [] subjectDN)のドキュメントを参照してください。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
nullIOException - 符号化エラーが発生した場合public byte[] getSubjectKeyIdentifier()
X509Certificateには、指定した値を持つSubjectKeyIdentifier機能拡張が含まれる必要があります。nullの場合、subjectKeyIdentifierのチェックは行われません。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
nullsetSubjectKeyIdentifier(byte[])public byte[] getAuthorityKeyIdentifier()
X509Certificateには、指定した値を持つAuthorityKeyIdentifier機能拡張が含まれる必要があります。nullの場合、authorityKeyIdentifierのチェックは行われません。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
nullsetAuthorityKeyIdentifier(byte[])public Date getCertificateValid()
X509Certificateの証明書有効期間内でなければいけません。nullの場合、certificateValidのチェックは行われません。
以後の変更から保護するために、返されるDateは複製されています。
Date。またはnullsetCertificateValid(java.util.Date)public Date getPrivateKeyValid()
X509Certificateの非公開鍵有効期間内でなければいけません。nullの場合、privateKeyValidのチェックは行われません。
以後の変更から保護するために、返されるDateは複製されています。
Date。またはnullsetPrivateKeyValid(java.util.Date)public String getSubjectPublicKeyAlgID()
X509Certificateには、指定したアルゴリズムによるサブジェクトの公開鍵が含まれなければいけません。nullの場合、subjectPublicKeyAlgIDのチェックは行われません。null。OIDはピリオドで区切られた負でない整数の組で表されるsetSubjectPublicKeyAlgID(java.lang.String)public PublicKey getSubjectPublicKey()
X509Certificateには、指定したサブジェクトの公開鍵が含まれなければいけません。nullの場合、subjectPublicKeyのチェックは行われません。nullsetSubjectPublicKey(java.security.PublicKey)public boolean[] getKeyUsage()
X509Certificateで有効になっている必要があります。nullの場合、keyUsageの確認は行われません。
以後の変更から保護するために、返されるboolean型配列は複製されています。
X509Certificate.getKeyUsage()によって返されるboolean型配列と同じ形式のboolean型配列。またはnullsetKeyUsage(boolean[])public Set<String> getExtendedKeyUsage()
X509Certificateの拡張鍵使用法の拡張機能で有効になっている必要があります。返されるkeyPurposeSetが空かnullの場合、extendedKeyUsageのチェックは行われません。extendedKeyUsage拡張機能のないX509Certificateでは、すべての鍵目的が暗黙的に有効です。Set、またはnullsetExtendedKeyUsage(java.util.Set<java.lang.String>)public boolean getMatchAllSubjectAltNames()
setSubjectAlternativeNamesメソッドやaddSubjectAlternativeNameメソッドで指定されたsubjectAlternativeNamesがすべて、または少なくとも1つ、X509Certificateに含まれていなければならないかどうかを示します。trueの場合、指定したサブジェクトの代替名がすべてX509Certificateに含まれていなければいけません。falseの場合、指定したサブジェクトの代替名が少なくとも1つX509Certificateに含まれていなければいけません。true、使用不可の場合はfalse。フラグはデフォルトではtrueです。setMatchAllSubjectAltNames(boolean)public Collection<List<?>> getSubjectAlternativeNames()
X509Certificateには、subjectAlternativeNamesフラグの値に応じて、指定したsubjectAlternativeNamesのすべて、または少なくとも1つが含まれている必要があります(getMatchAllSubjectAltNamesを参照)。返された値がnullの場合、subjectAlternativeNamesのチェックは行われません。
返される値がnullではない場合、サブジェクトの代替名基準値に含まれている名前ごとに1エントリとなるCollectionになります。各エントリはListで、その最初のエントリはInteger (名前タイプ、0-8)、2番目のエントリはStringかバイト配列(それぞれが文字列形式またはASN.1 DER符号化形式の名前)になります。同じタイプに複数の名前が存在することもあります。返されるCollectionには重複した名前(同じ名前と名前タイプ)が含まれることもあります。
Collection内の各サブジェクトの代替名は、StringまたはASN.1符号化バイト配列として指定できます。使用される形式の詳細は、addSubjectAlternativeName(int type, String name)およびaddSubjectAlternativeName(int type, byte [] name)を参照してください。
以後の変更から保護するために、Collectionにディープ・コピーが行われます。
Collection。またはnullsetSubjectAlternativeNames(java.util.Collection<java.util.List<?>>)public byte[] getNameConstraints()
X509Certificateには、指定した名前制約を満たすようなサブジェクトとサブジェクトの代替名がなければいけません。
名前制約はバイト配列で返されます。このバイト配列には、RFC 3280とX.509で定義されているNameConstraints構造体にあるような、名前制約のDER符号化形式が含まれています。この構造体のASN.1表記については、setNameConstraints(byte [] bytes)のドキュメントを参照してください。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
nullsetNameConstraints(byte[])public int getBasicConstraints()
X509Certificatesに含まれている必要があります。値が -2の場合、エンド・エンティティの証明書だけが許容されます。-1の場合、basicConstraintsのチェックは行われません。setBasicConstraints(int)public Set<String> getPolicy()
X509Certificateには、その証明書ポリシー拡張機能内に指定したポリシーが少なくとも1つ含まれている必要があります。返されたSetが空の場合、X509Certificateには、その証明書ポリシー機能拡張内に指定したポリシーが複数含まれている必要があります。返されたSetがnullの場合、ポリシーのチェックは行われません。Set、またはnullsetPolicy(java.util.Set<java.lang.String>)public Collection<List<?>> getPathToNames()
X509Certificateに含まれてはいけません。返された値がnullの場合、pathToNamesのチェックは行われません。
返される値がnullでない場合、pathToNames基準値に含まれている名前ごとに1エントリとなるCollectionになります。各エントリはListで、その最初のエントリはInteger (名前タイプ、0-8)、2番目のエントリはStringかバイト配列(それぞれが文字列形式またはASN.1 DER符号化形式の名前)になります。同じタイプに複数の名前が存在することもあります。返されるCollectionには重複した名前(同じ名前と名前タイプ)が含まれることもあります。
Collection内の各名前は、StringかASN.1符号化バイト配列として指定できます。使用される形式の詳細は、addPathToName(int type, String name)およびaddPathToName(int type, byte [] name)を参照してください。
以後の変更から保護するために、Collectionにディープ・コピーが行われます。
Collection。またはnullsetPathToNames(java.util.Collection<java.util.List<?>>)public String toString()
CertSelectorのプリント可能表現を返します。public boolean match(Certificate cert)
Certificateが選択されるかどうかを判断します。match、インタフェース: CertSelectorcert - チェック対象のCertificateCertificateが選択される場合はtrue、そうでない場合はfalse バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.