<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert Zchn";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLVorformatiertZchn
        {mso-style-name:"HTML Vorformatiert Zchn";
        mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert";
        font-family:"Courier New";}
span.gmail-pl-k
        {mso-style-name:gmail-pl-k;}
span.gmail-pl-en
        {mso-style-name:gmail-pl-en;}
span.gmail-pl-smi
        {mso-style-name:gmail-pl-smi;}
span.gmail-pl-c1
        {mso-style-name:gmail-pl-c1;}
span.gmail-pl-s
        {mso-style-name:gmail-pl-s;}
span.gmail-pl-pds
        {mso-style-name:gmail-pl-pds;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=DE link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Thats very cool! </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Maybe this is the right thread to discuss the future of the sun.security.x509 package.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Currently your implementation will only work if that package is exported. The Depth of implementation of those classes however would be a nice Addition to an (optional?) API.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Gruss</p><p class=MsoNormal>Bernd</p><p class=MsoNormal>-- <br>http://bernd.eckenfels.net</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>Von: </b><a href="mailto:will.sargent@gmail.com">Will Sargent</a><br><b>Gesendet: </b>Montag, 15. Oktober 2018 22:13<br><b>An: </b><a href="mailto:security-dev@openjdk.java.net">security-dev@openjdk.java.net</a><br><b>Betreff: </b>Fluent builder API for JCA/JSSE classes</p></div><p class=MsoNormal><o:p> </o:p></p><div><div><div><p class=MsoNormal>Hi all,</p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I've released a library that adds a fluent builder API library for JCA factory and generator classes. The primary use of this package is to set up test X.509 certificates, private keys and trust stores, but it's also helpful for picking out good defaults and working on a higher level than the raw JCA classes themselves.  It's available at <a href="https://github.com/tersesystems/securitybuilder">https://github.com/tersesystems/securitybuilder</a></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Example below of building up an SSLContext from scratch:</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><pre style='background:#F6F8FA;box-sizing:border-box;border-radius:3px;overflow:auto'><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>public</span></span><span style='font-family:Consolas;color:#24292E'> </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>class</span></span><span style='font-family:Consolas;color:#24292E'> </span><span class=gmail-pl-en><span style='font-family:Consolas;color:#6F42C1'>X509CertificateCreatorTest</span></span><span style='font-family:Consolas;color:#24292E'> {<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>  </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>@Test</span></span><span style='font-family:Consolas;color:#24292E'><o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>  </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>public</span></span><span style='font-family:Consolas;color:#24292E'> </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>void</span></span><span style='font-family:Consolas;color:#24292E'> </span><span class=gmail-pl-en><span style='font-family:Consolas;color:#6F42C1'>testFunctionalStyle</span></span><span style='font-family:Consolas;color:#24292E'>() </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>throws</span></span><span style='font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>Exception</span> {<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>FinalStage<</span></span><span class=gmail-pl-smi><span style='font-family:Consolas;color:#24292E'>RSAKeyPair</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>></span></span><span style='font-family:Consolas;color:#24292E'> keyPairCreator </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>KeyPairCreator</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>creator()</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>withRSA()</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>withKeySize(</span><span class=gmail-pl-c1><span style='font-family:Consolas;color:#005CC5'>2048</span></span><span style='font-family:Consolas;color:#24292E'>);<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    <span class=gmail-pl-smi>RSAKeyPair</span> rootKeyPair </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'> keyPairCreator</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>create();<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    <span class=gmail-pl-smi>RSAKeyPair</span> intermediateKeyPair </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'> keyPairCreator</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>create();<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    <span class=gmail-pl-smi>RSAKeyPair</span> eePair </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'> keyPairCreator</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>create();<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'><o:p> </o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>IssuerStage<</span></span><span class=gmail-pl-smi><span style='font-family:Consolas;color:#24292E'>RSAPrivateKey</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>></span></span><span style='font-family:Consolas;color:#24292E'> creator </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'><o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>        <span class=gmail-pl-smi>X509CertificateCreator</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>creator()</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>withSHA256withRSA()</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>withDuration(<span class=gmail-pl-smi>Duration</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>ofDays(</span><span class=gmail-pl-c1><span style='font-family:Consolas;color:#005CC5'>365</span></span><span style='font-family:Consolas;color:#24292E'>));<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'><o:p> </o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    <span class=gmail-pl-smi>String</span> issuer </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'> </span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span class=gmail-pl-s><span style='font-family:Consolas;color:#032F62'>CN=letsencrypt.derp,O=Root CA</span></span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span style='font-family:Consolas;color:#24292E'>;<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>X509Certificate</span></span><span style='font-family:Consolas;color:#24292E'>[] chain </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'><o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>        creator<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>            .withRootCA(issuer, rootKeyPair, </span><span class=gmail-pl-c1><span style='font-family:Consolas;color:#005CC5'>2</span></span><span style='font-family:Consolas;color:#24292E'>)<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>            .chain(<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                rootKeyPair</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>getPrivate(),<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                rootCreator </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>-></span></span><span style='font-family:Consolas;color:#24292E'><o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                    rootCreator<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                        .withPublicKey(intermediateKeyPair</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>getPublic())<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                        .withSubject(</span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span class=gmail-pl-s><span style='font-family:Consolas;color:#032F62'>OU=intermediate CA</span></span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span style='font-family:Consolas;color:#24292E'>)<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                        .withCertificateAuthorityExtensions(</span><span class=gmail-pl-c1><span style='font-family:Consolas;color:#005CC5'>0</span></span><span style='font-family:Consolas;color:#24292E'>)<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                        .chain(<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                            intermediateKeyPair</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>getPrivate(),<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                            intCreator </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>-></span></span><span style='font-family:Consolas;color:#24292E'><o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                                intCreator<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                                    .withPublicKey(eePair</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>getPublic())<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                                    .withSubject(</span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span class=gmail-pl-s><span style='font-family:Consolas;color:#032F62'>CN=<a href="http://tersesystems.com">tersesystems.com</a></span></span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span style='font-family:Consolas;color:#24292E'>)<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                                    .withEndEntityExtensions()<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                                    .chain()))<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>            .create();<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'><o:p> </o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    <span class=gmail-pl-smi>PrivateKeyStore</span> privateKeyStore </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'><o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>        <span class=gmail-pl-smi>PrivateKeyStore</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>create(</span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span class=gmail-pl-s><span style='font-family:Consolas;color:#032F62'><a href="http://tersesystems.com">tersesystems.com</a></span></span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span style='font-family:Consolas;color:#24292E'>, eePair</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>getPrivate(), chain);<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    <span class=gmail-pl-smi>TrustStore</span> trustStore </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>TrustStore</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>create(singletonList(chain[</span><span class=gmail-pl-c1><span style='font-family:Consolas;color:#005CC5'>2</span></span><span style='font-family:Consolas;color:#24292E'>]), cert </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>-></span></span><span style='font-family:Consolas;color:#24292E'> </span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span class=gmail-pl-s><span style='font-family:Consolas;color:#032F62'>letsencrypt.derp</span></span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span style='font-family:Consolas;color:#24292E'>);<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'><o:p> </o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>try</span></span><span style='font-family:Consolas;color:#24292E'> {<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>      </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>final</span></span><span style='font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>PKIXCertPathValidatorResult</span> result </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>CertificateChainValidator</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>validator()<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>          .withAnchor(</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>new</span></span><span style='font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>TrustAnchor</span>(issuer, rootKeyPair</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>getPublic(), </span><span class=gmail-pl-c1><span style='font-family:Consolas;color:#005CC5'>null</span></span><span style='font-family:Consolas;color:#24292E'>))<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>          .withCertificates(chain)<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>          .validate();<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>      </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>final</span></span><span style='font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>PublicKey</span> subjectPublicKey </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'> result</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>getPublicKey();<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>      assertThat(subjectPublicKey)</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>isEqualTo(eePair</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>getPublic());<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    } </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>catch</span></span><span style='font-family:Consolas;color:#24292E'> (</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>final</span></span><span style='font-family:Consolas;color:#24292E'> <span class=gmail-pl-smi>CertPathValidatorException</span> cpve) {<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>      fail(</span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span class=gmail-pl-s><span style='font-family:Consolas;color:#032F62'>Cannot test exception</span></span><span class=gmail-pl-pds><span style='font-family:Consolas;color:#032F62'>"</span></span><span style='font-family:Consolas;color:#24292E'>, cpve);<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    }<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'><o:p> </o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    <span class=gmail-pl-smi>SSLContext</span> sslContext </span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>=</span></span><span style='font-family:Consolas;color:#24292E'><o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>        <span class=gmail-pl-smi>SSLContextBuilder</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>builder()<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>            .withTLS()<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>            .withKeyManager(<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                <span class=gmail-pl-smi>KeyManagerBuilder</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>builder()<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                    .withSunX509()<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                    .withPrivateKeyStore(privateKeyStore)<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                    .build())<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>            .withTrustManager(<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                <span class=gmail-pl-smi>TrustManagerBuilder</span></span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>builder()<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                    .withDefaultAlgorithm()<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                    .withTrustStore(trustStore)<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>                    .build())<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>            .build();<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>    assertThat(sslContext)</span><span class=gmail-pl-k><span style='font-family:Consolas;color:#D73A49'>.</span></span><span style='font-family:Consolas;color:#24292E'>isNotNull();<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>  }<o:p></o:p></span></pre><pre style='background:#F6F8FA'><span style='font-family:Consolas;color:#24292E'>}<o:p></o:p></span></pre><div><p class=MsoNormal><o:p> </o:p></p></div></div></div></div></div><p class=MsoNormal>Thanks,<br>Will.</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>