TrustAnchor(X509Certificate, byte[])
$B%3%s%9%H%i%/%?$,(J InvalidAlgorithmParameterException
$B$NBe$o$j$K(J IllegalArgumentException
$B$r%9%m!<$9$k$h$&$K$J$C$?(J (RuntimeException
$B$J$N$G(J javadoc $BFb$G$N$_(J)
TrustAnchor(String, PublicKey, byte[])
$B%3%s%9%H%i%/%?$,(J InvalidAlgorithmParameterException
$B$NBe$o$j$K(J IllegalArgumentException
$B$r%9%m!<$9$k$h$&$K$J$C$?!#(J caName
$B%Q%i%a!<%?$N;XDj$,@5$7$/$J$$$H$-$K(J IllegalArgumentException
$B$r%9%m!<$9$k$h$&$K$J$C$?(J
PolicyQualifierInfo
$B%/%i%9$,(J final $B%/%i%9$K$J$C$?(J
getTrustedCert
$B!"(JgetCAName
$B!"(JgetCAPublicKey
$B!"(JgetNameConstraints
$B$N3F%a%=%C%I$,(J TrustAnchor
$B$N(J final $B%a%=%C%I$K$J$C$?(J
PolicyNode
$B$N(J isImmutable
$B%a%=%C%I$,:o=|$5$l!"$9$Y$F$N%$%s%9%?%s%9$KITJQ$G$"$k$3$H$,MW5a$5$l$k$h$&$K$J$C$?(J
policyTree
$B%Q%i%a!<%?$,ITJQ$G$J$$>l9g$K(J PKIXCertPathValidatorResult
$B$*$h$S(J PKIXCertPathBuilderResult
$B$N%3%s%9%H%i%/%?$,(J InvalidParameterException
$B$r%9%m!<$7$J$/$J$C$?(J ($B8=:_$G$O(J PolicyNode
$B$N%$%s%9%?%s%9$O$9$Y$FITJQ(J)
PKIXBuilderParameters
$B$N(J setMaxPathLength
$B%a%=%C%I$N;EMM$,JQ99$5$l!"(JPKIX $B>ZL@=q%W%m%U%!%$%k(J (http://www.ietf.org/internet-drafts/draft-ietf-pkix-new-part1-08.txt) $B=`5r$K$J$C$?!#(J $B$3$N%a%=%C%I$O!"(JmaxPathLength
$B%Q%i%a!<%?$KHO0O30$NCM$,;XDj$5$l$?>l9g!"(JInvalidParameterException
(RuntimeException
) $B$r%9%m!<$9$k$h$&$K$J$C$?(J
CertPath
$B$K(J TrustAnchor
$B>ZL@=q$rAH$_9~$`$3$H$,$G$-$J$/$J$C$?(J
CertPath
$B$N?7$7$$I8=`Id9f2=7A<0(J PkiPath $B$,DI2C$5$l$?!#(J
JavaTM Certification Path API $B$O!">ZL@=q%Q%9(J ($B!V>ZL@O":?!W$H$b8F$P$l$k(J) $B$r07$&$?$a$N%/%i%9$H%$%s%?%U%'!<%9$G9=@.$5$l$^$9!#(J $B>ZL@=q%Q%9$O!"=g=xIU$1$5$l$?>ZL@=q%j%9%H$G$9!#(J $B>ZL@=q%Q%9$O!"FCDj$N8!>Z5,B'$rK~$?$9>l9g$K!"8x3+80$+$i $B$3$N(J API $B$O!">ZL@=q%Q%9$N:n@.!"9=C[!"8!>ZMQ$N%$%s%?%U%'!<%9$*$h$SCj>]%/%i%9$rDj5A$7$^$9!# $B$^$?!"(JAPI $B$K$O!"(JPKIX $BI8=`$K=>$C$F(J X 509 $B>ZL@=q%Q%9$r9=C[$*$h$S8!>Z$9$k$?$a$N%"%k%4%j%:%`FCDj7?$N%/%i%9$,4^$^$l$^$9!#(J PKIX $BI8=`$O!"(JIETF PKIX $B%o!<%-%s%0%0%k!<%W(J$B$K$h$C$F3+H/$5$l$^$9!#(J
$B$3$N(J API $B$O!"(JJavaTM 2 SDK, Standard Edition (J2SDK), v 1.4 $B$K4^$^$l$F$*$j!"8=:_(J Java Community ProcessSM $B%W%m%0%i%`$K$h$j?35DCf$G$9(J (JavaTM Specification Request (JSR) 000055)$B!#(J JSR $B$*$h$S:G?7$N%9%F!<%?%9$K$D$$$F$N>pJs$O!"(JJSR 055 $B%[!<%`%Z!<%8(J$B$r;2>H$7$F$/$@$5$$!#(J
$B>ZL@=q%Q%9$r9=C[$^$?$O8!>Z$9$k!"%;%-%e%j%F%#J]8n$5$l$?%"%W%j%1!<%7%g%s$r@_7W$9$k?M(J
$B>ZL@=q%Q%9$r9=C[$^$?$O8!>Z$9$k$?$a$N%5!<%S%9%W%m%P%$%@ Java $B0E9f2=%"!<%-%F%/%A%cMQ%W%m%P%$%@$N $B8x3+80%"%W%j%1!<%7%g%s$*$h$S%7%9%F%`$N%f!<%6$O!" $B%f!<%6$O!" $B?^(J 1 $B$O!":G$b?.Mj$G$-$k(J CA $B$N8x3+80(J (CA 1) $B$+$i%?!<%2%C%H$N $B>ZL@=q%Q%9$O!" $B%f!<%6$O!":G$b?.Mj$G$-$k(J CA $B$+$i $B>ZL@=q%Q%9$N9=C[$*$h$S8!>Z$O!"(JSSL/TLS$B!"(JS/MIME$B!"(JIPSEC $B$J$I!"B?$/$NI8=`%;%-%e%j%F%#%W%m%H%3%k$N=EMW$J0lIt$G$9!#(J JavaTM Certification Path API $B$O!"$3$N5!G=$r%"%W%j%1!<%7%g%s$KE}9g$9$kI,MW$N$"$k3+H/ Java Certification Path API $B$N%3%"%/%i%9$O!"%"%k%4%j%:%`$*$h$S $B4pK\$N(J Certification Path $B%/%i%9(J
Certification Path $B8!>Z%/%i%9(J
Certification Path $B9=C[%/%i%9(J
$B>ZL@=q(J/CRL $B%9%H%l!<%8%/%i%9(J
$B
CertPath API $B$N%/%i%9$*$h$S%$%s%?%U%'!<%9$NBgH>$O!"%9%l%C%I$KBP$7$F0BA4$G$O$"$j$^$;$s!#(J $B$7$+$7!"$3$N%,%$%I$*$h$S(J API $B;EMM$G8@5Z$5$l$?Nc30$b$"$j$^$9!#(J $B%9%l%C%I$KBP$7$F0BA4$G$J$$C10l$N%*%V%8%'%/%H$KF1;~$K%"%/%;%9$9$kI,MW$N$"$kJ#?t$N%9%l%C%I$O!"8_$$$KF14|$7$FI,MW$J%m%C%/$r9T$&$b$N$H$7$^$9!#(J $BJ#?t$N%9%l%C%I$,$=$l$>$l8DJL$N%*%V%8%'%/%H$r=hM}$9$k>l9g!"$=$l$i$N%9%l%C%I$OF14|$9$kI,MW$O$"$j$^$;$s!#(J
$B4pK\$N>ZL@=q%Q%9%/%i%9$O!">ZL@=q%Q%9$rId9f2=$*$h$SI=<($9$k4pK\E*$J5!G=$rDs6!$7$^$9!#(J Java Certification Path API $B$N CertPath $B%/%i%9$O!">ZL@=q%Q%9$NCj>]%/%i%9$G$9!#(J $B$9$Y$F$N>ZL@=q%Q%9%*%V%8%'%/%H$,6&M-$9$k5!G=$rDj5A$7$^$9!#(J $B$5$^$6$^$J>ZL@=q%Q%9$N7?$O!"$=$l$,0[$J$kFbMF$*$h$S=g=xIU$1%9%-!<%^$r;}$C$F$$$F$b!"(JCertPath $B%/%i%9$r%5%V%/%i%92=$9$k$3$H$K$h$C$F A $B7?(J $BI8=`E*$J>ZL@=q$N7?$N>\:Y$K$D$$$F$O!"(J$B!V(JJava $B0E9f2=%"!<%-%F%/%A%c(J API $B$N;EMM$*$h$S%j%U%!%l%s%9!W(J$B$N!VIUO?(J A$B!W$r;2>H$7$F$/$@$5$$!#(J
$B>ZL@=q%j%9%H(J
$B Certification Path API $B$N3+H/$K7H$o$C$?J}!9!"$*$h$SM-MQ$J%3%a%s%H$d5;=QE*$J%"%I%P%$%9$r$/$@$5$C$?J}!9$K46$B%(%-%9%Q!<%H%0%k!<%W$O!"(JJava Community Process $B$r;H$C$F(J API $B$r2~NI$7!"D4@0$r;\$9:n6H$N0lMc$rC4$$$^$7$?!#$3$N%0%k!<%W$N%a%s%P$O!"0J2<$NJ}!9$G$9!#(J
Sun Microsystems $B$N(J Maxine Erlund$B!"(JSteve Hanna$B!"(JPhil Rosenzweig $B$*$h$S(J Bob Sproull $B$N3F;a$K$O!";XF3$HF6;!$rDs6!$7$F$$$?$@$-$^$7$?!#(J Sun Microsystems $B$N(J Java Security, Networking and Naming Group $B$N%a%s%P(J ($BFC$K(JSharon Liu$B!"(JJeff Nisewanger$B!"(JGary Ellison$B!"$*$h$S(J Andreas Sterbenz $B$N3F;a(J) $B$K$O!"5.=E$J%3%a%s%H$d%5%]!<%H$r$$$?$@$-$^$7$?!#(J $B$=$NB>!"5.=E$J%3%a%s%H$d%"%I%P%$%9$rB?$/$N5;=Q%a%s%P(J ($BFC$K(J Mary Dageforde$B!"(JEdward Dobner$B!"(JTom Gindin$B!"(JJan Luehe$B!"(JDavid Kuehr-McLaren$B!"(JParag Salvi$B!"(JAlexei Semidetnov$B!"$*$h$S(J Yanni Zhang $B$N3F;a(J) $B$+$i$$$?$@$-$^$7$?!#(J
$B$3$N%I%-%e%a%s%H$NBP>]FI
$B4XO"%I%-%e%a%s%H(J
$B$3$N%I%-%e%a%s%H$O!"FI$B$O$8$a$K(J
$B?^(J 1: $B>ZL@=q%Q%9(J$B%3%"%/%i%9$H%$%s%?%U%'!<%9(J
java.security.cert
$B%Q%C%1!<%8$K9=C[$5$l!"$=$N5!G=$r3HD%$7$^$9!#(J $B%3%"%/%i%9$O!"Z!"9=C[!"$*$h$S%9%H%l!<%8$H$$$&(J 4 $B$D$N%/%i%9%+%F%4%j$KJ,$1$k$3$H$,$G$-$^$9!#(J
CertPath
$B!"(JCertificateFactory
$B!"(JCertPathParameters
CertPathValidator
$B!"(JCertPathValidatorResult
CertPathBuilder
$B!"(JCertPathBuilderResult
CertStore
$B!"(JCertStoreParameters
$B!"(JCertSelector
$B!"(JCRLSelector
$B4pK\$N>ZL@=q%Q%9%/%i%9(J
CertPath $B%/%i%9(J
$B$3$l$O!">ZL@=q%Q%9$N>ZL@=q$N7?$HBP1~$7$F$$$^$9!#$?$H$($P!"(JX.509 $B$,$3$l$K3:Ev$7$^$9!#(J CertPath $B$N7?$O!" public String getType()
getCertificates $B%a%=%C%I$O!">ZL@=q%Q%9$K4^$^$l$k>ZL@=q$N%j%9%H$rJV$7$^$9!#(J
public abstract List getCertificates()
$B$3$N%a%=%C%I$O!"(J0 $B8D0J>e$N(J java.security.cert.Certificate $B%*%V%8%'%/%H$N(J List $B$rJV$7$^$9!#(J $BJV$5$l$k(J List
$B$*$h$S$=$NCf$K4^$^$l$k(J Certificates
$B$O!"(JCertPath $B%*%V%8%'%/%H$NFbMF$rJ]8n$9$k$?$a!"JQ99$G$-$^$;$s!#(J
1 $B$D0J>e$NId9f2=(J
$B3F(J CertPath
$B%*%V%8%'%/%H$O!"(J1 $B$D0J>e$NId9f2=$r%5%]!<%H$7$^$9!#(J $B$3$l$i$O>ZL@=q%Q%9$N30ItId9f2=7A<0$G!"%M%C%H%o!<%/$rDL$8$F%Q%9$rJL$NAH?%$KE>Aw$9$k:]$K!"%Q%9$NI8=`I=<($,(J Java $B2>A[%^%7%s$N30It$GI,MW$J$H$-$K;HMQ$7$^$9!#(J $B3F%Q%9$O%G%U%)%k%H$N7A<0$GId9f2=$5$l!"$=$N%P%$%H$O
public abstract byte[] getEncoded()$B0lJ}!"(JgetEncoded(String) $B%a%=%C%I$O!"Id9f2=7A<0$r(J String ($BNc(J: $B!V(JPKCS7$B!W(J) $B$H;XDj$9$k$3$H$K$h$j!"%5%]!<%H$5$l$kFCDj$NId9f2=$rJV$7$^$9!#(J $BI8=`$NId9f2=7A<0(J$B$N%j%9%H$O!"IUO?(J A $B$GDj5A$5$l$F$$$^$9!#(J
public abstract byte[] getEncoded(Sting encoding)$B$^$?!"(JgetEncodings $B%a%=%C%I$O!"%5%]!<%H$5$l$kId9f2=7A<0(J String $B$G$bH?I|;R$rJV$7$^$9(J ($B%G%U%)%k%H$NId9f2=7A<0$,:G=i$KJV$5$l$k(J)$B!#(J
public abstract Iterator getEncodings()
$B$9$Y$F$N(J CertificateFactory $B%/%i%9$O!">ZL@=q%U%!%/%H%j$N5!G=$rDj5A$9$k(J$B%(%s%8%s%/%i%9(J$B$G$9!#(J $B$3$N%/%i%9$O!"(JJ2SDK, v 1.4 $B$h$jA0$N%j%j!<%9$G$O!"(J CertificateFactory $B$N%$%s%9%?%s%9$O!"(JCertificate $B%*%V%8%'%/%H$N(J $BFCDj$NId9f2=7A<0$+$iFI$_9~$^$l$?%G!<%?$r;HMQ$9$k>l9g$O $B%5%]!<%H$5$l$F$$$kId9f2=7A<0$rD4$Y$k$K$O!"(JgetCertPathEncodings $B%a%=%C%I$r;HMQ$7$^$9(J ($B%G%U%)%k%H$NId9f2=$,:G=i$KJV$5$l$k(J)$B!#(J $B>ZL@=q%Q%9%*%V%8%'%/%H$r(J Certificate $B%*%V%8%'%/%H$N(J$B%j%9%H(J$B$+$i@8@.$9$k$K$O!" $BZL@=q1~Ez$+$i>ZL@=q%Q%9$r@8@.$9$kJ}K!$r<($7$F$$$^$9!#(J
CertPathParameters $B%$%s%?%U%'!<%9$O!"FCDj$N>ZL@=q%Q%9%S%k%@$^$?$O8!>Z%"%k%4%j%:%`$G;HMQ$5$l$k0lO"$N%Q%i%a!<%?$NF)L@$JI=8=$G$9!#(J $B$3$N%$%s%?%U%'!<%9$N CertPathParameters $B%$%s%?%U%'!<%9$r Java Certification Path API $B$K$O!">ZL@=q%Q%9$r8!>Z$9$k%/%i%9$*$h$S%$%s%?%U%'!<%9$,4^$^$l$F$$$^$9!#(J $B%"%W%j%1!<%7%g%s$O!"(JCertPathValidator $B%/%i%9$N%$%s%9%?%s%9$r;H$C$F!"(JCertPath $B%*%V%8%'%/%H$r8!>Z$7$^$9!#(J $B@.8y$9$k$H!"(JCertPathValidatorResult $B%$%s%?%U%'!<%9$r CertPathValidator $B%/%i%9$O!">ZL@=q%Q%9$N8!>Z$K;HMQ$5$l$k(J$B%(%s%8%s%/%i%9(J$B$G$9!#(J $B$[$+$N%(%s%8%s%/%i%9$HF1MM$K!"FCDj$N8!>Z%"%k%4%j%:%`MQ$N(J CertPathValidator $B%*%V%8%'%/%H$r CertPathValidator $B%*%V%8%'%/%H$,@8@.$5$l$k$H!"(Jvalidate $B%a%=%C%I$r8F$S=P$7$F!"8!>Z$9$k>ZL@=q%Q%9$*$h$S%"%k%4%j%:%`FCDj7?$N%Q%i%a!<%?%;%C%H$rEO$9$3$H$K$h$C$F!"%Q%9$r8!>Z$G$-$^$9!#(J
$B8!>Z%"%k%4%j%:%`$,@.8y$9$k$H!"(JCertPathValidatorResult $B%$%s%?%U%'!<%9$r validate $B%a%=%C%I$KEO$5$l$k(J CertPath $B$*$h$S(J CertPathValidatorResult $B%$%s%?%U%'!<%9$O!">ZL@=q%Q%98!>Z%"%k%4%j%:%`$N@.8y7k2L$^$?$O=PNO$NF)L@$JI=8=$G$9!#(J $B$3$N%$%s%?%U%'!<%9$N CertPathValidatorResult $B%$%s%?%U%'!<%9$r $BCertPathValidator $B$r:n@.$7!">ZL@=q%Q%9$N8!>Z$K;HMQ$9$kJ}K!$r<($7$^$9!#(J $B$3$NNc$O!"(J Java Certification Path API $B$K$O!">ZL@=q%Q%9$r9=C[$9$k(J ($B$^$?$O8!=P$9$k(J) $B$?$a$N%/%i%9$,4^$^$l$F$$$^$9!#(J $B%"%W%j%1!<%7%g%s$O!"(JCertPathBuilder $B%/%i%9$N%$%s%9%?%s%9$r;H$C$F!"(JCertPath $B%*%V%8%'%/%H$r9=C[$7$^$9!#(J $B@.8y$9$k$H!"(JCertPathBuilderResult $B%$%s%?%U%'!<%9$r CertPathBuilder $B%/%i%9$O!">ZL@=q%Q%9$N9=C[$K;HMQ$5$l$k(J$B%(%s%8%s%/%i%9(J$B$G$9!#(J
$B$[$+$N%(%s%8%s%/%i%9$HF1MM$K!"FCDj$N9=C[%"%k%4%j%:%`MQ$N(J CertPathBuilder $B%*%V%8%'%/%H$r CertPathBuilder $B%*%V%8%'%/%H$,:n@.$5$l$k$H!"(Jbuild $B%a%=%C%I$r8F$S=P$7$F!"%"%k%4%j%:%`FCDj7?$N%Q%i%a!<%?;EMM$rEO$9$3$H$K$h$C$F!"%Q%9$r9=C[$G$-$^$9!#(J
$B9=C[%"%k%4%j%:%`$,@.8y$9$k$H!"(JCertPathBuilderResult $B%$%s%?%U%'!<%9$r build $B%a%=%C%I$KEO$5$l$k(J CertPathBuilderResult $B%$%s%?%U%'!<%9$O!">ZL@=q%Q%99=C[%"%k%4%j%:%`$N7k2L$^$?$O=PNO$NF)L@$JI=8=$G$9!#(J $B$3$N%$%s%?%U%'!<%9$K$O!"o$K9=C[$5$l$?>ZL@=q%Q%9$rJV$9%a%=%C%I$,4^$^$l$^$9!#(J
CertPathBuilderResult $B%$%s%?%U%'!<%9$NL\E*$O!"$9$Y$F$N9=C[7k2L$r%0%k!<%W2=$9$k$3$H(J ($B$*$h$S$=$l$i$N9=C[7k2L$K0BA4$J7?$rDs6!$9$k$3$H(J) $B$G$9!#(J CertPathBuilderResult $B%$%s%?%U%'!<%9$r $BCertPathBuilder $B$r:n@.$7$F!">ZL@=q%Q%9$N9=C[$K;HMQ$9$kJ}K!$r<($7$^$9!#(J $B$3$NNc$O!"(J Java Certification Path API $B$K$O!"%j%]%8%H%j$+$i>ZL@=q$*$h$S(J CRL $B$r CertPathValidator $B CertStore $B%/%i%9$O!">ZL@=q$*$h$S>ZL@=q$N CertStore $B%*%V%8%'%/%H$N$9$Y$F$N(J public $B%a%=%C%I$O!"%9%l%C%I$KBP$7$F0BA4$G$9!#(J $B$D$^$j!"C10l$N(J ($B$^$?$OJ#?t$N(J) $B$[$+$N%(%s%8%s%/%i%9$HF1MM$K!"FCDj$N%j%]%8%H%j7?MQ$N(J CertStore $B%*%V%8%'%/%H$r $B=i4|2=%Q%i%a!<%?(J ( CertStore $B%*%V%8%'%/%H$r@8@.$9$k$H!"(JgetCertificates $B%a%=%C%I$r;H$C$F%j%]%8%H%j$+$i>ZL@=q$r $B$3$N%a%=%C%I$O!"A*Br>r7o$rK~$?$9(J java.security.cert.Certificate $B%*%V%8%'%/%H$N(J Collection $B$rJV$7$^$9!#(J $B>r7o$,K~$?$9$b$N$,$J$$>l9g$O!"6u$N(J Collection $B$,JV$5$l$^$9!#(J $B%j%b!<%H%j%]%8%H%j$H$NDL?.>c32$J$I!"M=4|$7$J$$%(%i!<>uBV$,@8$8$?>l9g$O!"DL>o!"(J $B$"$k getCRLs $B%a%=%C%I$r;H$C$F%j%]%8%H%j$+$i(J CRL $B$r $B$3$N%a%=%C%I$O!"A*Br>r7o$rK~$?$9(J java.security.cert.CRL $B%*%V%8%'%/%H$N(J Collection $B$rJV$7$^$9!#(J $B>r7o$,K~$?$9$b$N$,$J$$>l9g$O!"6u$N(J Collection $B$,JV$5$l$^$9!#(J
CertStoreParameters $B%$%s%?%U%'!<%9$O!"FCDj$N(J CertStoreParameters $B%$%s%?%U%'!<%9$r LDAPCertStoreParameters $B%/%i%9$O!"(JCertStoreParameters $B%$%s%?%U%'!<%9$N $B$3$N%/%i%9$N>\:Y$K$D$$$F$O!"(JLDAPCertStoreParameters $B$N(JAPI $B%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(J
CollectionCertStoreParameters $B%/%i%9$O!"(JCertStoreParameters $B%$%s%?%U%'!<%9$N $B$3$N%/%i%9$N>\:Y$K$D$$$F$O!"(JCollectionCertStoreParameters $B$N(J API $B%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(J CertSelector $B$*$h$S(J CRLSelector $B%$%s%?%U%'!<%9$O!">ZL@=q$*$h$S(J CRL $B$N%3%l%/%7%g%s$^$?$OBg$-$J%0%k!<%W$+$i!">ZL@=q$*$h$S(J CRL $B$rA*Br$9$k$?$a$N0lO"$N>r7o$N;EMM$G$9!#(J $B%$%s%?%U%'!<%9$O%0%k!<%W2=$5$l!"$9$Y$F$N%;%l%/%?$N;EMM$K7?$N0BA4@-$rDs6!$7$^$9!#(J $B3F%;%l%/%?%$%s%?%U%'!<%9$O!"(J CertSelector $B$*$h$S(J CRLSelector $B%$%s%?%U%'!<%9$O!"$=$l$>$l(J match $B$H$$$&L>A0$N%a%=%C%I$rDj5A$7$^$9!#(J match $B%a%=%C%I$O!"(JCertificate $B$^$?$O(J CRL $B%*%V%8%'%/%H$r0z?t$H$7$F CRLSelector $B%$%s%?%U%'!<%9$K$D$$$F$O!" $B0lHL$K!"$3$l$i$N%$%s%?%U%'!<%9$r X509CertSelector $B%/%i%9$O!"(JX.509 $B>ZL@=q$rA*Br$9$k$?$a$N0lO"$N>r7o$rDj5A$9$k(J CertSelector $B%$%s%?%U%'!<%9$N $B$?$H$($P!"(J $B$3$3$G@bL@$7$?(J X.509 $B>ZL@=q$N3HD%5!G=$NDj5A$K$D$$$F$O!"(J http://www.ietf.org/rfc/rfc2459.txt $B$r;2>H$7$F$/$@$5$$!#(J
X509CertSelector $B%*%V%8%'%/%H$O!" $B:G=i$O!">r7o$O2?$b@_Dj$5$l$F$$$^$;$s(J ($B$I$N(J $B8F$S=P$7B&$O!"A*Br>r7o$r;HMQ$7$F(J X.509 $B>ZL@=q$N0[$J$k%3%s%]!<%M%s%H$r>H9g$9$k$3$H$,$G$-$^$9!#(J $B$3$3$G$O!"A*Br>r7o$r@_Dj$9$k$$$/$D$+$N%a%=%C%I$K$D$$$F@bL@$7$^$9!#(J $B$=$NB>$N%a%=%C%I$N>\:Y$K$D$$$F$O!"(JX509CertSelector $B$N(J API $B%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(J
setIssuer $B%a%=%C%I$O!"H/9T $B;XDj$5$l$?<1JLL>(J (RFC 2253 String $B$^$?$O(J ASN.1 DER $BId9f2=7A<0(J) $B$O!">ZL@=q$K$"$kH/9T $BF1MM$K!"(JsetSubject $B%a%=%C%I$O $B;XDj$5$l$?<1JLL>(J (RFC 2253 String $B$^$?$O(J ASN.1 DER $BId9f2=7A<0(J) $B$O!">ZL@=q$K$"$k setSerialNumber $B%a%=%C%I$O!"(JserialNumber $B$N>r7o$r@_Dj$7$^$9!#(J
$B;XDj$5$l$?%7%j%"%kHV9f$O!">ZL@=q$K$"$k>ZL@=q%7%j%"%kHV9f$HI,$:0lCW$9$kI,MW$,$"$j$^$9!#(J null $B$N>l9g!">ZL@=q%7%j%"%kHV9f$OLd$o$l$^$;$s!#(J
setAuthorityKeyIdentifier $B%a%=%C%I$O!"(JauthorityKeyIdentifier $B$N>r7o$r@_Dj$7$^$9!#(J
$B>ZL@=q$K$O!";XDj$5$l$?CM$H0lCW$9$k(J Authority Key Identifier $B3HD%5!G=$,4^$^$l$F$$$kI,MW$,$"$j$^$9!#(J null $B$N>l9g!"(JauthorityKeyIdentifier $B>r7o$K4X$9$k3NG'$O9T$o$l$^$;$s!#(J
setCertificateValid $B%a%=%C%I$O!"(JcertificateValid $B$N>r7o$r@_Dj$7$^$9!#(J
$B;XDj$5$l$?F|IU$O!">ZL@=q$N>ZL@=qM-8z4|4VFb$K<}$^$kI,MW$,$"$j$^$9!#(J null $B$N>l9g!"$I$NF|IU$bM-8z$G$9!#(J
setKeyUsage $B%a%=%C%I$O!"(JkeyUsage $B$N>r7o$r@_Dj$7$^$9!#(J
$B>ZL@=q$N(J Key Usage Extension $B$O!";XDj$5$l$?(J KeyUsage $B$NCM(J (true $B$K@_Dj$5$l$F$$$kCM(J) $B$r5v2D$9$kI,MW$,$"$j$^$9!#(J null $B$N>l9g!"(JkeyUsage $B$N3NG'$O9T$o$l$^$;$s!#(J
$B3FA*Br>r7o$N8=:_$NCM$O!"3:Ev$9$k(J get $B%a%=%C%I$r;H$C$F $B$3$3$G$O!"(JX509CertSelector $B%/%i%9$r;H$C$F(J LDAP CertStore $B$+$i(J X.509 $B>ZL@=q$r $B$O$8$a$K!"(JLDAP $B%5!<%P$N%[%9%HL>$*$h$S%]!<%H$r4^$`(J $BCertStore $B%*%V%8%'%/%H$r@8@.$7!"LDAPCertStoreParameters $B%*%V%8%'%/%H$rEO$7$^$9!#(J
$B$3$N8F$S=P$7$O!"(JRFC 2587 $B$GDj5A$5$l$?%9%-!<%^$r;H$C$F!">ZL@=q$*$h$S(J CRL $B$r(J LDAP $B%j%]%8%H%j$+$i $BZL@=q$r$9$Y$F $BCertStore $B%*%V%8%'%/%H$N(J getCertificates $B%a%=%C%I$K%;%l%/%?$rEO$7$^$9!#(J
PKIX X509CRLSelector $B%/%i%9$O!"(JX.509 CRL $B$rA*Br$9$k0lO"$N>r7o$rDj5A$9$k(J CRLSelector $B%$%s%?%U%'!<%9$N $B$?$H$($P!"(J $B$3$3$G@bL@$7$?(J X.509 CRL $B%U%#!<%k%I$*$h$S3HD%5!G=$NDj5A$K$D$$$F$O!"(Jhttp://www.ietf.org/rfc/rfc2459.txt $B$r;2>H$7$F$/$@$5$$!#(J
X509CRLSelector $B%*%V%8%'%/%H$O!" $B:G=i!">r7o$O2?$b@_Dj$5$l$F$$$^$;$s(J ($B$I$N(J $B8F$S=P$7B&$O!"A*Br>r7o$r;HMQ$7$F(J X.509 CRL $B$N0[$J$k%3%s%]!<%M%s%H$r>H9g$9$k$3$H$,$G$-$^$9!#(J $B$3$3$G$O!"A*Br>r7o$r@_Dj$9$k$[$H$s$I$N%a%=%C%I$K$D$$$F@bL@$7$^$9!#(J $B;D$j$N%a%=%C%I$N>\:Y$K$D$$$F$O!"(JX509CRLSelector $B$N(J API $B%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(J
setIssuerNames $B%a%=%C%I$O!"(JissuerNames $B$N>r7o$r@_Dj$7$^$9!#(J
CRL $B$K$"$kH/9T setMinCRLNumber $B$*$h$S(J setMaxCRLNumber $B%a%=%C%I$O!"(JminCRLNumber $B$*$h$S(J maxCRLN $B$N>r7o$r@_Dj$7$^$9!#(J
CRL $B$K$O!"(JCRL Number $B3HD%5!G=$,I,MW$G$9!#$3$N3HD%5!G=$O!"(JsetMinCRLNumber $B%a%=%C%I$,8F$S=P$5$l$?>l9g$K;XDj$5$l$?CM0J>e$K$J$j!"(JsetMaxCRLNumber $B%a%=%C%I$,8F$S=P$5$l$?>l9g$K;XDj$5$l$?CM0J2<$K$J$kCM$r;}$A$^$9!#(J $B$3$l$i$N%a%=%C%I$N(J 1 $B$D$KEO$5$l$?CM$,(J null $B$N>l9g!"BP1~$9$k%A%'%C%/$O9T$o$l$^$;$s!#(J
setDateAndTime $B%a%=%C%I$O!"(JdateAndTime $B$N>r7o$r@_Dj$7$^$9!#(J $B;XDj$5$l$?F|IU$O!"(JCRL $B$N(J thisUpdate $B%3%s%]!<%M%s%H$NCM$HF1$8$+!"$^$?$O$=$l$h$j8e$G!"$5$i$K(J nextUpdate $B%3%s%]!<%M%s%H$NCM$h$jA0$G$"$kI,MW$,$"$j$^$9!#(J null $B$N>l9g!"(JdateAndTime $B$N%A%'%C%/$O9T$o$l$^$;$s!#(J
setCertificateChecking $B%a%=%C%I$O!" $B$3$l$O!">r7o$G$O$"$j$^$;$s!#(J $BFCDj$N>ZL@=q$N $B3FA*Br>r7o$N8=:_$NCM$O!"3:Ev$9$k(J get $B%a%=%C%I$r;H$C$F CRL $B$r(J LDAP $B%j%]%8%H%j$+$i $BX509CertSelector $B$NNc$G@8@.$5$l$?(J CertStore $B%*%V%8%'%/%H$N(J getCRLs $B%a%=%C%I$K%;%l%/%?$rEO$7$^$9!#(J
Java Certification Path API $B$K$O!"(Jhttp://www.ietf.org/internet-drafts/draft-ietf-pkix-new-part1-08.txt $B$GDj5A$5$l$F$$$k(J PKIX $B>ZL@=q%Q%98!>Z%"%k%4%j%:%`$G;HMQ$9$k$?$a$K%b%G%k2=$5$l$?!"%"%k%4%j%:%`FCDj7?$N%/%i%9$N%;%C%H$b4^$^$l$^$9!#(J $B$3$l$O(J RFC 2459 $B$K4p$E$$$?;EMM$N(J 9 $BHVL\$N%I%i%U%H$G$9!#$3$N;EMM$,40@.$9$k$H!"(JRFC 2459 $B$O;HMQ$5$l$J$/$J$j$^$9!#(J
$B$3$N%/%i%9$O!"(JX.509 $B>ZL@=q%Q%9$N8!>Z$G?.Mj$G$-$k%"%s%+!<$H$7$F;HMQ$5$l$k!V:G$b?.Mj$G$-$k(J CA$B!W$rI=$7$^$9!#(J $B:G$b?.Mj$G$-$k(J CA $B$K$O!"(JCA $B$N8x3+80!"(JCA $B$NL>A0!"$*$h$S$3$N80$r;H$C$F8!>Z$5$l$k%Q%9$N%;%C%H$KE,MQ$5$l$k@)Ls$,4^$^$l$^$9!#(J $B$3$l$i$N%Q%i%a!<%?$O!"?.Mj$G$-$k(J $B$9$Y$F$N(J $B$3$N%/%i%9$O(J PKIX $B%/%i%9$H$7$F@bL@$5$l$F$$$^$9$,!"$=$NB>$N(J X.509 $B>ZL@=q%Q%9$N8!>Z%"%k%4%j%:%`$G;HMQ$5$l$k$3$H$b$"$j$^$9!#(J
$B
public final X509Certificate getTrustedCert()
public final String getCAName()
public final PublicKey getCAPublicKey()
public final byte[] getNameConstraints()
$B?.Mj$G$-$k%"%s%+!<$,8x3+80$HL>A0$N%Z%"$H$7$F;XDj$5$l$F$$$k>l9g!"(J CertPathParameters $B%$%s%?%U%'!<%9$r X.509 $B:G=i$N%3%s%9%H%i%/%?$r;HMQ$9$k$H!"8F$S=P$7B&$O!":G$b?.Mj$G$-$k(J CA $B$r(J PKIXParameters $B%*%V%8%'%/%H$r:n@.$9$k$H!"8F$S=P$7B&$O!"$5$^$6$^$J%Q%i%a!<%?$r@_Dj$9$k(J ($B$^$?$O8=:_$NCM$rCV$-49$($k(J) $B$3$H$,$G$-$^$9!#(J $B$3$3$G$O!"%Q%i%a!<%?$r@_Dj$9$k$?$a$N$$$/$D$+$N%a%=%C%I$K$D$$$F@bL@$7$^$9!#(J $B$=$NB>$N%a%=%C%I$N>\:Y$K$D$$$F$O!"(JPKIXParameters $B$N(J API $B%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(J
setInitialPolicies $B%a%=%C%I$O!"(JPKIX $B8!>Z%"%k%4%j%:%`$K$h$C$F;XDj$5$l$?$H$*$j$K!"=i4|%]%j%7!<<1JL;R$r@_Dj$7$^$9!#(J Set $B$NMWAG$O!"(JString $B$H$7$FI=8=$5$l$?%*%V%8%'%/%H<1JL;R(J (OID) $B$G$9!#(J setDate $B%a%=%C%I$O!"%Q%9$NBEEv@-$rH=Dj$9$k$?$a$N;~4V$r@_Dj$7$^$9!#(J date $B%Q%i%a!<%?$,@_Dj$5$l$F$$$J$$$+!"$^$?$O(J null $B$G$"$k>l9g!"8=:_$NF|IU$,;HMQ$5$l$^$9!#(J
setPolicyMappingInhibited $B%a%=%C%I$O!"%]%j%7!<%^%C%T%s%06X;_%U%i%0$NCM$r@_Dj$7$^$9!#(J $B;XDj$5$l$F$$$J$$>l9g!"%U%i%0$N%G%U%)%k%HCM$O(J false $B$G$9!#(J
setExplicitPolicyRequired $B%a%=%C%I$O!"L@<(E*$J%]%j%7! setAnyPolicyInhibited $B%a%=%C%I$O!"%]%j%7!<6X;_%U%i%0$NCM$r@_Dj$7$^$9!#(J $B;XDj$5$l$F$$$J$$>l9g!"%U%i%0$N%G%U%)%k%HCM$O(J false $B$G$9!#(J
setTargetCertConstraints $B%a%=%C%I$r;HMQ$9$k$H!"8F$S=P$7B&$O!"%?!<%2%C%H$^$?$O%(%s%I%(%s%F%#%F%#$N>ZL@=q$K@)Ls$r@_Dj$G$-$^$9!#(J $B$?$H$($P!"8F$S=P$7B&$O!"%?!<%2%C%H$N>ZL@=q$KFCDj$N setCertStores $B%a%=%C%I$r;HMQ$9$k$H!"8F$S=P$7B&$O!"(JCertPathValidator $B$N(J PKIX $B setCertPathCheckers $B%a%=%C%I$r;HMQ$9$k$H!"8F$S=P$7B&$O!" setRevocationEnabled $B%a%=%C%I$r;HMQ$9$k$H!"8F$S=P$7B&$O setPolicyQualifiersRejected $B%a%=%C%I$r;HMQ$9$k$H!"8F$S=P$7B&$O!"%]%j%7!<=$>~;R$N=hM}$rM-8z$^$?$OL58z$K@_Dj$G$-$^$9!#(J PKIXParameters $B%*%V%8%'%/%H$,@8@.$5$l$k$H!"$3$N%U%i%0$O(J true $B$K@_Dj$5$l$^$9!#(J $B$3$N@_Dj$O!"%]%j%7!<=$>~;R$r=hM}$9$k$?$a$N:G$b0lHLE*$J(J ($B$+$D4JC1$J(J) $BJ}K!$rH?1G$7$^$9!#(J $B$h$jJ#;($J%]%j%7!<$r;HMQ$9$k%"%W%j%1!<%7%g%s$G$O!"$3$N%U%i%0$r(J false $B$K@_Dj$9$kI,MW$,$"$j$^$9!#(J $B3F%Q%i%a!<%?$N8=:_$NCM$O!"3:Ev$9$k(J get $B%a%=%C%I$r;H$C$F $B$3$N%/%i%9(J (CertPathValidatorResult $B%$%s%?%U%'!<%9$r $B$3$N%/%i%9$N>\:Y$K$D$$$F$O!"(JPKIXCertPathValidatorResult $B$N(J API $B%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(J PKIX $B8!>Z%"%k%4%j%:%`$O!">ZL@=q%]%j%7!<=hM}$K4XO"$N$"$k$$$/$D$+$N=PNO$rDj5A$7$^$9!#(J $B$[$H$s$I$N%"%W%j%1!<%7%g%s$O!"$3$l$i$N=PNO$r;HMQ$9$kI,MW$O$"$j$^$;$s$,!"(JPKIX $B8!>Z$r $B$[$H$s$I$N%"%W%j%1!<%7%g%s$G$O!"M-8z$J%]%j%7!<%D%j!<$*$h$S%]%j%7!<=$>~;R$rD4$Y$kI,MW$O$"$j$^$;$s!#(J $B$3$l$i$N%/%i%9$N>\:Y$K$D$$$F$O!"(J $B$3$3$G$O!"(JPKIX $B8!>Z%"%k%4%j%:%`$r;H$C$?>ZL@=q%Q%9$N8!>Z$NNc$r $B$^$:!"CertPathValidator $B$r@8@.$7$^$9!#(J
$BTrustAnchor $B%*%V%8%'%/%H$r@8@.$7$^$9!#(J $B$3$N%*%V%8%'%/%H$O!">ZL@=q%Q%9$N8!>Z$K%"%s%+!<$H$7$F;HMQ$5$l$^$9!#(J $B$3$NNc$G$O!":G$b?.Mj$G$-$k(J CA $B$O8x3+80$*$h$SL>A0(J ($BL>A0@)Ls$OE,MQ$5$l$:!"(J $BPKIXParameters $B%*%V%8%'%/%H$r@8@.$7$^$9!#(J $B$3$l$r;H$C$F!"(JPKIX $B%"%k%4%j%:%`$G;HMQ$5$l$k%Q%i%a!<%?$r0\?"$7$^$9!#$3$NNc$G$O!"%3%s%9%H%i%/%?$K!"A0$N $BZ%"%k%4%j%:%`$K$h$j;HMQ$5$l$k@)Ls$^$?$O$=$NB>$N%Q%i%a!<%?$r;}$D!"%Q%i%a!<%?%*%V%8%'%/%H$r@8@.$7$^$9!#(J $B$3$NNc$G$O!"(JexplicitPolicyRequired $B%U%i%0$rM-8z$K$7!"=i4|%]%j%7!<(J OID $B$N%;%C%H(J ($B%;%C%H$NFbMF$O<($5$l$J$$(J) $B$r;XDj$7$^$9!#(J
$B:G8e$N $B8!>Z%"%k%4%j%:%`$,@.8y$7$?$i!"$=$N8!>Z%"%k%4%j%:%`$G@8@.$5$l$?%]%j%7!<%D%j!<$*$h$S PKIXParameters $B%/%i%9$r3HD%$9$k$3$N%/%i%9$O!"(JPKIX $B>ZL@=q%Q%9$N8!>Z%"%k%4%j%:%`$K=>$C$F8!>Z$5$l$k>ZL@=q%Q%9$r9=C[$9$k(J CertPathBuilder $B$K;HMQ$5$l$k%Q%i%a!<%?$N%;%C%H$r;XDj$7$^$9!#(J
PKIXBuilderParameters $B%*%V%8%'%/%H$O!"(JPKIX $B%"%k%4%j%:%`$r PKIX PKIXBuilderParameters $B%*%V%8%'%/%H$N@8@.$O!"(JPKIXParameters $B%*%V%8%'%/%H$N@8@.$HF1MM$G$9!#(J $B$?$@$7!"(JPKIXBuilderParameters $B%*%V%8%'%/%H$r@8@.$9$k$H$-$K!"8F$S=P$7B&$O!"%?!<%2%C%H$^$?$O%(%s%I%(%s%F%#%F%#$N>ZL@=q$K@)Ls$r;XDj$9$kI,MW$,$"$j$^$9(J$B!#(J $B$3$l$i$N@)Ls$O!"%?!<%2%C%H$N>ZL@=q$rC5$9$N$K==J,$J>pJs$r(J PKIXBuilderParameters $B%/%i%9$O!"(JPKIXParameters $B%/%i%9$G@_Dj$G$-$k$9$Y$F$N%Q%i%a!<%?$r7Q>5$7$^$9!#(J $B$5$i$K!"(JsetMaxPathLength $B%a%=%C%I$r8F$S=P$7$F!">ZL@=q%Q%9Fb$N:GBg?t$N>ZL@=q$K@)8B$r@_Dj$9$k$3$H$b$G$-$^$9!#(J
maxPathLength $B%Q%i%a!<%?$O!">ZL@=q%Q%9$KB8:_$G$-$kHs<+F0H/9T$NCf4V>ZL@=q$N:GBg?t$r;XDj$7$^$9!#(J PKIX $B%"%k%4%j%:%`$r $B%Q%9Fb$N(J CA $B>ZL@=q$K(J Basic Constraints $B3HD%5!G=$,4^$^$l$F$$$k>l9g!"7k2L$,$h$jC;$$>ZL@=q%Q%9$N;~$O!">o$K3HD%5!G=$N(J pathLenConstraint $B%3%s%]!<%M%s%H$NCM$G(J maxPathLength $B%Q%i%a!<%?$NCM$r%*!<%P!<%i%$%I$7$^$9!#(J $B$^$?!"BP1~$9$k(J $B$^$?!"(J $B$3$N%/%i%9(J (PKIXCertPathValidatorResult $B%/%i%9$r3HD%$7(J CertPathBuilderResult $B%$%s%?%U%'!<%9$r PKIXCertPathBuilderResult $B%$%s%9%?%s%9$N(J getCertPath $B%a%=%C%I$O!">o$K(J PKIX $B>ZL@=q%Q%9$N8!>Z%"%k%4%j%:%`$r;H$C$F8!>Z$5$l$?(J CertPath $B%*%V%8%'%/%H$rJV$7$^$9!#(J $BJV$5$l$?(J CertPath $B%*%V%8%'%/%H$K$O!"%Q%9$N8GDj$K;HMQ$5$l$F$$$?:G$b?.Mj$G$-$k(J CA $B>ZL@=q$,4^$^$l$^$;$s!#(J $BBe$o$j$K!"(J $B$3$N%/%i%9$N>\:Y$K$D$$$F$O!"(JPKIXCertPathBuilderResult $B$N(J API $B%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(J $B$3$l$O!"(JPKIX $B%"%k%4%j%:%`$K=>$C$F8!>Z$5$l$k>ZL@=q%Q%9$N9=C[Nc$G$9!#(J $BNc30=hM}!"$*$h$S(J $B$^$:!"CertPathBuilder $B$r@8@.$7$^$9!#(J
$B$3$N8F$S=P$7$O!"(JPKIX $B%"%k%4%j%:%`$K=>$C$F8!>Z$5$l$k%Q%9$rJV$9(J CertPathBuilder $B%*%V%8%'%/%H$r@8@.$7$^$9!#(J
$BPKIXBuilderParameters $B%*%V%8%'%/%H$r@8@.$7$^$9!#(J $B$3$l$O!"(JCertPathBuilder $B$K$h$j;HMQ$5$l$k(J PKIX $B%Q%i%a!<%?$N@8@.$K;HMQ$5$l$^$9!#(J
$BCertPathBuilder $B$,>ZL@=q$*$h$S(J CRL $B$N8!:w$K;HMQ$9$k(J CertStore $B$r;XDj$7$^$9!#(J $B$3$NNc$G$O!">ZL@=q$*$h$S(J CRL $B$r;HMQ$7$F(J Collection CertStore $B$r@8@.$7$^$9!#(J
$BZL@=q%Q%9$r9=C[$7$^$9!#(J
$B$3$3$G$O!"%f!<%6$,(J PIKX CertPathValidator $B$^$?$O(J CertPathBuilder $B PKIXCertPathChecker $B%/%i%9$O!"(JX.509 $B>ZL@=q$G(J 1 $B$D0J>e$N%A%'%C%/$r PKIX CertPathValidator $B$^$?$O(J CertPathBuilder $B $B%f!<%6$,=EMW$JHs8x3+$N3HD%>pJs$r4^$`>ZL@=q$r<1JL$7$?$$>l9g!#(J $B3HD%>pJs$OHs8x3+$J$N$G!"(JPKIX CertPathValidator $B$^$?$O(J CertPathBuilder $B $B3+H/ $B%f!<%6$,FCDj$N%]%j%7!<=$>~;R$r;}$D>ZL@=q$r5qH]$7$?$$>l9g!#(J PKIXParameters $B%/%i%9$N(J setCertPathCheckers $B%a%=%C%I$r;HMQ$9$k$H!"%f!<%6$O(J PKIXCertPathChecker $B%*%V%8%'%/%H$N(J PKIXCertPathChecker $B%/%i%9$K$O!"(Jpublic $B%3%s%9%H%i%/%?$O$"$j$^$;$s!#(J PKIXCertPathChecker $B$N%$%s%9%?%s%9$N@8@.$O $B%A%'%C%+$N%$%s%9%?%s%9$,@8@.$5$l$k$H!"(JPKIXParameters $B%/%i%9$N(J addCertPathChecker $B%a%=%C%I$r;H$C$F!"%Q%i%a!<%?$H$7$FDI2C$G$-$^$9!#(J
$B$^$?!"%A%'%C%+$N(J List $B$O!"(JPKIXParameters $B%/%i%9$N(J setCertPathCheckers $B%a%=%C%I$r;H$C$FDI2C$G$-$^$9!#(J PKIXCertPathChecker $B%/%i%9$O!"Cj>]%/%i%9$G$9!#(J $B$3$N%/%i%9$K$O(J 4 $B$D$N%a%=%C%I(J (check$B!"(JgetSupportedExtensions$B!"(Jinit$B!"$*$h$S(J isForwardCheckingSupported) $B$,$"$j!"$9$Y$F$N8GDj%5%V%/%i%9$O$3$l$i$r PKIXCertPathChecker $B$N $B$^$?!"(JPKIXCertPathChecker $B$KDs6!$5$l$k(J ($BEO$5$l$k(J) $B%5!<%S%9%W%m%P%$%@ init $B%a%=%C%I$O!"%A%'%C%+$NFbIt>uBV$r=i4|2=$7$^$9!#(J $B$9$Y$F$N>uBV$,$"$k isForwardCheckingSupported $B%a%=%C%I$O!"(JPKIXCertPathChecker $B$,=gJ}8~$N%A%'%C%/$r%5%]!<%H$9$k$+$I$&$+$r<($9(J boolean $B$rJV$7$^$9!#(J $B$9$Y$F$N(J PKIXCertPathChecker $B $B=gJ}8~$N%A%'%C%/$r%5%]!<%H$9$k$H!"%Q%9$,9=C[;~$K%A%'%C%/$5$l$k$N$G!"=gJ}8~$K9=C[$9$k(J getSupportedExtensions $B%a%=%C%I$O!"(JPKIXCertPathChecker $B $B3HD%>pJs$,=hM}$5$l$J$$>l9g!"%a%=%C%I$O(J null $B$rJV$9I,MW$,$"$j$^$9!#(J $B$9$Y$F$N $BZL@=q$KBP$9$k%A%'%C%/$r unresolvedCritExts $B%Q%i%a!<%?$K$O!"(JOID $B$N%3%l%/%7%g%s$,(J String $B$H$7$F4^$^$l$F$$$^$9!#(J $B$3$l$i$N(J OID $B$O!"$^$@>ZL@=q%Q%9$N8!>Z%"%k%4%j%:%`$G2rZL@=qFb$N=EMW$J3HD%>pJs$N%;%C%H$rI=$7$^$9!#(J check $B%a%=%C%I$N8GDj $B>ZL@=q$,3NG'$K9g3J$7$J$$>l9g!"(JCertPathValidatorException $B$,%9%m!<$5$l$kI,MW$,$"$j$^$9!#(J
PKIXCertPathChecker $B%/%i%9$O!"(JCloneable $B%$%s%?%U%'!<%9$r PKIXCertPathChecker $B%*%V%8%'%/%H$,(J Cloneable $B$G$"$kM}M3$O!"@x:_E*$J>ZL@=q%Q%9$,9T$-5M$^$C$?$j!">c32%]%$%s%H$KE~C#$7$?>l9g!"(JCertPathBuilder $B $B$3$l$O!">uBV$N$J$$(J PKIXCertPathChecker $B $B3F(J PKIXCertPathChecker $B%*%V%8%'%/%H$O!"9=C[$^$?$O8!>Z%"%k%4%j%:%`$r3+;O$9$kA0$K!"%5!<%S%9%W%m%P%$%@ $B8!>Z$9$k>ZL@=q$4$H$K!"%5!<%S%9%W%m%P%$%@ check $B$N$I$l$+$,(J CertPathValidatorException $B$r%9%m!<$9$k>l9g!"(J $BA0$N%;%/%7%g%s$G@bL@$7$?$h$&$K!" $B$3$N%;%/%7%g%s$O!">ZL@=q%Q%9%5!<%S%9 Java Certification Path API $B$G$O!"
$B$5$i$K!"4{B8$N(J $B%(%s%8%s%/%i%9$,Ds6!$9$k%"%W%j%1!<%7%g%s%$%s%?%U%'!<%9$O!"!V(JService Provider Interface (SPI)$B!W$H$7$F $B3+H/CertPath
$B%*%V%8%'%/%H$O$^$?!"(JSerializable
$B$G$9!#(J CertPath
$B%*%V%8%'%/%H$O!"D>Ns2=Cf$K!"BeBX$N(J CertPathRep
$B%*%V%8%'%/%H$K2rCertPath $B%*%V%8%'%/%H$rF1Ey$NI=8=$KD>Ns2=$G$-$^$9!#(J
CertPath
$B%*%V%8%'%/%H$O!"(JCertificateFactory
$B$r;H$C$F!"Id9f2=$5$l$?%P%$%HG[Ns$^$?$O(J Certificate
$B$N%j%9%H$+$i@8@.$5$l$^$9!#(J $B0lJ}!"(JCertPathBuilder
$B$O!":G$b?.Mj$G$-$k(J CA $B$+$iFCDj$NCertPath
$B%*%V%8%'%/%H$,:n@.$5$l$k$H!"$=$l$O(J CertPathValidator
$B$N(J validate
$B%a%=%C%I$KEO$5$l!"8!>Z$5$l$^$9!#(J $B$3$l$i$N35G0$N>\:Y$K$D$$$F$O!"B3$/%;%/%7%g%s$G@bL@$7$^$9!#(JCertificateFactory $B%/%i%9(J
Certificate
$B$*$h$S(J CRL
$B%*%V%8%'%/%H$N@8@.$K;HMQ$5$l$F$$$^$7$?!#(J J2SDK, v1.4 $B$G$O!"%/%i%9$,3HD%$5$l!">ZL@=q%Q%9(J (CertPath) $B%*%V%8%'%/%H$N@8@.$K$b;HMQ$5$l$k$h$&$K$J$j$^$7$?!#(J CertificateFactory $B$r(J CertPathBuilder $B$H:.F1$7$J$$$G$/$@$5$$!#(J CertPathBuilder ($B8e=R(J) $B$O!">ZL@=q%Q%9$,B8:_$7$J$$$H$-$K!">ZL@=q%Q%9$N8!=P$^$?$OH/8+$K;HMQ$5$l$^$9!#(J $B$=$l$KBP$7$F(J CertificateFactory $B$O!">ZL@=q%Q%9$,$9$G$K8!=P$5$l$F$$$F!"Id9f2=$5$l$?%P%$%HG[Ns$^$?$O(J Certificate
$B$NG[Ns$J$I!"0[$J$k7A<0$GB8:_$9$kFbMF$+$i8F$S=P$7B&$,(J CertPath $B%*%V%8%'%/%H$N%$%s%9%?%s%9$r@8@.$9$kI,MW$,$"$k$H$-$K;HMQ$5$l$^$9!#(J
CertificateFactory $B%*%V%8%'%/%H$N:n@.(J
CertificateFactory
$B%*%V%8%'%/%H$N:n@.$K4X$9$k>\:Y$K$D$$$F$O!"!V(JJava $B0E9f2=%"!<%-%F%/%A%c!W$N(J$B!V(JCertificateFactory$B!W(J
$B%;%/%7%g%s$r;2>H$7$F$/$@$5$$!#(J CertPath $B%*%V%8%'%/%H$N@8@.(J
$B%j%9%H(J
$B!"$^$?$O(J CertPath
$B$NId9f2=$5$l$?7A<0$r4^$`(J InputStream
$B$+$i!"(J CertPath $B%*%V%8%'%/%H$r@8@.$7$^$9!#(J CertPath
$B$HF1MM!"$=$l$>$l$N(J CertificateFactory $B$O!">ZL@=q%Q%9(J (PKCS#7 $B$J$I(J) $B$N%G%U%)%k%H$NId9f2=7A<0$r%5%]!<%H$7$^$9!#(J CertPath
$B%*%V%8%'%/%H$r@8@.$7!"$=$N%*%V%8%'%/%H$rF~NO%9%H%j!<%`$+$i(J ($B%G%U%)%k%H$NId9f2=7A<0$G(J) $BFI$_9~$^$l$?%G!<%?$r;H$C$F=i4|2=$9$k$K$O!"(JgenerateCertPath $B%a%=%C%I$r;HMQ$7$^$9!#(J
public final CertPath generateCertPath(InputStream inStream)
public final CertPath generateCertPath(InputStream inStream,
String encoding)
public final Iterator getCertPathEncodings()
public final CertPath generateCertPath(List certificates)
CertificateFactory
$B$O!"%U%!%/%H%j$HF1$87?$N(J Certificate
$B$G9=@.$5$l$?(J CertPath $B%*%V%8%'%/%H$r>o$KJV$7$^$9!#(J $B$?$H$($P!"(JX.509 $B7?$N(J CertificateFactory $B$O!"(Jjava.security.cert.X509Certificate $B$N%$%s%9%?%s%9$G$"$k>ZL@=q$G9=@.$5$l$?(J CertPath $B%*%V%8%'%/%H$rJV$7$^$9!#(J
// open an input stream to the file
FileInputStream fis = new FileInputStream(filename);
// instantiate a CertificateFactory for X.509
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// extract the certification path from
// the PKCS7 SignedData structure
CertPath cp = cf.generateCertPath(fis, "PKCS7");
// print each certificate in the path
List certs = cp.getCertificates();
Iterator i = certs.iterator();
while (i.hasNext()) {
X509Certificate cert = (X509Certificate) i.next();
System.out.println(cert);
}
$BKeyStore $B$+$i>ZL@O":?$r%U%'%C%A$7$F!"(JCertificateFactory
$B$r;H$C$F(J CertPath
$B$KJQ49$9$kJL$N%3!<%INc$r<($7$^$9!#(J
// instantiate a KeyStore with type JKS
KeyStore ks = KeyStore.getInstance("JKS");
// load the contents of the KeyStore
ks.load(new FileInputStream("./keystore"),
"password".toCharArray());
// fetch certificate chain stored with alias "sean"
Certificate[] certArray = ks.getCertificateChain("sean");
// convert chain to a List
List certList = Arrays.asList(certArray);
// instantiate a CertificateFactory for X.509
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// extract the certification path from
// the List of Certificates
CertPath cp = cf.generateCertPath(certList);
generateCertificates
$B$H$$$&L>A0$N(J CertificateFactory
$B$K!"(JCertificate
$B$N%7!<%1%s%9$r9=J82r@O$9$k4{B8$N%a%=%C%I$,$"$k$3$H$KCmL\$7$F$/$@$5$$!#(J $BJ#?t$N>ZL@=q$+$i$J$kId9f2=$G$O!"8_$$$K4XO"@-$,$J$$$H;W$o$l$k>ZL@=q$N%3%l%/%7%g%s$r2r@O$9$k>l9g$K!"(JgenerateCertificates
$B$r;HMQ$7$^$9!#(J $B$=$l0J30$NId9f2=$G$O!"(JCertPath
$B$r@8@.$7!"(JCertPathValidator
($B8e=R(J) $B$G8!>Z$9$k>l9g$K!"(JgenerateCertPath
$B$r;HMQ$7$^$9!#(J
CertPathParameters $B%$%s%?%U%'!<%9(J
CertPathParameters
$B%$%s%?%U%'!<%9$O!"(JCloneable
$B%$%s%?%U%'!<%9$r3HD%$7!"Nc30$r%9%m!<$7$J$$(J clone()
$B%a%=%C%I$rDj5A$7$^$9!#(J $B$3$N%$%s%?%U%'!<%9$N$9$Y$F$N8GDjCertPathParameters
$B%$%s%?%U%'!<%9$N8GDjPKIXParameters
$B%/%i%9$O!"(JPKIX $B>ZL@=q%Q%98!>Z%"%k%4%j%:%`$NF~NO%Q%i%a!<%?$N%;%C%H$rJ];}$9$k(J CertPathParameters
$B%$%s%?%U%'!<%9$NPKIXParameters
$B%/%i%9$r07$C$?%;%/%7%g%s$G>\$7$/@bL@$7$^$9!#(J
Certification Path $B8!>Z%/%i%9(J
CertPathValidator $B%/%i%9(J
CertPathValidator $B%*%V%8%'%/%H$N@8@.(J
public static CertPathValidator getInstance(String algorithm)
public static CertPathValidator getInstance(String algorithm,
String provider)
public static CertPathValidator getInstance(String algorithm,
Provider provider)
algorithm
$B%Q%i%a!<%?$O!">ZL@=q%Q%98!>Z%"%k%4%j%:%`(J ($B!V(JPKIX$B!W$J$I(J) $B$NL>A0$G$9!#(J $BI8=`$N(J CertPathValidator
$B%"%k%4%j%:%`L>$O!"(J$BIUO?(J A $B$N%j%9%H$K5-:\$5$l$F$$$^$9!#(J
$B>ZL@=q%Q%9$N8!>Z(J
public final CertPathValidatorResult
validate(CertPath certPath, CertPathParameters params)
throws CertPathValidatorException,
InvalidAlgorithmParameterException
CertPathParameters
$B$O!"8!>Z%"%k%4%j%:%`$K$h$C$F%5%]!<%H$5$l$?7?$G$"$kI,MW$,$"$j$^$9!#(J $B$=$&$G$J$$>l9g$O!"(JInvalidAlgorithmParameterException
$B$,%9%m!<$5$l$^$9!#(J $B$?$H$($P!"(JPKIX $B%"%k%4%j%:%`$rPKIXParameters
$B$N%$%s%9%?%s%9$G$"$k(J CertPathParameters
$B$r8!>Z$7$^$9!#(JCertPathValidatorResult $B%$%s%?%U%'!<%9(J
CertPathParameters
$B%$%s%?%U%'!<%9$HF1MM$K!"(JCertPathValidatorResult
$B$O(J Cloneable
$B$r3HD%$7!"Nc30$r%9%m!<$7$J$$(J clone()
$B%a%=%C%I$rDj5A$7$^$9!#(J $B$3$l$K$h$j!"%"%W%j%1!<%7%g%s$O!"(JCertPathValidatorResult
$B%*%V%8%'%/%H$rJ#@=$G$-$^$9!#(J
CertPathValidatorException
$B$O%(%i!<$N5-=R$H$H$b$K%9%m!<$5$l$^$9(J)$B!#(J $B0lHL$K!"(JCertPathValidatorResult
$B%$%s%?%U%'!<%9$N8GDjPKIXCertPathValidatorResult
$B%/%i%9$O!"(JPKIX $B>ZL@=q%Q%98!>Z%"%k%4%j%:%`$N=PNO%Q%i%a!<%?$N%;%C%H$rvalidate
$B%a%=%C%I$KEO$5$l$k(J CertPath
$B$*$h$S(J CertPathParameters
$B%*%V%8%'%/%H$,;vA0$K:n@.$5$l$F$$$k$3$H$rA0Ds$H$7$F$$$^$9!#$h$j>\$7$$Nc$O!"(JPKIX $B%/%i%9$r@bL@$7$?%;%/%7%g%s$K$"$j$^$9!#(J
// create CertPathValidator that implements the "PKIX" algorithm
CertPathValidator cpv = null;
try {
cpv = CertPathValidator.getInstance("PKIX");
} catch (NoSuchAlgorithmException nsae) {
System.err.println(nsae);
System.exit(1);
}
// validate certification path ("cp") with specified parameters ("params")
try {
CertPathValidatorResult cpvResult = cpv.validate(cp, params);
} catch (InvalidAlgorithmParameterException iape) {
System.err.println("validation failed: " + iape);
System.exit(1);
} catch (CertPathValidatorException cpve) {
System.err.println("validation failed: " + cpve);
System.err.println("index of certificate that caused exception: "
+ cpve.getIndex());
System.exit(1);
}
Certification Path $B9=C[%/%i%9(J
CertPathBuilder $B%/%i%9(J
CertPathBuilder $B%*%V%8%'%/%H$N@8@.(J
public static CertPathBuilder getInstance(String algorithm)
public static CertPathBuilder getInstance(String algorithm,
String provider)
public static CertPathBuilder getInstance(String algorithm,
Provider provider)
algorithm
$B%Q%i%a!<%?$O!">ZL@=q%Q%99=C[%"%k%4%j%:%`(J ($B!V(JPKIX$B!W$J$I(J) $B$NL>A0$G$9!#(J $BI8=`$N(J CertPathBuilder
$B%"%k%4%j%:%`L>$O!"(J$BIUO?(J A $B$N%j%9%H$K5-:\$5$l$F$$$^$9!#(J
$B>ZL@=q%Q%9$N9=C[(J
public final CertPathBuilderResult build(CertPathParameters params)
throws CertPathBuilderException,
InvalidAlgorithmParameterException
CertPathParameters
$B$O!"9=C[%"%k%4%j%:%`$K$h$C$F%5%]!<%H$5$l$?7?$G$"$kI,MW$,$"$j$^$9!#(J $B$=$&$G$J$$>l9g$O!"(JInvalidAlgorithmParameterException
$B$,%9%m!<$5$l$^$9!#(J
CertPathBuilderResult $B%$%s%?%U%'!<%9(J
public CertPath getCertPath()
CertPathValidatorResult
$B%$%s%?%U%'!<%9$HF1MM$K!"(JCertPathBuilderResult
$B$O(J Cloneable
$B$r3HD%$7!"Nc30$r%9%m!<$7$J$$(J clone()
$B%a%=%C%I$rDj5A$7$^$9!#(J $B$3$l$K$h$j!"%"%W%j%1!<%7%g%s$O!"(JCertPathBuilderResult
$B%*%V%8%'%/%H$rJ#@=$G$-$^$9!#(J
build
$B%a%=%C%I$KEO$5$l$k(J CertPathParameters
$B%*%V%8%'%/%H$,;vA0$K:n@.$5$l$F$$$k$3$H$rA0Ds$H$7$F$$$^$9!#$h$j>\$7$$Nc$O!"(JPKIX $B%/%i%9$r@bL@$7$?%;%/%7%g%s$K$"$j$^$9!#(J
// create CertPathBuilder that implements the "PKIX" algorithm
CertPathBuilder cpb = null;
try {
cpb = CertPathBuilder.getInstance("PKIX");
} catch (NoSuchAlgorithmException nsae) {
System.err.println(nsae);
System.exit(1);
}
// build certification path using specified parameters ("params")
try {
CertPathBuilderResult cpbResult = cpb.build(params);
CertPath cp = cpbResult.getCertPath();
System.out.println("build passed, path contents: " + cp);
} catch (InvalidAlgorithmParameterException iape) {
System.err.println("build failed: " + iape);
System.exit(1);
} catch (CertPathBuilderException cpbe) {
System.err.println("build failed: " + cpbe);
System.exit(1);
}
$B>ZL@=q(J/CRL $B%9%H%l!<%8%/%i%9(J
CertPathBuilder
$BCertStore $B%/%i%9(J
CertStore
$B$O!"Hs8x3+80$*$h$S?.Mj$G$-$k>ZL@=q$N%-%c%C%7%e$X$N%"%/%;%9$rDs6!$9$k(J java.security.KeyStore
$B%/%i%9$H$O0[$J$j!"Hs>o$KBg$-$/$J$k2DG=@-$,$"$k!"?.Mj$5$l$J$$>ZL@=q$*$h$S(J CRL $B$N%j%]%8%H%j$X$N%"%/%;%9$rDs6!$9$k$h$&$K@_7W$5$l$F$$$^$9!#(J $B$?$H$($P!"(JCertStore
$B$N(J LDAP $BCertStore
$B%*%V%8%'%/%H>e$G!"J#?t$N%9%l%C%I$,$3$l$i$N%a%=%C%I$rF1;~$K8F$S=P$7$F$b!"0-1F6A$O$"$j$^$;$s!#(J $B$3$l$K$h$j!"$?$H$($P(J CertPathBuilder
$B$O!"(JCRL $B$r8!:w$7$J$,$i!"F1;~$KB>$N>ZL@=q$r8!:w$9$k$3$H$,$G$-$^$9!#(J
CertStore $B%*%V%8%'%/%H$N@8@.(J
public static CertStore getInstance(String type,
CertStoreParameters params)
public static CertStore getInstance(String type,
CertStoreParameters params, String provider)
public static CertStore getInstance(String type,
CertStoreParameters params, Provider provider)
type
$B%Q%i%a!<%?$O!">ZL@=q%j%]%8%H%j7?(J ($B!V(JLDAP$B!W$J$I(J) $B$NL>A0$G$9!#(J $BI8=`$N(J CertStore
$B7?$O!"(J$BIUO?(J A $B$N%j%9%H$K5-:\$5$l$F$$$^$9!#(J
params
) $B$O!"%j%]%8%H%j7?$K8GM-$N$b$N$G$9!#(J $B$?$H$($P!"%5!<%P%Y!<%9$N%j%]%8%H%j$N=i4|2=%Q%i%a!<%?$O!"%5!<%P$N%[%9%HL>$*$h$S%]!<%H$r4^$_$^$9!#(J $B%Q%i%a!<%?$,$3$N(J CertStore
$B7?$K$D$$$FL58z$J>l9g!"(JInvalidAlgorithmParameterException
$B$,%9%m!<$5$l$^$9!#(J getCertStoreParameters
$B%a%=%C%I$O!"(JCertStore
$B$N=i4|2=$K;HMQ$5$l$?(J CertStoreParameters
$B$rJV$7$^$9!#(J
public final CertStoreParameters getCertStoreParameters()
$B>ZL@=q$N
public final Collection getCertificates(CertSelector selector)
throws CertStoreException
CertStoreException
$B$,%9%m!<$5$l$^$9!#(J CRL $B$N
public final Collection getCRLs(CRLSelector selector)
throws CertStoreException
CertStoreParameters $B%$%s%?%U%'!<%9(J
CertStore
$B$G;HMQ$5$l$k%Q%i%a!<%?$N%;%C%H$NF)L@$JI=8=$G$9!#(J $B$3$N%$%s%?%U%'!<%9$NCertStoreParameters
$B%$%s%?%U%'!<%9$O!"(JCloneable
$B%$%s%?%U%'!<%9$r3HD%$7!"Nc30$r%9%m!<$7$J$$(J clone
$B%a%=%C%I$rDj5A$7$^$9!#(J $B$3$N%$%s%?%U%'!<%9$N
LDAPCertStoreParameters $B%/%i%9(J
CertStore
$B$+$iCollectionCertStoreParameters $B%/%i%9(J
CertStore
$B$+$iCertSelector $B$*$h$S(J CRLSelector $B%$%s%?%U%'!<%9(J
Cloneable
$B$r3HD%$7!"Nc30$r%9%m!<$7$J$$(J clone()
$B%a%=%C%I$rDj5A$7$^$9!#(J $B$3$l$K$h$j!"%"%W%j%1!<%7%g%s$O!"$I$N(J CertSelector
$B$^$?$O(J CRLSelector
$B%*%V%8%'%/%H$bJ#@=$G$-$^$9!#(J
public boolean match(Certificate cert)
public boolean match(CRL crl)
getCertificates
$B$*$h$S(J getCRLs
$B%a%=%C%I$K%Q%i%a!<%?$H$7$FEO$5$l$^$9!#(J $B$3$l$i$N%a%=%C%I$O!";XDj$5$l$?A*Br>r7o$rK~$?$9(J CertStore
$B%j%]%8%H%j$+$i!"(JCertificate
$B$^$?$O(J CRL
$B$N(J Collection
$B$rJV$7$^$9!#(J $B$^$?!"(JCertSelector
$B$O!">ZL@=q%Q%9$N%?!<%2%C%H$^$?$O%(%s%I%(%s%F%#%F%#>ZL@=q$G!"8!>Z$N@)Ls$r;XDj$9$k$?$a$K$b;HMQ$5$l$^$9(J (PKIXParameters.setTargetCertConstraints
$B%a%=%C%I$NNc$r;2>H(J)$B!#(J
X509CertSelector $B%/%i%9(J
X509CertSelector
$B$N(J setSubject
$B%a%=%C%I$r;HMQ$9$k$H!"(JPKIX CertPathBuilder
$B$O!"ItJ,E*$K40@.$5$l$?O":?$NCf$G!"@h9T$9$k(J X509Certificate
$B$NH/9TX509Certificate
$B$r%U%#%k%?$K$+$1$k$3$H$,$G$-$^$9!#(J X509CertSelector
$B%*%V%8%'%/%H$G!"$3$N>r7o$H$H$b$K$=$NB>$N>r7o$r@_Dj$9$k$3$H$K$h$j!"(JCertPathBuilder
$B$O!"L54X78$J>ZL@=q$rGK4~$7$F!"(JCertPathParameters
$B%*%V%8%'%/%H$G;XDj$7$?MW7o$rK~$?$9(J X.509 $B>ZL@=q%Q%9$r$h$j4JC1$KC5$9$3$H$,$G$-$^$9!#(J
X509CertSelector $B%*%V%8%'%/%H$N@8@.(J
public X509CertSelector()
X509Certificate
$B$b0lCW(J)$B!#(J $BA*Br>r7o$N@_Dj(J
public void setIssuer(String issuerDN)
public void setIssuer(byte[] issuerDN)
public void setSubject(String subjectDN)
public void setSubject(byte[] subjectDN)
public void setSerialNumber(BigInteger serial)
public void setAuthorityKeyIdentifier(byte[] authorityKeyID)
public void setCertificateValid(Date certValid)
public void setKeyUsage(boolean[] keyUsage)
$BA*Br>r7o$N
$BNc(J
CertStore
$B%*%V%8%'%/%H$N=i4|2=$K;HMQ$9$k(J LDAPCertStoreParameters
$B%*%V%8%'%/%H$r@8@.$7$^$9!#(J
LDAPCertStoreParameters lcsp = new
LDAPCertStoreParameters("ldap.sun.com", 389);
CertStore cs = CertStore.getInstance("LDAP", lcsp);
X509CertSelector xcs = new X509CertSelector();
// select only unexpired certificates
xcs.setCertificateValid(new Date());
// select only certificates issued to
// 'CN=alice, O=xyz, C=us'
xcs.setSubject("CN=alice, O=xyz, C=us");
// select only end-entity certificates
xcs.setBasicConstraints(-2);
// select only certificates with a digitalSignature
// keyUsage bit set (set the first entry in the
// boolean array to true)
boolean[] keyUsage = {true};
xcs.setKeyUsage(keyUsage);
// select only certificates with a subjectAltName of
// 'alice@xyz.com' (1 is the integer value of
// an RFC822Name)
xcs.addSubjectAlternativeName(1, "alice@xyz.com");
Collection certs = cs.getCertificates(xcs);
CertPathBuilder
$B$O!"@x:_E*$J>ZL@=q$N8!=P$*$h$S%=!<%H$rMF0W$K$9$k$?$a!"F1MM$N%3!<%I$r;HMQ$7$F!"8!>Z@)Ls$^$?$O$=$NB>$N>r7o$rK~$?$5$J$$@x:_E*$J>ZL@=q$rGK4~$9$k$3$H$,$"$j$^$9!#(J
X509CRLSelector $B%/%i%9(J
X509CRLSelector
$B$N(J setDateAndTime
$B%a%=%C%I$r;HMQ$9$k$H!"(JPKIX CertPathValidator
$B$O!";X<($5$l$?;~9o$N8e$KH/9T$5$l$?!"$^$?$O;X<($5$l$?;~9o$NA0$K4|8B$,@Z$l$k(J X509CRL
$B$r%U%#%k%?$K$+$1$k$3$H$,$G$-$^$9!#(J X509CRLSelector
$B%*%V%8%'%/%H$G!"$3$N>r7o$H$H$b$K$=$NB>$N>r7o$r@_Dj$9$k$3$H$K$h$j!"(JCertPathValidator
$B$O!"L54X78$J(J CRL $B$rGK4~$7$F!">ZL@=q$,
X509CRLSelector $B%*%V%8%'%/%H$N@8@.(J
public X509CRLSelector()
X509CRL
$B$b0lCW(J)$B!#(J
$BA*Br>r7o$N@_Dj(J
public void setIssuerNames(Collection names)
public void setMinCRLNumber(BigInteger minCRL)
public void setMaxCRLNumber(BigInteger maxCRL)
public void setDateAndTime(Date dateAndTime)
public void setCertificateChecking(X509Certificate cert)
CertStore
$B$,4XO"$9$k(J CRL $B$r8!:w$9$k$N$KLrN)$D%*%W%7%g%s>pJs$G$9!#(J null $B$,;XDj$5$l$?>l9g!"$3$N$h$&$J%*%W%7%g%s>pJs$ODs6!$5$l$^$;$s!#(J $B%"%W%j%1!<%7%g%s$O!"FCDj$N>ZL@=q$NCertStore
$B$,@5$7$$(J CRL $B$r8!:w$7$FL54X78$J(J CRL $B$r%U%#%k%?$9$k$3$H$,$G$-$k$h$&!"$h$jB?$/$N>pJs$rDs6!$9$kI,MW$,$"$j$^$9!#(J $BA*Br>r7o$N
$BNc(J
X509CRLSelector xcrls = new X509CRLSelector();
// select CRLs satisfying current date and time
xcrls.setDateAndTime(new Date());
// select CRLs issued by 'O=xyz, C=us'
xcrls.addIssuerName("O=xyz, C=us");
// select only CRLs with a CRL number at least '2'
xcrls.setMinCRLNumber(new BigInteger("2"));
Collection crls = cs.getCRLs(xcrls);
PKIX $B%/%i%9(J
TrustAnchor $B%/%i%9(J
X509Certificate
$B$N7A<0$G!"$^$?$O8DJL$N%Q%i%a!<%?$H$7$F;XDj$G$-$^$9!#(J
TrustAnchor
$B%*%V%8%'%/%H$O!"ITJQ$G!"%9%l%C%I$KBP$7$F0BA4$G$9!#(J $B$D$^$j!"C10l$N(J ($B$^$?$OJ#?t$N(J) TrustAnchor
$B%*%V%8%'%/%H>e$G!"$3$N%/%i%9$KDj5A$5$l$?%a%=%C%I$rJ#?t$N%9%l%C%I$,F1;~$K8F$S=P$7$F$b!"0-1F6A$O$"$j$^$;$s!#(J TrustAnchor
$B%*%V%8%'%/%H$O!"ITJQ$+$D%9%l%C%I$KBP$7$F0BA4$G$J$1$l$P$J$i$J$$$N$G!"%"%/%;%9$ND4@0$r0U<1$9$k$3$H$J$/!"%*%V%8%'%/%H$r$5$^$6$^$J%3!<%I$KEO$9$3$H$,$G$-$^$9!#(J
TrustAnchor $B%*%V%8%'%/%H$N@8@.(J
TrustAnchor
$B%*%V%8%'%/%H$r=i4|2=$9$k$K$O!"8F$S=P$7B&$O!"?.Mj$G$-$k(J X509Certificate
$B$^$?$O8x3+80$H<1JLL>$N%Z%"$H$7$F!"!V:G$b?.Mj$G$-$k(J CA$B!W$r;XDj$9$kI,MW$,$"$j$^$9!#(J $B$^$?!"8F$S=P$7B&$O%*%W%7%g%s$G!"=i4|2=$N:]$K8!>Z%"%k%4%j%:%`$,?.Mj$G$-$k%"%s%+!<$KE,MQ$9$kL>A0$N@)Ls$r;XDj$9$k$3$H$b$G$-$^$9!#(J PKIX $B%"%k%4%j%:%`$G$O!"?.Mj$G$-$k%"%s%+!<$KE,MQ$9$kL>A0$N@)Ls$r%5%]!<%H$9$kI,MW$,$J$$$?$a!"(JPKIX CertPathValidator
$B$^$?$O(J CertPathBuilder
$B$O!"$3$N%Q%i%a!<%?$r%5%]!<%H$9$k$3$H$J$/Nc30$r%9%m!<$9$k$3$H$b$G$-$^$9!#(J $BTrustAnchor $B%*%V%8%'%/%H$r@8@.$7$^$9!#(J
public TrustAnchor(X509Certificate trustedCert,
byte[] nameConstraints)
public TrustAnchor(String caName, PublicKey pubKey,
byte[] nameConstraints)
nameConstraints
$B%Q%i%a!<%?$O!"(JNameConstraints $B3HD%5!G=$N(J ASN.1 DER $BId9f2=$r4^$`%P%$%HG[Ns$H$7$F;XDj$5$l$^$9!#(J $BL>A0$N@)Ls$,I|9f2=$G$-$J$$(J ($B@5$7$/=q<0@_Dj$5$l$J$$(J) $B>l9g!"(JIllegalArgumentException
$B$,%9%m!<$5$l$^$9!#(J
$B%Q%i%a!<%?CM$N
getTrustedCert
$B%a%=%C%I$O(J null
$B$rJV$7$^$9!#(J $BF1MM$K!"?.Mj$G$-$k%"%s%+!<$,(J X509Certificate
$B$H$7$F;XDj$5$l$F$$$k>l9g!"(JgetCAName
$B$*$h$S(J getCAPublicKey
$B%a%=%C%I$O(J null
$B$rJV$7$^$9!#(J
PKIXParameters $B%/%i%9(J
CertPath
$B%*%V%8%'%/%H$*$h$S(J PKIXParameters $B%*%V%8%'%/%H$O!"(JPKIX $B%"%k%4%j%:%`$rCertPathValidator
$B$O!"%Q%i%a!<%?$r;H$C$F!"(JPKIX $B>ZL@=q%Q%9$N8!>Z%"%k%4%j%:%`$r=i4|2=$7$^$9!#(J
PKIXParameters $B%*%V%8%'%/%H$N@8@.(J
PKIXParameters
$B%*%V%8%'%/%H$N%$%s%9%?%s%9$r@8@.$9$k$K$O!"8F$S=P$7B&$O!"(JPKIX $B8!>Z%"%k%4%j%:%`$K$h$kDj5A$K=>$C$F!V:G$b?.Mj$G$-$k(J CA$B!W$r;XDj$9$kI,MW$,$"$j$^$9!#(J $B:G$b?.Mj$G$-$k(J CA $B$O!"
public PKIXParameters(Set trustAnchors)
throws InvalidAlgorithmParameterException
public PKIXParameters(KeyStore keystore)
throws KeyStoreException, InvalidAlgorithmParameterException
TrustAnchor
$B%*%V%8%'%/%H$N(J$B%;%C%H(J
$B$H$7$F;XDj$G$-$^$9!#(J $BBe$o$j$K!"8F$S=P$7B&$O(J 2 $BHVL\$N%3%s%9%H%i%/%?$r;H$C$F!"?.Mj$G$-$k>ZL@=q$N%(%s%H%j$r4^$`(J KeyStore
$B%$%s%9%?%s%9$r;XDj$G$-$^$9!#$=$N3F%(%s%H%j$O!":G$b?.Mj$G$-$k(J CA $B$H$_$J$5$l$^$9!#(J
$B%Q%i%a!<%?CM$N@_Dj(J
initialPolicies
$B%Q%i%a!<%?$,(J null $B$G$"$k$+!"$^$?$O@_Dj$5$l$F$$$J$$>l9g!"$I$N%]%j%7!<$b
public void setInitialPolicies(Set initialPolicies)
public void setDate(Date date)
public void setPolicyMappingInhibited(boolean val)
public void setExplicitPolicyRequired(boolean val)
public void setAnyPolicyInhibited(boolean val)
CertSelector
$B%*%V%8%'%/%H$H$7$F;XDj$5$l$^$9!#(J selector
$B%Q%i%a!<%?$,(J null $B$G$"$k$+!"$^$?$O@_Dj$5$l$F$$$J$$>l9g!"%?!<%2%C%H$N>ZL@=q$K@)Ls$ODj5A$5$l$^$;$s!#(J
public void setTargetCertConstraints(CertSelector selector)
List
$B$r;XDj$G$-$^$9!#(J $B$3$l$K$h$j!"(JCRL $B$N0LCV$r;XDj$9$k3HD%2DG=$J5!9=$,Ds6!$5$l$^$9!#(J setCertStores $B%a%=%C%I$O!"(JCertStore $B%*%V%8%'%/%H$N(J List
$B$r%Q%i%a!<%?$H$7$F
public void setCertStores(List stores)
public void setCertPathCheckers(List checkers)
public void setRevocationEnabled(boolean val)
public void setPolicyQualifiersRejected(boolean qualifiersRejected)
$B%Q%i%a!<%?CM$N
PKIXCertPathValidatorResult $B%/%i%9(J
getPublicKey()
) $B$r;}$A$^$9!#(J PKIXCertPathValidatorResult $B$N%$%s%9%?%s%9$O!"(JPKIX $B%"%k%4%j%:%`$rPolicyNode $B%$%s%?%U%'!<%9$*$h$S(J PolicyQualifierInfo $B%/%i%9(J
PolicyNode
$B%$%s%?%U%'!<%9$O!"(JPKIX $B>ZL@=q%Q%98!>Z$,@5>o$KgetPolicyTree
$B%a%=%C%I$r;H$C$F!"M-8z$J%]%j%7!<%D%j!<$N%k!<%H$rPolicyNode
$B$N(J getPolicyQualifiers
$B%a%=%C%I$O!"(JPolicyQualifierInfo
$B%*%V%8%'%/%H$N(J Set
$B$rJV$7$^$9!#$=$N3F%*%V%8%'%/%H$O!"$3$N%]%j%7!<$,E,MQ$5$l$kE,@Z$J>ZL@=q$N(J Certificate Policies $B3HD%>pJs$K4^$^$l$k%]%j%7!<=$>~;R$rI=$7$^$9!#(J
PKIXParameters
$B$G%]%j%7!<4XO"$N%Q%i%a!<%?$r@_Dj$9$k$3$H$K$h$j!"%"%W%j%1!<%7%g%s$N%]%j%7!<=hM}L\I8$r PolicyNode
$B$*$h$S(J PolicyQualifierInfo
$B$N(J API $B%I%-%e%a%s%H$r;2>H$7$F$/$@$5$$!#(J
PKIX $B%"%k%4%j%:%`$r;H$C$?>ZL@=q%Q%9$N8!>ZNc(J
CertPathValidator cpv = CertPathValidator.getInstance("PKIX");
null
$B$H$7$F;XDj$5$l$k(J) $B$H$7$F;XDj$5$l$^$9!#(J
TrustAnchor anchor = new TrustAnchor("O=xyz,C=us", pubkey, null);
Set
$B$rEO$7$^$9!#(J
PKIXParameters params = new PKIXParameters(Collections.singleton(anchor));
// set other PKIX parameters here
params.setExplicitPolicyRequired(true);
params.setInitialPolicies(policyIds);
try {
PKIXCertPathValidatorResult result =
(PKIXCertPathValidatorResult) cpv.validate(certPath, params);
PolicyNode policyTree = result.getPolicyTree();
PublicKey subjectPublicKey = result.getPublicKey();
} catch (CertPathValidatorException cpve) {
System.out.println("Validation failure, cert["
+ cpve.getIndex() + "] :" + cpve.getMessage());
}
getPolicyTree
$B$*$h$S(J getPublicKey
$B%a%=%C%I$r;H$C$FPKIXBuilderParameters $B%/%i%9(J
CertPathBuilder
$B$,9=C[$5$l$?%Q%9$N8!>Z$K;HMQ$9$k5!9=$,!"
PKIXBuilderParameters $B%*%V%8%'%/%H$N@8@.(J
CertPathBuilder
$B$KDs6!$9$kI,MW$,$"$j$^$9!#(J $B@)Ls$O!"(JCertSelector
$B%*%V%8%'%/%H$H$7$F;XDj$5$l$^$9!#(J $BPKIXBuilderParameters $B%*%V%8%'%/%H$r@8@.$7$^$9!#(J
public PKIXBuilderParameters(Set trustAnchors,
CertSelector targetConstraints)
throws InvalidAlgorithmParameterException
public PKIXBuilderParameters(KeyStore keystore,
CertSelector targetConstraints)
throws KeyStoreException, InvalidAlgorithmParameterException
$B%Q%i%a!<%?CM$N
public void setMaxPathLength(int maxPathLength)
CertPathBuilder
$B$,D9$$%Q%9$r9=C[$9$k$N$K%j%=!<%9$*$h$S;~4V$rHq$d$5$J$$$h$&$K$9$k$?$a$KJXMx$G$9!#(JgetMaxPathLength
$B%a%=%C%I$K$h$j!"$3$N%Q%i%a!<%?$rPKIXParameters
$B%/%i%9$+$i7Q>5$5$l$?(J setCertStores $B%a%=%C%I$O!"DL>o!"(JCertPathBuilder $B$N(J PKIX $BPKIXCertPathBuilderResult $B%/%i%9(J
getTrustAnchor
$B%a%=%C%I$r;H$C$F!":G$b?.Mj$G$-$k(J CA $B$N(J Certificate
$B$rPKIX $B%"%k%4%j%:%`$r;H$C$?>ZL@=q%Q%9$N9=C[Nc(J
CertStore
$B$N@8@.MQ$K?.Mj$G$-$k%"%s%+!<$*$h$S>ZL@=q$N@8@.$9$k>l9g$J$I!"=|30$5$l$F$$$k>\:Y$b$"$j$^$9!#(J
CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX");
// Create parameters object, passing it a Set of
// trust anchors for anchoring the path
// and a target subject DN.
X509CertSelector targetConstraints = new X509CertSelector();
targetConstraints.setSubject("CN=alice,O=xyz,C=us");
PKIXBuilderParameters params =
new PKIXBuilderParameters(trustAnchors, targetConstraints);
CollectionCertStoreParameters ccsp =
new CollectionCertStoreParameters(certsAndCrls);
CertStore store = CertStore.getInstance("Collection", ccsp);
params.addCertStore(store);
try {
PKIXCertPathBuilderResult result =
(PKIXCertPathBuilderResult) cpb.build(params);
CertPath cp = result.getCertPath();
} catch (CertPathBuilderException cpbe) {
System.out.println("build failed: " + cpbe.getMessage());
}
CertPathBuilder
$B$O!";XDj$5$l$?%Q%i%a!<%?$rK~$?$9%Q%9$r9=C[$G$-$J$$>l9g!"(JCertPathBuilderException $B$r%9%m!<$7$^$9!#(J $B$=$&$G$J$$>l9g!"8!>Z$5$l$?>ZL@=q%Q%9$O!"(JgetCertPath
$B%a%=%C%I$r;H$C$F(JPKIXCertPathBuilderResult $B$+$i
PKIXCertPathChecker $B%/%i%9(J
List
$B$r(J PKIX CertPathValidator $B$^$?$O(J CertPathBuilder $B
PKIXCertPathChecker $B%*%V%8%'%/%H$N@8@.$*$h$S;HMQ(J
PKIXCertPathChecker checker = new OCSPChecker("ocsp.sun.com", 1321);
params.addCertPathChecker(checker);
PKIXCertPathChecker $B%*%V%8%'%/%H$N
PKIXCertPathChecker $B%*%V%8%'%/%H$N=i4|2=(J
public abstract void init(boolean forward)
$B=gJ}8~$N%A%'%C%/(J
public abstract boolean isForwardCheckingSupported()
CertPathBuilder
$B$N8zN($,8~>e$7$^$9!#(J $B$?$@$7!">uBV$N$"$k(J PKIXCertPathChecker
$B$G$O!"=gJ}8~%A%'%C%/$N%5%]!<%H$,Fq$7$$$+!"$^$?$OIT2DG=$J>l9g$,$"$j$^$9!#(J
$B%5%]!<%H$5$l$k3HD%>pJs(J
public abstract Set getSupportedExtensions()
CertPathBuilder
$B$O!"$3$N>pJs$r;H$C$F!"=gJ}8~$N%A%'%C%/$r%5%]!<%H$7$J$$(J PKIXCertPathChecker
$B$G=gJ}8~$N9=C[$r$B%A%'%C%/$N
public abstract void
check(Certificate cert, Collection unresolvedCritExts)
throws CertPathValidatorException
PKIXCertPathChecker $B$NJ#@=(J
$BNc(J
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.security.cert.PKIXCertPathChecker;
import java.security.cert.CertPathValidatorException;
public class MyChecker extends PKIXCertPathChecker {
private static Set supportedExtensions =
Collections.singleton("2.16.840.1.113730.1.1");
/*
* Initialize checker
*/
public void init(boolean forward)
throws CertPathValidatorException {
// nothing to initialize
}
public Set getSupportedExtensions() {
return supportedExtensions;
}
public boolean isForwardCheckingSupported() {
return true;
}
/*
* Check certificate for presence of Netscape's
* private extension
* with OID "2.16.840.1.113730.1.1"
*/
public void check(Certificate cert,
Collection unresolvedCritExts)
throws CertPathValidatorException
{
X509Certificate xcert = (X509Certificate) cert;
byte[] ext =
xcert.getExtensionValue("2.16.840.1.113730.1.1");
if (ext == null)
return;
//
// process private extension according to some
// rules - if check fails, throw a
// CertPathValidatorException ...
// {insert code here}
// remove extension from collection of unresolved
// extensions (if it exists)
if (unresolvedCritExts != null)
unresolvedCritExts.remove("2.16.840.1.113730.1.1");
}
}
PKIX $B%5!<%S%9%W%m%P%$%@
List checkers = params.getCertPathCheckers();
ListIterator li = checkers.listIterator();
while (li.hasNext()) {
PKIXCertPathChecker checker = (PKIXCertPathChecker) li.next();
checker.init(false);
}
ListIterator li = checkers.listIterator();
while (li.hasNext()) {
PKIXCertPathChecker checker = (PKIXCertPathChecker) li.next();
checker.check(cert, unresolvedCritExts);
}
CertPathValidator
$B
if (unresolvedCritExts != null &&
!unresolvedCritExts.isEmpty())
{
// note that a CertPathBuilder may have an enclosing
// try block to catch the exception below and continue on error
throw new CertPathValidatorException
("Unrecognized Critical Extension");
}
/* clone checkers */
List newList = new ArrayList(checkers);
ListIterator li = newList.listIterator();
while (li.hasNext()) {
PKIXCertPathChecker checker = (PKIXCertPathChecker) li.next();
li.set(checker.clone());
}
$B%5!<%S%9%W%m%P%$%@$N
CertPathValidator
- $B>ZL@=q%Q%9$N8!>Z$K;HMQ$5$l$k(J
CertPathBuilder
- $B>ZL@=q%Q%9$N9=C[$K;HMQ$5$l$k(J
CertStore
- $B%j%]%8%H%j$+$i>ZL@=q$*$h$S(J CRL $B$rCertificateFactory
$B%(%s%8%s%/%i%9$O!"(JJ2SDK, v1.4 $B$G3HD%$5$l$F$*$j!">ZL@=q%Q%9$N@8@.$r%5%]!<%H$7$^$9!#(J
$B%W%m%P%$%@$N
$B%9%F%C%W(J 3: $B%W%m%P%$%@$N%5%V%/%i%9$G$"$k!V%^%9%?!<%/%i%9!W$N5-=R(J
$BZL@=q%Q%9%5!<%S%9MQ$KDj5A$9$kI,MW$,$"$j$^$9!#>ZL@=q%Q%9%5!<%S%9$G$O!"%"%k%4%j%:%`L>$O(J algName $B$KCV$-49$($i$l!"(Jcertstore $B7?$O(J storeType $B$KCV$-49$($i$l$^$9!#(J
CertPathValidator.algName
CertPathBuilder.algName
CertStore.storeType
algName $B$*$h$S(J storeType $B$KDj5A$5$l$kI8=`L>$K$D$$$F$O!"(J$BIUO?(J A $B$r;2>H$7$F$/$@$5$$!#(J $B3F%W%m%Q%F%#$NCM$O!";XDj$5$l$?%"%k%4%j%:%`$r $B$5$i$K!"%5!<%S%9B0@-$r>ZL@=q%Q%9%5!<%S%9MQ$KDj5A$9$k$3$H$,$G$-$^$9!#(J $B$3$l$i$NB0@-$O!"%5!<%S%9%W%m%P%$%@$rA*Br$9$k$?$a$N%U%#%k%?$H$7$F;HMQ$G$-$^$9!#(J $BI8=`$N%5!<%S%9B0@-$NDj5A$K$D$$$F$O!"IUO?(J A $B$r;2>H$7$F$/$@$5$$!#(J $B$?$H$($P!"%W%m%P%$%@$,(J $B%9%F%C%W(J 8: $B%W%m%P%$%@$*$h$S$=$N%5%]!<%HBP>]%5!<%S%9$N%I%-%e%a%s%H2=(J $B>ZL@=q%Q%9%5!<%S%9%W%m%P%$%@$O!"(JSPI $B$4$H$KpJs$r%I%-%e%a%s%H2=$9$kI,MW$,$"$j$^$9!#(J $B>ZL@=q%U%!%/%H%j(J $B%W%m%P%$%@$O!"%U%!%/%H%j$,:n@.$G$-$k>ZL@=q%Q%9$N $B%W%m%P%$%@$O!"%5%]!<%H$5$l$F$$$kId9f2=7A<0$N%j%9%H$r%I%-%e%a%s%H2=$9$kI,MW$,$"$j$^$9!#(J $B%/%i%$%"%s%H$O(J getCertPathEncodings $B%a%=%C%I$r8F$S=P$7$FId9f2=7A<0$rMW5a$G$-$k$N$G!"5;=QE*$K$O$3$N:n6H$OI,MW$"$j$^$;$s!#(J $B$?$@$7!"%I%-%e%a%s%H$K$O3FId9f2=7A<0$K$D$$$F>\:Y$K5-=R$7!"3:Ev$9$k>l9g$O!"I8=`$K$D$$$F8@5Z$9$kI,MW$,$"$j$^$9!#(J
$B>ZL@=q%Q%9$N8!>Z(J
$B%W%m%P%$%@$O!"8!>Z$9$k>ZL@=q%Q%9$N
$B>ZL@=q%Q%9$N9=C[(J
$B%W%m%P%$%@$O!":n@.$9$k>ZL@=q%Q%9$N
$B$9$Y$F$N(J CertPathBuilder $B $B>ZL@=q(J/CRL $B%9%H%"(J
$B%W%m%P%$%@$O!"(JCertStore $B$K$h$C$F $B$^$?!"%W%m%P%$%@$O!"(JCertStore $B $B put("CertPathValidator.PKIX", "sun.security.provider.certpath.PKIXCertPathValidator")
ValidationAlgorithm
$B%5!<%S%9B0@-$r(J PKIX $B8!>Z%"%k%4%j%:%`$rDj5A$9$k;EMM$^$?$O(J RFC $B$NL>A0$K@_Dj$7$F$$$k>l9g$,$"$j$^$9!#(J
put("CertPathValidator.PKIX ValidationAlgorithm", "RFC2459");
$B:G8e$K!"
$B$3$3$G$O!">ZL@=q%Q%9%5!<%S%9 $B>ZL@=q%Q%9$N8!>Z$*$h$S=pL>%"%k%4%j%:%`(J
CertPathValidator $B $B>ZL@=q%Q%9$N9=C[$*$h$S>ZL@=q%U%!%/%H%j(J
CertPathBuilder $B CertStores $B$*$h$S>ZL@=q%U%!%/%H%j(J
CertStore $B Certification Path API $B$K$O!"%Q%i%a!<%?$NF)2aE*$J(J$B;EMM$rI=$9(J CertPathParameters $B$*$h$S(J CertStoreParameters $B$H$$$&(J 2 $B$D$N%$%s%?%U%'!<%9$,4^$^$l$F$$$^$9!#(J
CertPathParameters $B%$%s%?%U%'!<%9$N(J 2 $B$D$N CertStoreParameters $B%$%s%?%U%'!<%9$K$O!"(JLDAPCertStoreParameters $B$*$h$S(J CollectionCertStoreParameters $B%/%i%9$H$$$&(J 2 $B$D$N Certification Path API $B$K$O!"7k2L$NF)2aE*$J(J$B;EMM$rI=$9(J CertPathValidatorResult $B$*$h$S(J CertPathBuilderResult $B$H$$$&(J 2 $B$D$N%$%s%?%U%'!<%9$,4^$^$l$^$9!#(J
$B3F%$%s%?%U%'!<%9$N CertPathValidator $B$^$?$O(J CertPathBuilder $B$N(JPKIX $B $BA0=R$N$h$&$K!"(JPKIX Java Certification Path API $B$G$O!">ZL@=q%Q%9$N8!>Z%"%k%4%j%:%`!"Id9f2=$*$h$S>ZL@=q%9%H%l!<%8%?%$%W$K$D$$$F!"I8=`L>$N%;%C%H$rI,MW$H$7!"$=$l$i$r;HMQ$7$^$9!#(J $B$3$N(J API $B$G$O!"!V(JJava $B0E9f2=%"!<%-%F%/%A%c(J API $B;EMM$*$h$S%j%U%!%l%s%9!W$N(J$BIUO?(J A $B$GDj5A$5$l$F$$$kI8=`L>$N%j%9%H$rJdB-$7$^$9!#(J $B%"%k%4%j%:%`L>$O!"Hf3S$N:]$KBgJ8;z$H>.J8;z$,6hJL$5$l$J$$$3$H$KCm0U$7$F$/$@$5$$!#(J
$B%5!<%S%9%W%m%P%$%@$O!"0J2<$K=R$Y$i$l$F$$$J$$FH<+$N%"%k%4%j%:%`$^$?$OHsI8=`$N%"%k%4%j%:%`$K?7$7$$L>A0$rDj5A$9$k$3$H$b$G$-$^$9!#(J $B$?$@$7!"L>A0$N>WFM$rKI;_$9$k$?$a!"%W%m%P%$%@$NAH?%$N%$%s%?!<%M%C%H%I%a%$%sL>$r5U$K$7$?$b$N(J ( $B$3$N%;%/%7%g%s$N%"%k%4%j%:%`L>$O!"(JCertPathValidator $B$N%$%s%9%?%s%9$N@8@.;~$K;XDj$G$-$^$9!#(J
PKIX: ValidationAlgorithm $B%5!<%S%9B0@-(J$B$GDj5A$5$l$F$$$k(J PKIX $B>ZL@=q%Q%9$N8!>Z%"%k%4%j%:%`!#(J
$B$3$N%;%/%7%g%s$N%"%k%4%j%:%`L>$O!"(JCertPathBuilder $B$N%$%s%9%?%s%9$N@8@.;~$K;XDj$G$-$^$9!#(J
PKIX: ValidationAlgorithm $B%5!<%S%9B0@-(J$B$GDj5A$5$l$F$$$k(J PKIX $B>ZL@=q%Q%9$N8!>Z%"%k%4%j%:%`!#(J $B$3$N%"%k%4%j%:%`$r $BCertStore $B$N%$%s%9%?%s%9$N@8@.;~$K;XDj$G$-$^$9!#(J
LDAP: LDAPSchema $B%5!<%S%9B0@-(J$B$KDj5A$5$l$F$$$k%9%-!<%^$r;H$C$F!">ZL@=q$*$h$S(J CRL $B$r(J LDAP $B%G%#%l%/%H%j$+$i%U%'%C%A$9$k(J CertStore $B $BCertPath $B$N(J getEncoded $B%a%=%C%I$^$?$O(J CertificateFactory $B$N(J generateCertPath(InputStream inStream, String encoding) $B%a%=%C%I$KEO$5$l$^$9!#(J $B%7!<%1%s%9Fb$G!">ZL@=q$O!":G=i$N>ZL@=q$N ValidationAlgorithm: LDAPSchema: LDAP CertStore $B$N $B$3$N $B $B%Q%9$N8!>Z$O!"(J $B$3$N $B>ZL@=q$*$h$S(J CRL $B$O!"FCDj$N=g=x$GJV$5$l$k$3$H$O$J$/!"J#@=$r4^$_$^$;$s!#(J
$B
$B
$BH/9T $B$I$N>l9g$b!">ZL@=q$O8!:w7k2L$N%3%l%/%7%g%s$KDI2C$9$kA0$K!"(J $B>e5-$K;XDj$7$?>r7o$N$I$l$bEv$F$O$^$i$J$$>l9g!"Ds6!$5$l$?>r7o$r;H$C$F>ZL@=q$r%U%'%C%A$G$-$J$$$3$H$r<($9Nc30$,%9%m!<$5$l$^$9!#(J 1 $B$D0J>e$N>r7o$,E,MQ$5$l$?$H$7$F$b!"%G%#%l%/%H%j$K>ZL@=q$,$J$$>l9g!"JV$5$l$k(J Collection $B$O6u$N$^$^$G$"$k$3$H$KCm0U$7$F$/$@$5$$!#(J
$B $B$N%j%9%H$KBP$7$F7+$jJV$7=hM}$,9T$o$l$^$9!#(J $B $B$9$Y$F$N(J CRL $B$O8!:w7k2L$N%3%l%/%7%g%s$KDI2C$9$kA0$K!"(J $BA*Br4p=`$rK~$?$9(J CRL $B$,8+$D$+$i$J$$>l9g!"6u$N(J Collection $B$,JV$5$l$^$9!#(J
Copyright © 1998-2002, Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. All Rights Reserved.
$B>ZL@=q%Q%9%Q%i%a!<%?;EMM$N%$%s%?%U%'!<%9(J
CertPathParameters
$B$*$h$S(J CertStoreParameters
$B%$%s%?%U%'!<%9$O!"$=$l$>$lCertStoreParameters
$B$NCertStore.getInstance
$B$O;XDj$5$l$?(J CertStoreParamter
$B$NJ#@=$r:n@.$9$k$N$G!"%"%W%j%1!<%7%g%s$O%,%Y!<%8%3%l%/%7%g%s5!9=$rBT$D$N$G$O$J$/!"(Jclone
$B$N@u$$%3%T!<$r;H$C$FFCDj$N(J CertStore
$B=i4|2=%Q%i%a!<%?$N%j%=!<%9$X$N;2>H$r0];}$7!"8e$G%j%j!<%9$9$k$3$H$,$G$-$^$9!#(J CertStore
$B$,$=$NB>$N%9%l%C%I$K$h$C$F;HMQ$5$l$F$$$k$3$H$,$"$k$N$G!"$3$NA`:n$O:Y?4$NCm0U$rJ'$C$F9T$&I,MW$,$"$j$^$9!#(J
$B>ZL@=q%Q%9$N7k2L$N;EMM%$%s%?%U%'!<%9(J
$B>ZL@=q%Q%9$NNc30%/%i%9(J
Certification Path API $B$K$O!"%(%i!<$r=hM}$9$kNc30%/%i%9$N%;%C%H$,4^$^$l$F$$$^$9!#(J CertPathValidatorException$B!"(JCertPathBuilderException$B!"$*$h$S(J CertStoreException
$B$O!"(JGeneralSecurityException $B$N%5%V%/%i%9$G$9!#(J
$B%5!<%S%9%W%m%P%$%@
$B$I$A$i$N>l9g$b!"?7$7$$Nc30%/%i%9$O%W%m%P%$%@%/%i%9$H$H$b$K(J ($B$?$H$($P!"%W%m%P%$%@(J JAR $B%U%!%$%k$N0lIt$H$7$F(J) $BDs6!$5$l$kI,MW$,$"$j$^$9!#(J $B3F%W%m%P%$%@$O!"Nc30%5%V%/%i%9$r%I%-%e%a%s%H2=$9$kI,MW$,$"$j$^$9!#(J
TrustAnchor $B%/%i%9(J
CertPathValidator
$B$^$?$O(J CertPathBuilder
$B$O!"(JTrustAnchor
$B%/%i%9$N(J nameConstraints
$B%Q%i%a!<%?$r%5%]!<%H$9$kI,MW$O$"$j$^$;$s!#(J $BInvalidAlgorithmParameterException
$B$r%9%m!<$9$kI,MW$,$"$j$^$9!#(J
$BIUO?(J A: $BI8=`L>(J
com.sun.MyCertPathValidator
$B$J$I(J) $B$rL>A0$NA0$KIU$1$k$3$H$r$*4+$a$7$^$9!#(J
CertPathValidator $B%"%k%4%j%:%`(J
CertPathBuilder $B%"%k%4%j%:%`(J
CertStore $B$N7?(J
CertPath $BId9f2=(J
PKCS7: $B>ZL@=q$N=EMW$J%U%#!<%k%I$@$1$r;}$D(J PKCS#7 SignedData $B%*%V%8%'%/%H!#(J $BFC$K!"=pL>$*$h$SFbMF$OL5;k$5$l$^$9!#(J $B>ZL@=q$,B8:_$7$J$$>l9g!"D9$5$,(J 0 $B$N(J CertPath $B$G$"$k$H$_$J$5$l$^$9!#(J $B7Y9p(J: PKCS#7 $B$G$O!">ZL@=q%Q%9Fb$N>ZL@=q$N=g=x$O0];}$5$l$^$;$s!#(J $B$7$?$,$C$F!"(J
CertPath
$B$,(J PKCS#7 $B$GId9f2=$5$l$?%P%$%H$KJQ49$5$l$F$+$i!"85$KLa$5$l$?>l9g!">ZL@=q$N=g=x$,JQ99$5$l$?$j!"(JCertPath
$B$,L58z$K$J$k>l9g$,$"$j$^$9!#(J $B%f!<%6$O!"$3$NF0:n$rCN$C$F$*$/I,MW$,$"$j$^$9!#(J
PkiPath: ASN 1 DER $B$GId9f2=$5$l$?>ZL@=q$N%7!<%1%s%9!#PkiPath ::= SEQUENCE OF Certificate
PkiPath
$BFb$N3F>ZL@=q$O0l0U$G$9!#(J $B$I$N>ZL@=q$b!"(JPkiPath
$BFb$N(J Certificate
$B$NCM$K(J 1 $B2s$:$D8=$l$^$9!#(J PkiPath
$B7A<0$O!"(JX.509 $B$KBP$9$k7g4Y%l%]!<%H(J 279 (2000) $BFb$GDj5A$5$l$F$*$j!"(JX.509 $B$N(J Draft Technical Corrigenda 2$B!"Bh(J 4 $BHG(J (2000) $B$KAH$_9~$^$l$F$$$^$9(J
(ftp://ftp.bull.com/pub/OSIdirectory/DefectResolution/DraftTechnicalCorrigenda/8-DTC2%284th%29.pdf)$B!#(J
$B%5!<%S%9B0@-(J
CertPathBuilder
$B$^$?$O(J CertPathValidator
$B$,%5%]!<%H$9$k>ZL@=q%Q%98!>Z%"%k%4%j%:%`$NSecurity.getProviders
$B%a%=%C%I$NA*Br4p=`$H$7$F;XDj$7$?>l9g!"(JString.equalsIgnoreCase
$B$K$h$jCM$NHf3S$,9T$o$l$^$9!#(J CertPathBuilder $B$*$h$S(J CertPathValidator $B$N$9$Y$F$N(J PKIX $B
$BIUO?(J B: $B!V(JSUN$B!W%W%m%P%$%@(J
J2SDK $B$GDs6!$5$l$F$$$k!V(JSUN$B!W%W%m%P%$%@$O!"%P!<%8%g%s(J 1.4 $BMQ$K3HD%$5$l!"
CertificateFactory
: X.509 CertPath
$B7?$*$h$S(J PKCS7 PkiPath $BId9f2=(J
CertPathValidator
: PKIX $B%"%k%4%j%:%`(J
CertPathBuilder
: PKIX $B%"%k%4%j%:%`(J
CertStore
: LDAP $B$*$h$S(J Collection CertStore
$B7?(J
$B$3$l$i$N%5!<%S%9%W%m%P%$%@%$%s%?%U%'!<%9$NCertificateFactory
CertificateFactory
$B%(%s%8%s%/%i%9MQ$N!V(JSUN$B!W%W%m%P%$%@$O!"(JX.509 CertPath
$B%*%V%8%'%/%H$N@8@.$r%5%]!<%H$9$k$?$a$K3HD%$5$l$^$7$?!#(J PKCS7 $B$*$h$S(J PkiPath $BId9f2=$,%5%]!<%H$5$l$^$9!#(J PKCS#7 $BCertPath
$B$N>ZL@=q$O!"=gJ}8~$K(J ($B%?!<%2%C%H$+$i?.Mj$G$-$k%"%s%+!<$X(J) $B=g=xIU$1$5$l$^$9!#(J CertPath
$B$N3F>ZL@=q$O(J java.security.cert.X509Certificate
$B7?$G!"%P!<%8%g%s(J 1$B!"(J2$B!"$*$h$S(J 3 $B$,%5%]!<%H$5$l$F$$$^$9!#(J
CertPathValidator
$B!V(JSUN$B!W%W%m%P%$%@$O!"(JCertPathValidator
$B%(%s%8%s%/%i%9$N(J PKIX $BPKIXParameters
$B%*%V%8%'%/%H$K(J CRL $B$r4^$`(J 1 $B$D0J>e$N(J CertStore
$B$r;XDj$9$kI,MW$,$"$j$^$9!#(J CertPathValidator
$B$O!"(JCertPath
$B$N>ZL@=q$4$H$K!";XDj$5$l$?(J CertStore
$B$r8!:w$7$FE,@Z$J(J CRL $B$rC5$7$^$9!#(J OCSP (RFC 2560) $B$O!"8=:_!"AH$_9~$_$NnameConstraints
$B%Q%i%a!<%?$r%5%]!<%H$7$^$;$s!#$7$?$,$C$F!"$3$N%Q%i%a!<%?$,;XDj$5$l$k$H!"(Jvalidate
$B%a%=%C%I$K$h$j(J InvalidAlgorithmParameterException
$B$,%9%m!<$5$l$^$9!#(J
CertPathBuilder
$B!V(JSUN$B!W%W%m%P%$%@$O!"(JCertPathBuilder
$B%(%s%8%s%/%i%9$N(J PKIX $BCertPath
$B$O!"(JPKIX $B>ZL@=q$H(J CRL $B%W%m%U%!%$%k(J $BMQ$N(J Internet-Draft $BBh(J 9 $BHG$GDj5A$5$l$F$$$k(J PKIX $B%"%k%4%j%:%`$K=>$C$F8!>Z$5$l$^$9!#(J $B$3$N%I%i%U%H$,40@.$9$k$H!"(JRFC 2459 $B$O;HMQ$5$l$J$/$J$j$^$9!#(J $B$3$NPKIXBuilderParameters
$B%*%V%8%'%/%H$N(J targetConstraints
$B%Q%i%a!<%?$,(J X509CertSelector
$B$N%$%s%9%?%s%9$G$J$1$l$P$J$j$^$;$s!#(J $B$=$&$G$J$$>l9g!"(Jbuild
$B%a%=%C%I$K$h$j(J InvalidAlgorithmParameterException
$B$,%9%m!<$5$l$^$9!#(J
PKIXBuilderParameters
maxPathLength
$B%Q%i%a!<%?$rD6$($F$$$k$HH=Dj$5$l$k$H!"A0$N>uBV$KLa$C$FBeBX%Q%9$r;n$_$^$9!#(J
CertPathValidator
$B
java.security.debug
$B%W%m%Q%F%#$r(J certpath
$B$K@_Dj$9$k$HM-8z$K$J$j$^$9!#(J $BNc$r<($7$^$9!#(J
java -Djava.security.debug=certpath BuildCertPath
$B$3$&$9$k$H!"DI2C$N%G%P%C%0>pJs$,I8=`%(%i!<$K=PNO$5$l$^$9!#(J
CertStore
$B!V(JSUN$B!W%W%m%P%$%@$O!"(JCertStore
$B%(%s%8%s%/%i%9$N(J 2 $B$D$NCollection CertStore
Collection CertStore
$Bjava.security.cert.CRL
$B$N%$%s%9%?%s%9$G$"$k$9$Y$F$N%*%V%8%'%/%H$rJ];}$G$-$^$9!#(J
LDAP CertStore
LDAP CertStore
$BX509CertSelector.match()
$B$r;H$C$F%A%'%C%/$5$l$^$9!#(J
setCertificateChecking
$B!"(JaddIssuerName
$B!"$^$?$O(J setIssuerNames
$B%a%=%C%I$G;XDj$5$l$?H/9TsetCertificateChecking
$B%a%=%C%I$K>ZL@=q$,;XDj$5$l$F$$$k>l9g!"$=$N>ZL@=q$NH/9TaddIssuerName
$B$^$?$O(J setIssuerNames
$B%a%=%C%I$G;XDj$5$l$?H/9TX509CRLSelector.match()
$B$r;H$C$F%A%'%C%/$5$l$^$9!#(J