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
。またはnull
getCertificate()
public void setSerialNumber(BigInteger serial)
X509Certificate
の証明書シリアル番号と一致する必要があります。null
の場合、証明書シリアル番号は問われません。serial
- 一致させる証明書シリアル番号。またはnull
getSerialNumber()
public void setIssuer(X500Principal issuer)
X509Certificate
の発行者識別名と一致する必要があります。null
の場合、発行者識別名は問われません。issuer
- X500Principalとしての識別名またはnull
public void setIssuer(String issuerDN) throws IOException
発行者の基準値を設定します。指定した識別名は、X509Certificate
の発行者識別名と一致する必要があります。null
の場合、発行者識別名は問われません。
issuerDN
がnull
でない場合は、RFC 2253形式で識別名が含まれなければいけません。
issuerDN
- RFC 2253形式の識別名。またはnull
IOException
- 構文解析エラーが発生した場合(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符号化形式による識別名を含むバイト配列。またはnull
IOException
- 符号化エラーが発生した場合(DNの不正な形式)public void setSubject(X500Principal subject)
X509Certificate
のサブジェクト識別名と一致する必要があります。null
の場合、サブジェクト識別名は問われません。subject
- X500Principalとしての識別名またはnull
public void setSubject(String subjectDN) throws IOException
サブジェクトの基準値を設定します。指定した識別名は、X509Certificate
のサブジェクト識別名と一致する必要があります。null
の場合、サブジェクト識別名は問われません。
subjectDN
がnull
でない場合は、RFC 2253形式で識別名が含まれなければいけません。
subjectDN
- RFC 2253形式の識別名。またはnull
IOException
- 構文解析エラーが発生した場合(DNの不正な形式)public void setSubject(byte[] subjectDN) throws IOException
X509Certificate
のサブジェクト識別名と一致する必要があります。null
の場合、サブジェクト識別名は問われません。
subjectDN
がnull
ではない場合、X.501で定義されているDER符号化された単一識別名が含まれる必要があります。この構造体のASN.1表記については、setIssuer(byte [] issuerDN)
を参照してください。
subjectDN
- ASN.1 DER形式による識別名を含むバイト配列。またはnull
IOException
- 符号化エラーが発生した場合(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
- サブジェクトの鍵識別子。またはnull
getSubjectKeyIdentifier()
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
- 権限の鍵識別子。またはnull
getAuthorityKeyIdentifier()
public void setCertificateValid(Date certValid)
X509Certificate
の証明書有効期間内でなければいけません。null
の場合、certificateValidのチェックは行われません。
以後の変更から保護するために、ここで提供されるDate
は複製されています。
certValid
- チェック対象のDate
。またはnull
getCertificateValid()
public void setPrivateKeyValid(Date privateKeyValid)
X509Certificate
の非公開鍵有効期間内でなければいけません。null
の場合、privateKeyValidのチェックは行われません。
以後の変更から保護するために、ここで提供されるDate
は複製されています。
privateKeyValid
- チェック対象のDate
。またはnull
getPrivateKeyValid()
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
- チェック対象のサブジェクトの公開鍵。またはnull
getSubjectPublicKey()
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形式によるサブジェクトの公開鍵を含むバイト配列。またはnull
IOException
- 符号化エラーが発生した場合(サブジェクトの公開鍵の不正な形式)getSubjectPublicKey()
public void setKeyUsage(boolean[] keyUsage)
X509Certificate
で有効になっている必要があります。null
の場合、keyUsageの確認は行われません。keyUsage機能拡張のないX509Certificate
では、すべてのkeyUsageの値が暗黙的に有効です。
以後の変更から保護するために、ここで提供されるboolean型配列は複製されています。
keyUsage
- X509Certificate.getKeyUsage()
によって返されるboolean型配列と同じ形式のboolean型配列。またはnull
getKeyUsage()
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
。またはnull
IOException
- 構文解析エラーが発生した場合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
。またはnull
IOException
- 構文解析エラーが発生した場合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
。またはnull
setCertificate(java.security.cert.X509Certificate)
public BigInteger getSerialNumber()
X509Certificate
の証明書シリアル番号と一致する必要があります。null
の場合、証明書シリアル番号は問われません。null
setSerialNumber(java.math.BigInteger)
public X500Principal getIssuer()
X500Principal
として返します。この識別名は、X509Certificate
の発行者識別名と一致する必要があります。null
の場合、発行者の基準値は無効になり、発行者識別名は問われません。null
public String getIssuerAsString()
発行者の基準値をString
として返します。この識別名は、X509Certificate
の発行者識別名と一致する必要があります。null
の場合、発行者の基準値は無効になり、発行者識別名は問われません。
返された値がnull
でない場合は、RFC 2253形式の識別名になります。
null
public byte[] getIssuerAsBytes() throws IOException
X509Certificate
の発行者識別名と一致する必要があります。null
の場合、発行者の基準値は無効になり、発行者識別名は問われません。
返された値がnull
ではない場合、X.501で定義されているDER符号化された単一識別名を含むバイト配列になります。この構造体のASN.1表記については、setIssuer(byte [] issuerDN)
のドキュメントを参照してください。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
null
IOException
- 符号化エラーが発生した場合public X500Principal getSubject()
X500Principal
として返します。この識別名は、X509Certificate
のサブジェクト識別名と一致する必要があります。null
の場合、サブジェクトの基準値は無効になり、サブジェクト識別名は問われません。null
public String getSubjectAsString()
サブジェクトの基準値をString
として返します。この識別名は、X509Certificate
のサブジェクト識別名と一致する必要があります。null
の場合、サブジェクトの基準値は無効になり、サブジェクト識別名は問われません。
返された値がnull
でない場合は、RFC 2253形式の識別名になります。
null
public byte[] getSubjectAsBytes() throws IOException
X509Certificate
のサブジェクト識別名と一致する必要があります。null
の場合、サブジェクトの基準値は無効になり、サブジェクト識別名は問われません。
返された値がnull
ではない場合、X.501で定義されているDER符号化された単一識別名を含むバイト配列になります。この構造体のASN.1表記については、setSubject(byte [] subjectDN)
のドキュメントを参照してください。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
null
IOException
- 符号化エラーが発生した場合public byte[] getSubjectKeyIdentifier()
X509Certificate
には、指定した値を持つSubjectKeyIdentifier機能拡張が含まれる必要があります。null
の場合、subjectKeyIdentifierのチェックは行われません。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
null
setSubjectKeyIdentifier(byte[])
public byte[] getAuthorityKeyIdentifier()
X509Certificate
には、指定した値を持つAuthorityKeyIdentifier機能拡張が含まれる必要があります。null
の場合、authorityKeyIdentifierのチェックは行われません。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
null
setAuthorityKeyIdentifier(byte[])
public Date getCertificateValid()
X509Certificate
の証明書有効期間内でなければいけません。null
の場合、certificateValidのチェックは行われません。
以後の変更から保護するために、返されるDate
は複製されています。
Date
。またはnull
setCertificateValid(java.util.Date)
public Date getPrivateKeyValid()
X509Certificate
の非公開鍵有効期間内でなければいけません。null
の場合、privateKeyValidのチェックは行われません。
以後の変更から保護するために、返されるDate
は複製されています。
Date
。またはnull
setPrivateKeyValid(java.util.Date)
public String getSubjectPublicKeyAlgID()
X509Certificate
には、指定したアルゴリズムによるサブジェクトの公開鍵が含まれなければいけません。null
の場合、subjectPublicKeyAlgIDのチェックは行われません。null
。OIDはピリオドで区切られた負でない整数の組で表されるsetSubjectPublicKeyAlgID(java.lang.String)
public PublicKey getSubjectPublicKey()
X509Certificate
には、指定したサブジェクトの公開鍵が含まれなければいけません。null
の場合、subjectPublicKeyのチェックは行われません。null
setSubjectPublicKey(java.security.PublicKey)
public boolean[] getKeyUsage()
X509Certificate
で有効になっている必要があります。nullの場合、keyUsageの確認は行われません。
以後の変更から保護するために、返されるboolean型配列は複製されています。
X509Certificate.getKeyUsage()
によって返されるboolean型配列と同じ形式のboolean型配列。またはnull
setKeyUsage(boolean[])
public Set<String> getExtendedKeyUsage()
X509Certificate
の拡張鍵使用法の拡張機能で有効になっている必要があります。返されるkeyPurposeSet
が空かnull
の場合、extendedKeyUsageのチェックは行われません。extendedKeyUsage拡張機能のないX509Certificate
では、すべての鍵目的が暗黙的に有効です。Set
、またはnull
setExtendedKeyUsage(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
。またはnull
setSubjectAlternativeNames(java.util.Collection<java.util.List<?>>)
public byte[] getNameConstraints()
X509Certificate
には、指定した名前制約を満たすようなサブジェクトとサブジェクトの代替名がなければいけません。
名前制約はバイト配列で返されます。このバイト配列には、RFC 3280とX.509で定義されているNameConstraints構造体にあるような、名前制約のDER符号化形式が含まれています。この構造体のASN.1表記については、setNameConstraints(byte [] bytes)
のドキュメントを参照してください。
以降の変更から保護するために、返されるバイト配列の複製が作成されます。
null
setNameConstraints(byte[])
public int getBasicConstraints()
X509Certificates
に含まれている必要があります。値が -2の場合、エンド・エンティティの証明書だけが許容されます。-1の場合、basicConstraintsのチェックは行われません。setBasicConstraints(int)
public Set<String> getPolicy()
X509Certificate
には、その証明書ポリシー拡張機能内に指定したポリシーが少なくとも1つ含まれている必要があります。返されたSet
が空の場合、X509Certificate
には、その証明書ポリシー機能拡張内に指定したポリシーが複数含まれている必要があります。返されたSet
がnull
の場合、ポリシーのチェックは行われません。Set
、またはnull
setPolicy(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
。またはnull
setPathToNames(java.util.Collection<java.util.List<?>>)
public String toString()
CertSelector
のプリント可能表現を返します。public boolean match(Certificate cert)
Certificate
が選択されるかどうかを判断します。match
、インタフェース: CertSelector
cert
- チェック対象のCertificate
Certificate
が選択される場合はtrue
、そうでない場合はfalse
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.