<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/622b8aa215da9b288bef99b7/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b8aa215da9b288bef99b7/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">Dev<span class="_ _0"></span>eloper<span class="_ _0"></span>'s Guide <span class="_ _1"> </span> <span class="_ _2"> </span>Matr<span class="_ _0"></span>ixSS<span class="_ _0"></span>L 1<span class="_ _3"></span>.8<span class="ff2 fs1 ls1 ws1"> </span></div><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls2 ws2">Page 1 of 17 <span class="_ _4"> </span> <span class="_ _5"> </span><span class="fc1">Copyri<span class="_ _0"></span>ght<span class="_ _0"></span> ©2002-2006 Peer<span class="_ _0"></span>Sec Net<span class="_ _0"></span>works, Inc.<span class="_ _0"></span></span><span class="ff2 fs1 ls1 ws1"> </span></div><div class="t m0 x1 h3 y3 ff3 fs2 fc0 sc0 ls3 ws3">M<span class="_ _0"></span>atrixSSL<span class="_ _3"></span> Developer<span class="_ _0"></span>’<span class="_ _3"></span>s G<span class="_ _3"></span>uide </div><div class="t m0 x1 h2 y4 ff2 fs1 fc0 sc0 ls1 ws4">This document di<span class="_ _3"></span>scusses devel<span class="_ _3"></span>op<span class="_ _0"></span>ing wi<span class="_ _3"></span>th Ma<span class="_ _3"></span>t<span class="_ _0"></span>r<span class="_ _0"></span>ix<span class="_ _3"></span>SSL<span class="_ _3"></span>. It i<span class="_ _3"></span>n<span class="_ _3"></span>cludes <span class="_ _0"></span>ins<span class="_ _3"></span>t<span class="_ _0"></span>ruc<span class="_ _3"></span>t<span class="_ _0"></span>i<span class="_ _3"></span>ons on </div><div class="t m0 x1 h2 y5 ff2 fs1 fc0 sc0 ls4 ws5">in<span class="_ _3"></span>tegr<span class="_ _0"></span>at<span class="_ _0"></span>ing M<span class="_ _3"></span>at<span class="_ _0"></span>rix<span class="_ _3"></span>SSL into<span class="_ _0"></span> an appli<span class="_ _3"></span>cat<span class="_ _0"></span>ion and a desc<span class="_ _3"></span>r<span class="_ _0"></span>i<span class="_ _3"></span>pt<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n of<span class="_ _3"></span> t<span class="_ _0"></span>h<span class="_ _3"></span>e co<span class="_ _0"></span>nfi<span class="_ _3"></span>gura<span class="_ _0"></span>ble opti<span class="_ _3"></span>o<span class="_ _0"></span>n<span class="_ _3"></span>s </div><div class="t m0 x1 h2 y6 ff2 fs1 fc0 sc0 ls5 ws6">f<span class="_ _6"></span>or m<span class="_ _6"></span>odi<span class="_ _6"></span>f<span class="_ _6"></span>yi<span class="_ _6"></span>ng<span class="_ _6"></span> th<span class="_ _6"></span>e <span class="_ _3"></span>M<span class="_ _6"></span>atr<span class="_ _3"></span>i<span class="_ _6"></span>x<span class="_ _3"></span>SS<span class="_ _3"></span>L<span class="_ _6"></span> li<span class="_ _6"></span>b<span class="_ _3"></span>ra<span class="_ _6"></span>ry<span class="_ _3"></span> i<span class="_ _6"></span>ts<span class="_ _3"></span>el<span class="_ _3"></span>f<span class="_ _6"></span>. </div><div class="t m0 x1 h2 y7 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h2 y8 ff2 fs1 fc0 sc0 ls6 ws7">Table o<span class="_ _0"></span>f<span class="_ _6"></span> Co<span class="_ _0"></span>nt<span class="_ _0"></span>ents </div><div class="t m0 x1 h2 y9 ff2 fs1 fc0 sc0 ls7 ws1">Ma<span class="_ _3"></span>tri<span class="_ _3"></span>x<span class="_ _3"></span>SSL<span class="_ _6"></span> Devel<span class="_ _6"></span>oper’<span class="_ _3"></span>s G<span class="_ _3"></span>ui<span class="_ _6"></span>d<span class="_ _0"></span>e<span class="_"> </span>........................................................................................<span class="_ _0"></span>1 </div><div class="t m0 x2 h2 ya ff2 fs1 fc0 sc0 ls7 ws8">Com<span class="_ _6"></span>me<span class="_ _3"></span>rcial<span class="_ _6"></span> Versi<span class="_ _6"></span>o<span class="_ _0"></span>n<span class="_ _0"></span>....................................................................................................<span class="_ _7"></span>1 </div><div class="t m0 x2 h2 yb ff2 fs1 fc0 sc0 ls7 ws8">Ge<span class="_ _3"></span>n<span class="_ _3"></span>era<span class="_ _3"></span>t<span class="_ _0"></span>i<span class="_ _3"></span>n<span class="_ _3"></span>g a<span class="_ _3"></span> Ce<span class="_ _3"></span>rti<span class="_ _3"></span>fi<span class="_ _3"></span>ca<span class="_ _3"></span>te Hi<span class="_ _6"></span>erar<span class="_ _3"></span>chy...............................................................................<span class="_ _7"></span>2<span class="_ _3"></span> </div><div class="t m0 x2 h2 yc ff2 fs1 fc0 sc0 ls7 ws8">In<span class="_ _3"></span>tegra<span class="_ _6"></span>tin<span class="_ _6"></span>g wi<span class="_ _6"></span>t<span class="_ _7"></span>h<span class="_ _6"></span> A<span class="_ _3"></span>ppli<span class="_ _3"></span>ca<span class="_ _6"></span>t<span class="_ _7"></span>i<span class="_ _6"></span>ons.......................................................................................<span class="_ _7"></span>2 </div><div class="t m0 x2 h2 yd ff2 fs1 fc0 sc0 ls7 ws1">Re<span class="_ _3"></span>-h<span class="_ _6"></span>a<span class="_ _0"></span>n<span class="_ _3"></span>dsh<span class="_ _3"></span>aki<span class="_ _3"></span>ng<span class="_ _7"></span>...........................................................................................................<span class="_ _7"></span>6 </div><div class="t m0 x2 h2 ye ff2 fs1 fc0 sc0 ls7 ws8">Por<span class="_ _6"></span>t<span class="_ _0"></span>i<span class="_ _3"></span>n<span class="_ _3"></span>g to O<span class="_ _6"></span>t<span class="_ _0"></span>h<span class="_ _6"></span>er Pl<span class="_ _6"></span>at<span class="_ _0"></span>f<span class="_ _6"></span>orms<span class="_ _8"></span>...........................................................................................<span class="_ _7"></span>9 </div><div class="t m0 x3 h2 yf ff2 fs1 fc0 sc0 ls7 ws1">OS D<span class="_ _3"></span>ep<span class="_ _3"></span>en<span class="_ _6"></span>den<span class="_ _3"></span>t Code<span class="_ _6"></span> Lay<span class="_ _6"></span>er<span class="_"> </span>......................................................................................<span class="_ _7"></span>9<span class="_ _3"></span> </div><div class="t m0 x3 h2 y10 ff2 fs1 fc0 sc0 ls7 ws8">Bui<span class="_ _6"></span>ld En<span class="_ _3"></span>vi<span class="_ _6"></span>ro<span class="_ _0"></span>nm<span class="_ _6"></span>e<span class="_ _0"></span>n<span class="_ _6"></span>t<span class="_ _0"></span> De<span class="_ _6"></span>t<span class="_ _0"></span>ai<span class="_ _6"></span>ls.......................................................................................<span class="_ _7"></span>9 </div><div class="t m0 x3 h2 y11 ff2 fs1 fc0 sc0 ls7 ws1">Wi<span class="_ _6"></span>ndows<span class="_ _3"></span> Bui<span class="_ _6"></span>lds<span class="_ _9"> </span>......................................................................................................<span class="_ _7"></span>9 </div><div class="t m0 x3 h2 y12 ff2 fs1 fc0 sc0 ls7 ws1">Li<span class="_ _3"></span>n<span class="_ _3"></span>ux<span class="_ _3"></span> Buil<span class="_ _6"></span>ds<span class="_ _7"></span>............................................................................................................<span class="_ _7"></span>9 </div><div class="t m0 x3 h2 y13 ff2 fs1 fc0 sc0 ls7 ws1">Ma<span class="_ _3"></span>cO<span class="_ _3"></span>S X<span class="_ _3"></span> Bui<span class="_ _6"></span>lds....................................................................................................<span class="_ _7"></span>10<span class="_ _3"></span> </div><div class="t m0 x3 h2 y14 ff2 fs1 fc0 sc0 ls7 ws8">Vx<span class="_ _3"></span>W<span class="_ _3"></span>orks<span class="_ _3"></span> Bui<span class="_ _3"></span>l<span class="_ _3"></span>ds<span class="_ _a"></span>....................................................................................................<span class="_ _7"></span>10 </div><div class="t m0 x3 h2 y15 ff2 fs1 fc0 sc0 ls7 ws1">Wi<span class="_ _6"></span>ndows<span class="_ _3"></span> CE /<span class="_ _3"></span> P<span class="_ _3"></span>ocke<span class="_ _6"></span>tPC B<span class="_ _3"></span>ui<span class="_ _6"></span>lds<span class="_ _9"> </span>............................................................................<span class="_ _7"></span>11<span class="_ _3"></span> </div><div class="t m0 x2 h2 y16 ff2 fs1 fc0 sc0 ls7 ws1">Ex<span class="_ _3"></span>ten<span class="_ _6"></span>d<span class="_ _0"></span>i<span class="_ _3"></span>n<span class="_ _3"></span>g Ma<span class="_ _3"></span>trix<span class="_ _6"></span>SSL<span class="_ _8"></span>................................................................................................<span class="_ _8"></span>11 </div><div class="t m0 x3 h2 y17 ff2 fs1 fc0 sc0 ls7 ws8">Com<span class="_ _6"></span>pil<span class="_ _3"></span>e-Ti<span class="_ _3"></span>m<span class="_ _3"></span>e D<span class="_ _3"></span>efi<span class="_ _3"></span>nes<span class="_ _b"> </span>..........................................................................................<span class="_ _7"></span>11 </div><div class="t m0 x3 h2 y18 ff2 fs1 fc0 sc0 ls7 ws9">Ci<span class="_ _6"></span>phe<span class="_ _3"></span>r Sui<span class="_ _6"></span>tes<span class="_ _9"> </span>.........................................................................................................<span class="_ _7"></span>14 </div><div class="t m0 x3 h2 y19 ff2 fs1 fc0 sc0 ls7 ws1">Cry<span class="_ _6"></span>pto Pr<span class="_ _3"></span>ovi<span class="_ _6"></span>de<span class="_ _3"></span>rs....................................................................................................<span class="_ _8"></span>16 </div><div class="t m0 x2 h2 y1a ff2 fs1 fc0 sc0 ls7 ws1">De<span class="_ _3"></span>b<span class="_ _3"></span>ug<span class="_ _3"></span>gin<span class="_ _3"></span>g<span class="_ _7"></span>.................................................................................................................<span class="_ _8"></span>17<span class="_ _3"></span> </div><div class="t m0 x1 h2 y1b ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h2 y1c ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h4 y1d ff4 fs3 fc0 sc0 ls8 wsa">Co<span class="_ _3"></span>mmerc<span class="_ _3"></span>ial Ve<span class="_ _3"></span>r<span class="_ _0"></span>si<span class="_ _3"></span>on </div><div class="t m0 x1 h2 y1e ff2 fs1 fc0 sc0 ls9 wsb">So<span class="_ _0"></span>m<span class="_ _3"></span>e funct<span class="_ _0"></span>i<span class="_ _3"></span>ons or<span class="_ _0"></span> f<span class="_ _6"></span>eat<span class="_ _0"></span>ur<span class="_ _0"></span>es described in<span class="_ _3"></span> this docume<span class="_ _0"></span>nt are available only<span class="_ _3"></span> <span class="_ _0"></span>in the </div><div class="t m0 x1 h2 y1f ff2 fs1 fc0 sc0 lsa wsc">co<span class="_ _0"></span>mm<span class="_ _6"></span>er<span class="_ _0"></span>cia<span class="_ _0"></span>lly<span class="_ _3"></span> lice<span class="_ _0"></span>nsed versio<span class="_ _0"></span>n<span class="_ _3"></span> o<span class="_ _0"></span>f<span class="_ _3"></span> Matr<span class="_ _0"></span>ix<span class="_ _6"></span>S<span class="_ _0"></span>S<span class="_ _0"></span>L. Secti<span class="_ _6"></span>o<span class="_ _7"></span>n<span class="_ _3"></span>s of this docu<span class="_ _0"></span>m<span class="_ _3"></span>ent<span class="_ _0"></span> <span class="_ _3"></span>t<span class="_ _0"></span>hat ref<span class="_ _3"></span>er t<span class="_ _0"></span>o the </div><div class="t m0 x1 h2 y20 ff2 fs1 fc0 sc0 lsb wsd">co<span class="_ _0"></span>m<span class="_ _3"></span>mercial<span class="_ _3"></span> versio<span class="_ _0"></span>n<span class="_ _3"></span> will<span class="_ _6"></span> be n<span class="_ _6"></span>o<span class="_ _0"></span>t<span class="_ _0"></span>ed. </div><div class="t m0 x1 h2 y21 ff2 fs1 fc0 sc0 ls1 ws1"> </div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b8aa215da9b288bef99b7/bg2.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">Dev<span class="_ _0"></span>eloper<span class="_ _0"></span>'s Guide <span class="_ _1"> </span> <span class="_ _2"> </span>Matr<span class="_ _0"></span>ixSS<span class="_ _0"></span>L 1<span class="_ _3"></span>.8<span class="ff2 fs1 ls1 ws1"> </span></div><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls2 ws2">Page 2 of 17 <span class="_ _4"> </span> <span class="_ _5"> </span><span class="fc1">Copyri<span class="_ _0"></span>ght<span class="_ _0"></span> ©2002-2006 Peer<span class="_ _0"></span>Sec Net<span class="_ _0"></span>works, Inc.<span class="_ _0"></span></span><span class="ff2 fs1 ls1 ws1"> </span></div><div class="t m0 x1 h4 y22 ff4 fs3 fc0 sc0 lsc wse">Gener<span class="_ _0"></span>ati<span class="_ _0"></span>ng <span class="_ _0"></span>a Cer<span class="_ _0"></span>tifi<span class="_ _0"></span>ca<span class="_ _0"></span>te Hi<span class="_ _0"></span>erar<span class="_ _0"></span>c<span class="_ _0"></span>hy </div><div class="t m0 x1 h2 y23 ff2 fs1 fc0 sc0 lsd wsf">The en<span class="_ _3"></span>t<span class="_ _0"></span>ire basis o<span class="_ _0"></span>f<span class="_ _3"></span> stro<span class="_ _0"></span>ng securi<span class="_ _3"></span>t<span class="_ _0"></span>y usi<span class="_ _3"></span>ng SSL <span class="_ _0"></span>i<span class="_ _6"></span>s t<span class="_ _0"></span>he cr<span class="_ _0"></span>eat<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n an<span class="_ _3"></span>d ma<span class="_ _0"></span>in<span class="_ _6"></span>t<span class="_ _0"></span>e<span class="_ _0"></span>nance of </div><div class="t m0 x1 h2 y24 ff2 fs1 fc0 sc0 lse ws10">cert<span class="_ _0"></span>ifi<span class="_ _3"></span>cat<span class="_ _0"></span>e files. The standard secur<span class="_ _0"></span>i<span class="_ _3"></span>t<span class="_ _7"></span>y<span class="_ _6"></span> sce<span class="_ _0"></span>nar<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span> for S<span class="_ _0"></span>SL i<span class="_ _6"></span>s s<span class="_ _0"></span>erver aut<span class="_ _0"></span>hent<span class="_ _0"></span>i<span class="_ _3"></span>cat<span class="_ _0"></span>ion. That is, </div><div class="t m0 x1 h2 y25 ff2 fs1 fc0 sc0 lsf ws11">t<span class="_ _0"></span>he cli<span class="_ _3"></span>ent<span class="_ _0"></span> wants <span class="_ _3"></span>to<span class="_ _0"></span> m<span class="_ _3"></span>ake sure it is communicat<span class="_ _0"></span>in<span class="_ _3"></span>g <span class="_ _0"></span>with the correct<span class="_ _0"></span> server b<span class="_ _3"></span>efor<span class="_ _0"></span>e sending </div><div class="t m0 x1 h2 y26 ff2 fs1 fc0 sc0 lsf ws11">any s<span class="_ _3"></span>e<span class="_ _0"></span>nsi<span class="_ _3"></span>t<span class="_ _0"></span>ive dat<span class="_ _0"></span>a. Fr<span class="_ _3"></span>om a certificat<span class="_ _0"></span>e fil<span class="_ _3"></span>e <span class="_ _0"></span>view, this is<span class="_ _3"></span> w<span class="_ _0"></span>here the fil<span class="_ _3"></span>e<span class="_ _0"></span>s shou<span class="_ _0"></span>l<span class="_ _3"></span>d be l<span class="_ _3"></span>o<span class="_ _0"></span>cat<span class="_ _0"></span>ed. </div><div class="t m0 x1 h2 y27 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x4 h5 y28 ff5 fs1 fc0 sc0 ls10 ws12">Ser<span class="_ _6"></span>ve<span class="_ _0"></span>r Cl<span class="_ _6"></span>ient </div><div class="t m0 x5 h2 y29 ff2 fs1 fc0 sc0 ls11 ws13">serverCer<span class="_ _0"></span>t<span class="_ _0"></span>ifi<span class="_ _3"></span>cat<span class="_ _0"></span>e.pe<span class="_ _0"></span>m<span class="_ _3"></span> CAcert<span class="_ _0"></span>ificate.<span class="_ _0"></span>pem </div><div class="t m0 x5 h2 y2a ff2 fs1 fc0 sc0 ls12 ws14">serverCer<span class="_ _0"></span>t<span class="_ _0"></span>PrivateKey.pe<span class="_ _0"></span>m </div><div class="t m0 x1 h2 y2b ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h2 y2c ff2 fs1 fc0 sc0 ls13 ws15">For inf<span class="_ _3"></span>o<span class="_ _0"></span>r<span class="_ _0"></span>m<span class="_ _6"></span>at<span class="_ _7"></span>i<span class="_ _3"></span>on on how to cr<span class="_ _0"></span>ea<span class="_ _3"></span>t<span class="_ _0"></span>e Certifi<span class="_ _3"></span>cat<span class="_ _0"></span>e Aut<span class="_ _0"></span>hori<span class="_ _3"></span>t<span class="_ _0"></span>y<span class="_ _6"></span> r<span class="_ _0"></span>o<span class="_ _0"></span>ot and chil<span class="_ _3"></span>d cert<span class="_ _0"></span>ifi<span class="_ _3"></span>cat<span class="_ _0"></span>es p<span class="_ _0"></span>l<span class="_ _6"></span>ea<span class="_ _0"></span>se </div><div class="t m0 x1 h2 y2d ff2 fs1 fc0 sc0 ls14 ws16">s<span class="_ _3"></span>e<span class="_ _3"></span>e<span class="_ _3"></span> th<span class="_ _6"></span>e M<span class="_ _6"></span>atr<span class="_ _6"></span>ix<span class="_ _6"></span>S<span class="_ _3"></span>sl<span class="_ _6"></span> <span class="_ _0"></span>K<span class="_ _6"></span>ey<span class="_ _6"></span> Gen<span class="_ _6"></span>e<span class="_ _3"></span>ra<span class="_ _6"></span>ti<span class="_ _6"></span>on</div><div class="t m0 x6 h2 y2e ff2 fs1 fc0 sc0 lsd wsf"> do<span class="_ _0"></span>cument or t<span class="_ _0"></span>h<span class="_ _3"></span>e Peer<span class="_ _0"></span>Sec Key<span class="_ _6"></span> Ge<span class="_ _0"></span>nerat<span class="_ _0"></span>ion Utili<span class="_ _6"></span>t<span class="_ _7"></span>ies<span class="_ _3"></span> </div><div class="t m0 x1 h2 y2f ff2 fs1 fc0 sc0 ls15 ws17">do<span class="_ _0"></span>cum<span class="_ _6"></span>e<span class="_ _0"></span>nts <span class="_ _0"></span>in<span class="_ _6"></span>c<span class="_ _0"></span>luded in this package. T<span class="_ _0"></span>he key<span class="_ _6"></span> and <span class="_ _0"></span>cert<span class="_ _0"></span>if<span class="_ _3"></span>icat<span class="_ _0"></span>e generati<span class="_ _3"></span>o<span class="_ _0"></span>n ut<span class="_ _0"></span>il<span class="_ _6"></span>it<span class="_ _0"></span>ies are o<span class="_ _0"></span>nly<span class="_ _6"></span> </div><div class="t m0 x1 h2 y30 ff2 fs1 fc0 sc0 ls16 ws18">ava<span class="_ _7"></span>ila<span class="_ _0"></span>b<span class="_ _0"></span>le<span class="_ _0"></span> in sp<span class="_ _0"></span>ec<span class="_ _7"></span>ial<span class="_ _0"></span>l<span class="_ _0"></span>y lic<span class="_ _0"></span>e<span class="_ _7"></span>nsed<span class="_ _0"></span> ve<span class="_ _0"></span>rs<span class="_ _7"></span>i<span class="_ _3"></span>o<span class="_ _7"></span>ns <span class="_ _3"></span>o<span class="_ _7"></span>f <span class="_ _6"></span>M<span class="_ _0"></span>at<span class="_ _7"></span>r<span class="_ _0"></span>ixS<span class="_ _0"></span>S<span class="_ _0"></span>L.<span class="_ _0"></span> </div><div class="t m0 x1 h2 y31 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h4 y32 ff4 fs3 fc0 sc0 ls17 ws19">Integra<span class="_ _0"></span>ti<span class="_ _0"></span>ng wi<span class="_ _0"></span>th A<span class="_ _0"></span>ppli<span class="_ _0"></span>cat<span class="_ _0"></span>ions </div><div class="t m0 x1 h2 y33 ff2 fs1 fc0 sc0 lsd wsf">Matr<span class="_ _0"></span>ix<span class="_ _3"></span>SSL is a librar<span class="_ _0"></span>y<span class="_ _6"></span> t<span class="_ _0"></span>hat pro<span class="_ _0"></span>vi<span class="_ _3"></span>des a secur<span class="_ _0"></span>i<span class="_ _3"></span>t<span class="_ _0"></span>y layer to<span class="_ _0"></span> cli<span class="_ _6"></span>e<span class="_ _0"></span>nt and server applicat<span class="_ _0"></span>i<span class="_ _3"></span>ons </div><div class="t m0 x1 h2 y34 ff2 fs1 fc0 sc0 ls4 ws5">all<span class="_ _6"></span>o<span class="_ _0"></span>w<span class="_ _0"></span>ing them to secure<span class="_ _0"></span>ly<span class="_ _6"></span> co<span class="_ _0"></span>mmunicat<span class="_ _0"></span>e wi<span class="_ _6"></span>t<span class="_ _0"></span>h ot<span class="_ _0"></span>h<span class="_ _3"></span>er SS<span class="_ _0"></span>L en<span class="_ _3"></span>abled ent<span class="_ _0"></span>i<span class="_ _6"></span>t<span class="_ _7"></span>i<span class="_ _6"></span>es. Mat<span class="_ _0"></span>r<span class="_ _0"></span>ix<span class="_ _3"></span>SSL <span class="_ _0"></span>is<span class="_ _3"></span> </div><div class="t m0 x1 h2 y35 ff2 fs1 fc0 sc0 ls13 ws15">t<span class="_ _0"></span>ransport agnost<span class="_ _0"></span>i<span class="_ _6"></span>c and ca<span class="_ _0"></span>n<span class="_ _3"></span> <span class="_ _0"></span>jus<span class="_ _3"></span>t<span class="_ _0"></span> as easily in<span class="_ _3"></span>tegr<span class="_ _0"></span>at<span class="_ _0"></span>e wi<span class="_ _6"></span>t<span class="_ _0"></span>h an HTT<span class="_ _0"></span>P server as i<span class="_ _6"></span>t<span class="_ _0"></span> co<span class="_ _0"></span>ul<span class="_ _3"></span>d with a </div><div class="t m0 x1 h2 y36 ff2 fs1 fc0 sc0 ls18 ws1a">device co<span class="_ _0"></span>mm<span class="_ _6"></span>u<span class="_ _0"></span>nicat<span class="_ _0"></span>ing through a seri<span class="_ _3"></span>al port. For si<span class="_ _3"></span>mplici<span class="_ _3"></span>t<span class="_ _0"></span>y<span class="_ _3"></span>, t<span class="_ _0"></span>his devel<span class="_ _3"></span>oper<span class="_ _0"></span>’s guide will<span class="_ _3"></span> </div><div class="t m0 x1 h2 y37 ff2 fs1 fc0 sc0 ls19 ws1b">assume a socket<span class="_ _0"></span> bas<span class="_ _3"></span>ed <span class="_ _0"></span>im<span class="_ _6"></span>p<span class="_ _0"></span>lement<span class="_ _0"></span>at<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n for all<span class="_ _6"></span> <span class="_ _0"></span>i<span class="_ _3"></span>t<span class="_ _0"></span>s example<span class="_ _0"></span>s unl<span class="_ _3"></span>ess ot<span class="_ _0"></span>herwise n<span class="_ _3"></span>ot<span class="_ _0"></span>ed.<span class="_ _0"></span> </div><div class="t m0 x1 h2 y38 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h2 y39 ff2 fs1 fc0 sc0 ls1a ws1c">Th<span class="_ _3"></span>e term<span class="_ _6"></span> <span class="ff6 ls1b ws1">application</span><span class="ls1c ws1d"> i<span class="_ _3"></span>n this docu<span class="_ _0"></span>m<span class="_ _3"></span>ent<span class="_ _0"></span> refers to the client o<span class="_ _0"></span>r se<span class="_ _3"></span>rver app<span class="_ _0"></span>li<span class="_ _3"></span>cat<span class="_ _0"></span>ion the </span></div><div class="t m0 x1 h2 y3a ff2 fs1 fc0 sc0 ls1d ws1e">Ma<span class="_ _0"></span>t<span class="_ _0"></span>r<span class="_ _0"></span>ixS<span class="_ _0"></span>S<span class="_ _0"></span>L lib<span class="_ _0"></span>r<span class="_ _0"></span>ar<span class="_ _7"></span>y<span class="_ _3"></span> is be<span class="_ _0"></span>in<span class="_ _0"></span>g<span class="_ _0"></span> int<span class="_ _0"></span>e<span class="_ _0"></span>g<span class="_ _0"></span>r<span class="_ _0"></span>at<span class="_ _7"></span>ed wit<span class="_ _0"></span>h.<span class="_ _0"></span> </div><div class="t m0 x1 h2 y3b ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h2 y3c ff2 fs1 fc0 sc0 ls1e ws1f">T<span class="_ _0"></span>his<span class="_ _0"></span> d<span class="_ _0"></span>o<span class="_ _0"></span>c<span class="_ _0"></span>ume<span class="_ _7"></span>nt<span class="_ _0"></span> wil<span class="_ _0"></span>l w<span class="_ _0"></span>a<span class="_ _0"></span>lk t<span class="_ _7"></span>hro<span class="_ _7"></span>ug<span class="_ _0"></span>h t<span class="_ _0"></span>he<span class="_ _0"></span> sp<span class="_ _0"></span>ec<span class="_ _7"></span>ific<span class="_ _0"></span> po<span class="_ _7"></span>int<span class="_ _0"></span>s <span class="_ _0"></span>in w<span class="_ _0"></span>hic<span class="_ _7"></span>h Ma<span class="_ _0"></span>t<span class="_ _7"></span>rixS<span class="_ _0"></span>S<span class="_ _0"></span>L s<span class="_ _0"></span>ho<span class="_ _7"></span>u<span class="_ _0"></span>l<span class="_ _3"></span>d<span class="_ _0"></span> be<span class="_ _0"></span> </div><div class="t m0 x1 h2 y3d ff2 fs1 fc0 sc0 ls19 ws1b">in<span class="_ _3"></span>tegr<span class="_ _0"></span>at<span class="_ _0"></span>ed wi<span class="_ _6"></span>t<span class="_ _0"></span>h an applicat<span class="_ _7"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n. Matrix<span class="_ _6"></span>S<span class="_ _0"></span>SL APIs sho<span class="_ _0"></span>uld be in<span class="_ _3"></span>tegr<span class="_ _0"></span>at<span class="_ _0"></span>ed i<span class="_ _6"></span>nt<span class="_ _0"></span>o<span class="_ _0"></span> <span class="_ _3"></span>t<span class="_ _0"></span>he appl<span class="_ _6"></span>ic<span class="_ _0"></span>ation </div><div class="t m0 x1 h2 y3e ff2 fs1 fc0 sc0 ls1f ws20">dur<span class="_ _0"></span>in<span class="_ _3"></span>g ini<span class="_ _6"></span>t<span class="_ _7"></span>ializat<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n/cleanup, when new secure connect<span class="_ _0"></span>i<span class="_ _3"></span>ons are being setup (<span class="_ _0"></span>h<span class="_ _3"></span>andshaking) </div><div class="t m0 x1 h2 y3f ff2 fs1 fc0 sc0 ls1f ws20">and when encry<span class="_ _3"></span>pt<span class="_ _0"></span>ing/decr<span class="_ _0"></span>y<span class="_ _6"></span>pt<span class="_ _7"></span>in<span class="_ _6"></span>g <span class="_ _0"></span>m<span class="_ _3"></span>ess<span class="_ _0"></span>ages exchanged w<span class="_ _0"></span>i<span class="_ _6"></span>t<span class="_ _0"></span>h peers. </div><div class="t m0 x1 h2 y40 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h2 y41 ff2 fs1 fc0 sc0 ls20 ws21">Refer to<span class="_ _0"></span> the MatrixSSL A<span class="_ _3"></span>PI do<span class="_ _0"></span>cum<span class="_ _3"></span>ent<span class="_ _0"></span> to get familiar wi<span class="_ _3"></span>t<span class="_ _0"></span>h the interface to<span class="_ _0"></span> the l<span class="_ _3"></span>ibrar<span class="_ _0"></span>y<span class="_ _3"></span> and </div><div class="t m0 x1 h2 y42 ff2 fs1 fc0 sc0 ls1c ws1d">w<span class="_ _0"></span>i<span class="_ _6"></span>t<span class="_ _0"></span>h t<span class="_ _0"></span>h<span class="_ _3"></span>e example co<span class="_ _0"></span>de to see how they<span class="_ _3"></span> are used at<span class="_ _0"></span> im<span class="_ _3"></span>p<span class="_ _0"></span>lementat<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n. Foll<span class="_ _6"></span>o<span class="_ _0"></span>w t<span class="_ _0"></span>he </div><div class="t m0 x1 h2 y43 ff2 fs1 fc0 sc0 ls19 ws1b">gu<span class="_ _0"></span>i<span class="_ _6"></span>de<span class="_ _0"></span>lines bel<span class="_ _3"></span>o<span class="_ _0"></span>w when using t<span class="_ _0"></span>h<span class="_ _3"></span>ese APIs to integrat<span class="_ _0"></span>e MatrixSSL in<span class="_ _3"></span>t<span class="_ _0"></span>o an appli<span class="_ _3"></span>cat<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n<span class="_ _3"></span>. </div><div class="t m0 x1 h2 y44 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h6 y45 ff5 fs3 fc0 sc0 ls21 ws22">1. I<span class="_ _0"></span>n<span class="_ _3"></span>itiali<span class="_ _0"></span>zati<span class="_ _0"></span>on </div><div class="t m0 x7 h2 y46 ff2 fs1 fc0 sc0 ls22 ws23">Matr<span class="_ _0"></span>ix<span class="_ _3"></span>SSL sho<span class="_ _0"></span>uld be ini<span class="_ _6"></span>t<span class="_ _7"></span>ialized as part o<span class="_ _0"></span>f<span class="_ _6"></span> t<span class="_ _0"></span>he app<span class="_ _0"></span>li<span class="_ _3"></span>cat<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n ini<span class="_ _6"></span>t<span class="_ _7"></span>i<span class="_ _3"></span>a<span class="_ _0"></span>lizat<span class="_ _0"></span>i<span class="_ _3"></span>on w<span class="_ _0"></span>i<span class="_ _6"></span>t<span class="_ _7"></span>h a call<span class="_ _6"></span> t<span class="_ _0"></span>o<span class="_ _0"></span> </div><div class="t m0 x7 h2 y47 ff6 fs1 fc0 sc0 ls23 ws1">matrixSs<span class="_ _3"></span>lOpen<span class="ff2 ls24 ws24">. This<span class="_ _3"></span> <span class="_ _0"></span>f<span class="_ _6"></span>u<span class="_ _0"></span>nct<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n<span class="_ _3"></span> t<span class="_ _0"></span>akes n<span class="_ _3"></span>o<span class="_ _0"></span> param<span class="_ _6"></span>et<span class="_ _0"></span>er<span class="_ _0"></span>s an<span class="_ _3"></span>d sets up the in<span class="_ _3"></span>t<span class="_ _0"></span>ernal<span class="_ _3"></span> st<span class="_ _0"></span>ructur<span class="_ _0"></span>es </span></div><div class="t m0 x7 h2 y48 ff2 fs1 fc0 sc0 lsd wsf">needed by the librar<span class="_ _0"></span>y<span class="_ _6"></span>.<span class="_ _0"></span> </div><div class="t m0 x7 h2 y49 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y4a ff2 fs1 fc0 sc0 lse ws10">In m<span class="_ _3"></span>o<span class="_ _0"></span>st<span class="_ _0"></span> cases the appl<span class="_ _3"></span>icat<span class="_ _7"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n will<span class="_ _3"></span> also ca<span class="_ _0"></span>ll <span class="ff6 ls25 ws1">matr<span class="_ _3"></span>ixSslReadKeys<span class="_ _3"></span><span class="ff2 ls26 ws25"> <span class="_ _3"></span>d<span class="_ _0"></span>ur<span class="_ _7"></span>ing it<span class="_ _0"></span>s in<span class="_ _0"></span>it<span class="_ _7"></span>ia<span class="_ _0"></span>liz<span class="_ _0"></span>a<span class="_ _0"></span>t<span class="_ _7"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n.<span class="_ _0"></span> </span></span></div><div class="t m0 x7 h2 y4b ff2 fs1 fc0 sc0 ls11 ws26">This funct<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n takes t<span class="_ _0"></span>he f<span class="_ _3"></span>ile names of the RSA cert<span class="_ _0"></span>ificate,<span class="_ _0"></span> priv<span class="_ _3"></span>at<span class="_ _0"></span>e key<span class="_ _6"></span>,<span class="_ _0"></span> a<span class="_ _0"></span>nd Certificat<span class="_ _0"></span>e </div><div class="t m0 x7 h2 y4c ff2 fs1 fc0 sc0 ls9 wsb">Author<span class="_ _0"></span>ity<span class="_ _6"></span> <span class="_ _0"></span>files used for aut<span class="_ _0"></span>henticat<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n<span class="_ _3"></span> and public key<span class="_ _3"></span> e<span class="_ _0"></span>n<span class="_ _3"></span>cr<span class="_ _0"></span>yption. The call extract<span class="_ _0"></span>s the </div><div class="t m0 x7 h2 y4d ff2 fs1 fc0 sc0 ls27 ws27">RSA<span class="_ _6"></span> <span class="_ _0"></span>m<span class="_ _3"></span>ateri<span class="_ _3"></span>al<span class="_ _6"></span> a<span class="_ _0"></span>n<span class="_ _3"></span>d re<span class="_ _3"></span>turns<span class="_ _6"></span> an <span class="_ _3"></span><span class="ff6 ls28 ws1">ssl<span class="_ _3"></span>Ke<span class="_ _3"></span>ys<span class="_ _3"></span>_t<span class="ff7 ls1"> <span class="ff2 lsf ws11">s<span class="_ _3"></span>t<span class="_ _0"></span>ruct<span class="_ _0"></span>ure to <span class="_ _3"></span>t<span class="_ _0"></span>he appli<span class="_ _3"></span>cat<span class="_ _0"></span>ion that<span class="_ _0"></span> will<span class="_ _6"></span> <span class="_ _0"></span>be used in </span></span></span></div><div class="t m0 x7 h2 y4e ff2 fs1 fc0 sc0 ls29 ws28">a subsequent ca<span class="_ _0"></span>ll<span class="_ _6"></span> t<span class="_ _0"></span>o <span class="ff6 ls2a ws1">matrixSs<span class="_ _3"></span>lNewSess<span class="_ _3"></span>ion<span class="ff2 ls7">. </span>matrixSs<span class="_ _3"></span>lReadKeys<span class="_ _3"></span><span class="ff2 ls2b ws29"> pars<span class="_ _6"></span>e<span class="_ _0"></span>s th<span class="_ _3"></span>rough<span class="_ _6"></span> an<span class="_ _3"></span> en<span class="_ _6"></span>t<span class="_ _7"></span>i<span class="_ _6"></span>re </span></span></div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b8aa215da9b288bef99b7/bg3.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">Dev<span class="_ _0"></span>eloper<span class="_ _0"></span>'s Guide <span class="_ _1"> </span> <span class="_ _2"> </span>Matr<span class="_ _0"></span>ixSS<span class="_ _0"></span>L 1<span class="_ _3"></span>.8<span class="ff2 fs1 ls1 ws1"> </span></div><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls2 ws2">Page 3 of 17 <span class="_ _4"> </span> <span class="_ _5"> </span><span class="fc1">Copyri<span class="_ _0"></span>ght<span class="_ _0"></span> ©2002-2006 Peer<span class="_ _0"></span>Sec Net<span class="_ _0"></span>works, Inc.<span class="_ _0"></span></span><span class="ff2 fs1 ls1 ws1"> </span></div><div class="t m0 x7 h2 y4f ff2 fs1 fc0 sc0 ls11 ws26">PEM cert<span class="_ _0"></span>ificate file so <span class="_ _0"></span>i<span class="_ _6"></span>t<span class="_ _0"></span> is<span class="_ _3"></span> a rat<span class="_ _0"></span>her CPU intensive t<span class="_ _0"></span>ask. Thi<span class="_ _3"></span>s needs to be t<span class="_ _0"></span>aken i<span class="_ _3"></span>nto<span class="_ _0"></span> </div><div class="t m0 x7 h2 y50 ff2 fs1 fc0 sc0 lsf ws11">co<span class="_ _0"></span>n<span class="_ _3"></span>siderat<span class="_ _0"></span>ion to deter<span class="_ _0"></span>mi<span class="_ _3"></span>ne t<span class="_ _0"></span>he m<span class="_ _6"></span>o<span class="_ _0"></span>st<span class="_ _0"></span> l<span class="_ _3"></span>og<span class="_ _0"></span>ical<span class="_ _6"></span> p<span class="_ _0"></span>lace <span class="_ _0"></span>fo<span class="_ _0"></span>r y<span class="_ _6"></span>o<span class="_ _0"></span>ur applicat<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n t<span class="_ _0"></span>o read in<span class="_ _3"></span> <span class="_ _0"></span>i<span class="_ _6"></span>t<span class="_ _0"></span>s </div><div class="t m0 x7 h2 y51 ff2 fs1 fc0 sc0 ls9 wsb">keys. It can b<span class="_ _6"></span>e ca<span class="_ _0"></span>lled a single t<span class="_ _0"></span>im<span class="_ _3"></span>e at start<span class="_ _0"></span> up <span class="_ _3"></span>to keep t<span class="_ _0"></span>h<span class="_ _3"></span>e keys in<span class="_ _3"></span> memor<span class="_ _0"></span>y<span class="_ _3"></span> for t<span class="_ _0"></span>he lif<span class="_ _3"></span>e o<span class="_ _0"></span>f<span class="_ _6"></span> </div><div class="t m0 x7 h2 y52 ff2 fs1 fc0 sc0 ls15 ws17">t<span class="_ _0"></span>he appli<span class="_ _3"></span>cat<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n. Thi<span class="_ _3"></span>s is the m<span class="_ _3"></span>o<span class="_ _0"></span>st comm<span class="_ _6"></span>o<span class="_ _7"></span>n exam<span class="_ _6"></span>p<span class="_ _0"></span>le and shou<span class="_ _0"></span>l<span class="_ _3"></span>d be us<span class="_ _3"></span>ed in this manner <span class="_ _0"></span>if<span class="_ _6"></span> </div><div class="t m0 x7 h2 y53 ff2 fs1 fc0 sc0 ls11 ws26">t<span class="_ _0"></span>he appli<span class="_ _3"></span>cat<span class="_ _0"></span>ion uses the same cert<span class="_ _0"></span>ifi<span class="_ _3"></span>cat<span class="_ _0"></span>e <span class="_ _0"></span>fi<span class="_ _3"></span>le f<span class="_ _3"></span>o<span class="_ _0"></span>r each connect<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n. Al<span class="_ _6"></span>t<span class="_ _0"></span>er<span class="_ _0"></span>nat<span class="_ _0"></span>iv<span class="_ _3"></span>ely, <span class="_ _0"></span>i<span class="_ _3"></span>t<span class="_ _0"></span> can </div><div class="t m0 x7 h2 y54 ff2 fs1 fc0 sc0 ls11 ws26">be called once for<span class="_ _0"></span> each<span class="_ _3"></span> secure co<span class="_ _0"></span>nnect<span class="_ _0"></span>i<span class="_ _3"></span>on and f<span class="_ _3"></span>re<span class="_ _0"></span>e<span class="_ _0"></span>d imm<span class="_ _3"></span>ed<span class="_ _0"></span>iate<span class="_ _0"></span>ly<span class="_ _3"></span> after t<span class="_ _0"></span>he co<span class="_ _0"></span>nn<span class="_ _6"></span>ect<span class="_ _7"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n is </div><div class="t m0 x7 h2 y55 ff2 fs1 fc0 sc0 ls2c ws2a">c<span class="_ _0"></span>lo<span class="_ _0"></span>se<span class="_ _0"></span>d.<span class="_ _0"></span> T<span class="_ _0"></span>h<span class="_ _0"></span>is s<span class="_ _0"></span>ho<span class="_ _0"></span>u<span class="_ _0"></span>ld b<span class="_ _0"></span>e d<span class="_ _0"></span>o<span class="_ _7"></span>ne if t<span class="_ _0"></span>he<span class="_ _0"></span> ap<span class="_ _0"></span>p<span class="_ _0"></span>lic<span class="_ _7"></span>at<span class="_ _0"></span>io<span class="_ _0"></span>n <span class="_ _0"></span>ha<span class="_ _0"></span>s mu<span class="_ _7"></span>l<span class="_ _3"></span>t<span class="_ _7"></span>ip<span class="_ _0"></span>le<span class="_ _0"></span> ce<span class="_ _0"></span>r<span class="_ _0"></span>t<span class="_ _0"></span>ific<span class="_ _0"></span>a<span class="_ _0"></span>t<span class="_ _0"></span>e<span class="_ _0"></span> fi<span class="_ _0"></span>les d<span class="_ _0"></span>e<span class="_ _0"></span>pe<span class="_ _7"></span>nd<span class="_ _0"></span>ing<span class="_ _0"></span> </div><div class="t m0 x7 h2 y56 ff2 fs1 fc0 sc0 ls22 ws23">o<span class="_ _0"></span>n <span class="_ _6"></span>t<span class="_ _0"></span>he ident<span class="_ _0"></span>i<span class="_ _3"></span>t<span class="_ _0"></span>y<span class="_ _3"></span> o<span class="_ _0"></span>f<span class="_ _3"></span> the co<span class="_ _0"></span>nn<span class="_ _6"></span>e<span class="_ _0"></span>ct<span class="_ _0"></span>ing ent<span class="_ _0"></span>i<span class="_ _6"></span>t<span class="_ _7"></span>y<span class="_ _6"></span> o<span class="_ _0"></span>r if<span class="_ _6"></span> t<span class="_ _0"></span>here <span class="_ _0"></span>is a secur<span class="_ _0"></span>i<span class="_ _6"></span>t<span class="_ _7"></span>y<span class="_ _6"></span> co<span class="_ _0"></span>ncer<span class="_ _0"></span>n wi<span class="_ _6"></span>t<span class="_ _0"></span>h keep<span class="_ _0"></span>ing the </div><div class="t m0 x7 h2 y57 ff2 fs1 fc0 sc0 ls2d ws2b">RS<span class="_ _3"></span>A<span class="_ _3"></span> key<span class="_ _3"></span>s<span class="_ _3"></span> <span class="_ _0"></span>i<span class="_ _3"></span>n<span class="_ _3"></span> mem<span class="_ _6"></span>or<span class="_ _0"></span>y<span class="_ _6"></span> <span class="_ _0"></span>f<span class="_ _6"></span>o<span class="_ _0"></span>r ex<span class="_ _6"></span>t<span class="_ _0"></span>en<span class="_ _6"></span>d<span class="_ _0"></span>ed<span class="_ _3"></span> pe<span class="_ _3"></span>r<span class="_ _0"></span>i<span class="_ _6"></span>ods of<span class="_ _6"></span> t<span class="_ _0"></span>i<span class="_ _3"></span>m<span class="_ _3"></span>e. Th<span class="_ _6"></span>is<span class="_ _6"></span> API c<span class="_ _3"></span>an<span class="_ _3"></span> als<span class="_ _6"></span>o<span class="_ _0"></span> b<span class="_ _3"></span>e u<span class="_ _3"></span>se<span class="_ _3"></span>d to <span class="_ _3"></span>rea<span class="_ _3"></span>d a </div><div class="t m0 x7 h2 y58 ff2 fs1 fc0 sc0 ls24 ws24">set of keys<span class="_ _3"></span> <span class="_ _0"></span>f<span class="_ _6"></span>o<span class="_ _0"></span>r<span class="_ _0"></span> each vi<span class="_ _6"></span>r<span class="_ _0"></span>t<span class="_ _0"></span>ual<span class="_ _3"></span> server,<span class="_ _0"></span> and reused f<span class="_ _3"></span>or<span class="_ _0"></span> s<span class="_ _3"></span>essi<span class="_ _6"></span>o<span class="_ _7"></span>ns<span class="_ _3"></span> wit<span class="_ _0"></span>hin<span class="_ _3"></span> that<span class="_ _0"></span> vi<span class="_ _6"></span>r<span class="_ _0"></span>t<span class="_ _0"></span>ual<span class="_ _3"></span> ser<span class="_ _0"></span>v<span class="_ _3"></span>er <span class="_ _0"></span>in<span class="_ _3"></span> </div><div class="t m0 x7 h2 y59 ff2 fs1 fc0 sc0 ls24 ws2c">Apache li<span class="_ _3"></span>ke <span class="_ _3"></span>environments.<span class="_ _0"></span> </div><div class="t m0 x7 h2 y5a ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y5b ff2 fs1 fc0 sc0 ls20 ws21">Once the applicat<span class="_ _7"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n i<span class="_ _3"></span>s done wit<span class="_ _0"></span>h the key<span class="_ _3"></span>s they are freed wi<span class="_ _3"></span>t<span class="_ _0"></span>h a ca<span class="_ _0"></span>ll<span class="_ _6"></span> t<span class="_ _0"></span>o<span class="_ _0"></span> </div><div class="t m0 x7 h2 y5c ff6 fs1 fc0 sc0 ls1b ws1">matrixSs<span class="_ _3"></span>lFreeKeys<span class="_ _3"></span><span class="ff2 ls7">. </span></div><div class="t m0 x7 h2 y5d ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y5e ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h6 y5f ff5 fs3 fc0 sc0 ls2e ws2d">2. Creating a Session </div><div class="t m0 x7 h2 y60 ff2 fs1 fc0 sc0 ls16 ws2e">T<span class="_ _0"></span>he ne<span class="_ _7"></span>xt<span class="_ _0"></span> Ma<span class="_ _0"></span>t<span class="_ _0"></span>r<span class="_ _0"></span>ixS<span class="_ _0"></span>S<span class="_ _0"></span>L <span class="_ _0"></span>int<span class="_ _7"></span>egr<span class="_ _0"></span>a<span class="_ _0"></span>t<span class="_ _0"></span>io<span class="_ _0"></span>n p<span class="_ _0"></span>o<span class="_ _0"></span>int<span class="_ _7"></span> in t<span class="_ _7"></span>he a<span class="_ _0"></span>pp<span class="_ _7"></span>lic<span class="_ _0"></span>at<span class="_ _7"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n <span class="_ _0"></span>is t<span class="_ _0"></span>o<span class="_ _0"></span> ide<span class="_ _7"></span>nt<span class="_ _7"></span>ify w<span class="_ _0"></span>he<span class="_ _0"></span>n a ne<span class="_ _0"></span>w<span class="_ _0"></span> </div><div class="t m0 x7 h2 y61 ff2 fs1 fc0 sc0 lse ws10">sess<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n is star<span class="_ _0"></span>t<span class="_ _0"></span>in<span class="_ _6"></span>g<span class="_ _0"></span>. In the case of a cli<span class="_ _3"></span>ent<span class="_ _0"></span>, this is whenever <span class="_ _0"></span>i<span class="_ _3"></span>t<span class="_ _0"></span> chooses to begin one since </div><div class="t m0 x7 h2 y62 ff2 fs1 fc0 sc0 ls2f ws2f">o<span class="_ _0"></span>nly<span class="_ _6"></span> c<span class="_ _0"></span>li<span class="_ _3"></span>e<span class="_ _0"></span>n<span class="_ _3"></span>t<span class="_ _0"></span> <span class="_ _0"></span>i<span class="_ _3"></span>ni<span class="_ _3"></span>t<span class="_ _0"></span>iat<span class="_ _0"></span>ed ses<span class="_ _3"></span>sio<span class="_ _0"></span>n<span class="_ _3"></span>s are support<span class="_ _0"></span>ed in<span class="_ _3"></span> Matr<span class="_ _0"></span>ix<span class="_ _6"></span>SSL. I<span class="_ _0"></span>n the case of<span class="_ _3"></span> a server, a new </div><div class="t m0 x7 h2 y63 ff2 fs1 fc0 sc0 lse ws10">sess<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n shou<span class="_ _0"></span>l<span class="_ _3"></span>d <span class="_ _0"></span>be s<span class="_ _3"></span>t<span class="_ _0"></span>art<span class="_ _0"></span>ed wh<span class="_ _3"></span>en the server accept<span class="_ _0"></span>s a co<span class="_ _0"></span>nn<span class="_ _6"></span>ect<span class="_ _7"></span>i<span class="_ _3"></span>on fro<span class="_ _0"></span>m<span class="_ _6"></span> a c<span class="_ _0"></span>lient<span class="_ _0"></span>. <span class="_ _3"></span>In a </div><div class="t m0 x7 h2 y64 ff2 fs1 fc0 sc0 ls15 ws17">socket based applicat<span class="_ _0"></span>ion, t<span class="_ _0"></span>h<span class="_ _3"></span>is woul<span class="_ _3"></span>d t<span class="_ _0"></span>y<span class="_ _3"></span>p<span class="_ _0"></span>ically<span class="_ _3"></span> happen when t<span class="_ _0"></span>he <span class="_ _3"></span><span class="ff6 ls30 ws1">accept <span class="ff2 ls11 ws26">so<span class="_ _0"></span>cket call </span></span></div><div class="t m0 x7 h2 y65 ff2 fs1 fc0 sc0 ls13 ws15">ret<span class="_ _0"></span>urns<span class="_ _3"></span>. T<span class="_ _0"></span>he appli<span class="_ _3"></span>cat<span class="_ _0"></span>ion sets up a new s<span class="_ _3"></span>essi<span class="_ _3"></span>o<span class="_ _0"></span>n with the A<span class="_ _3"></span>PI <span class="ff6 ls31 ws1">matrixSslNe<span class="_ _0"></span>w<span class="_ _3"></span>Session<span class="ff2 ls32 ws30">. Th<span class="_ _6"></span>e </span></span></div><div class="t m0 x7 h2 y66 ff2 fs1 fc0 sc0 ls33 ws1">retu<span class="_ _3"></span>rn<span class="_ _3"></span>ed <span class="ff6 ls34">ssl_t <span class="_ _0"></span></span><span class="ls35 ws31">val<span class="_ _3"></span>ue<span class="_ _3"></span> will<span class="_ _3"></span> beco<span class="_ _0"></span>m<span class="_ _6"></span>e the<span class="_ _3"></span> in<span class="_ _3"></span>put para<span class="_ _3"></span>m<span class="_ _6"></span>eter f<span class="_ _6"></span>o<span class="_ _0"></span>r m<span class="_ _6"></span>o<span class="_ _0"></span>st <span class="_ _3"></span>of<span class="_ _3"></span> the re<span class="_ _3"></span>m<span class="_ _6"></span>ainin<span class="_ _3"></span>g APIs<span class="_ _6"></span> </span></div><div class="t m0 x7 h2 y67 ff2 fs1 fc0 sc0 ls13 ws15">t<span class="_ _0"></span>hat act a<span class="_ _3"></span>t a sessi<span class="_ _6"></span>o<span class="_ _7"></span>n level<span class="_ _3"></span>. </div><div class="t m0 x7 h2 y68 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y69 ff2 fs1 fc0 sc0 ls36 ws32">The required in<span class="_ _3"></span>put par<span class="_ _0"></span>ame<span class="_ _3"></span>t<span class="_ _0"></span>ers <span class="_ _3"></span>to<span class="_ _0"></span> <span class="ff6 ls31 ws1">matrix<span class="_ _3"></span>SslNew<span class="_ _6"></span>S<span class="_ _0"></span>ession <span class="ff2 lse ws10">are the ke<span class="_ _0"></span>y<span class="_ _6"></span> st<span class="_ _0"></span>ruct<span class="_ _0"></span>ure from the </span></span></div><div class="t m0 x7 h2 y6a ff2 fs1 fc0 sc0 ls37 ws33">previ<span class="_ _3"></span>ous ca<span class="_ _0"></span>ll<span class="_ _6"></span> t<span class="_ _0"></span>o<span class="_ _0"></span> <span class="ff6 ls2a ws1">matrixSslReadK<span class="_ _3"></span>eys<span class="ff2 ls9 wsb"> an<span class="_ _6"></span>d t<span class="_ _0"></span>he flag <span class="ff6 ls2a ws1">SSL_F<span class="_ _3"></span>LAGS_SE<span class="_ _0"></span>RVER <span class="_ _3"></span><span class="ff2 ls38 ws34">or<span class="_ _3"></span> 0<span class="_ _3"></span> (<span class="_ _3"></span>f<span class="_ _6"></span>or a<span class="_ _6"></span> </span></span></span></span></div><div class="t m0 x7 h2 y6b ff2 fs1 fc0 sc0 ls12 ws35">client<span class="_ _0"></span> sessi<span class="_ _6"></span>o<span class="_ _7"></span>n). In the commercia<span class="_ _0"></span>l<span class="_ _6"></span> <span class="_ _0"></span>ver<span class="_ _0"></span>sion o<span class="_ _0"></span>f<span class="_ _3"></span> Mat<span class="_ _0"></span>rix<span class="_ _3"></span>SSL t<span class="_ _0"></span>he server <span class="_ _0"></span>m<span class="_ _3"></span>ay a<span class="_ _0"></span>ls<span class="_ _3"></span>o<span class="_ _0"></span> choo<span class="_ _0"></span>se to </div><div class="t m0 x7 h2 y6c ff2 fs1 fc0 sc0 ls19 ws1b">include the flag <span class="ff6 ls39 ws1">SSL_F<span class="_ _3"></span>LAGS_CLIENT_AUTH <span class="ff2 lsa wsc">if<span class="_ _3"></span> cl<span class="_ _0"></span>ient aut<span class="_ _0"></span>hen<span class="_ _3"></span>t<span class="_ _0"></span>icat<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n is<span class="_ _3"></span> requ<span class="_ _0"></span>i<span class="_ _3"></span>r<span class="_ _0"></span>ed. T<span class="_ _0"></span>he </span></span></div><div class="t m0 x7 h2 y6d ff2 fs1 fc0 sc0 ls3a ws36">Ma<span class="_ _0"></span>t<span class="_ _0"></span>r<span class="_ _0"></span>ixS<span class="_ _0"></span>S<span class="_ _0"></span>L <span class="_ _0"></span>lib<span class="_ _0"></span>r<span class="_ _0"></span>ar<span class="_ _7"></span>y<span class="_ _3"></span> mu<span class="_ _7"></span>st<span class="_ _0"></span> ha<span class="_ _0"></span>v<span class="_ _0"></span>e be<span class="_ _0"></span> co<span class="_ _7"></span>mp<span class="_ _0"></span>i<span class="_ _0"></span>led<span class="_ _0"></span> w<span class="_ _0"></span>it<span class="_ _0"></span>h <span class="ff6 ls3b ws1">US<span class="_ _0"></span>E_<span class="_ _0"></span>CLIE<span class="_ _0"></span>NT_A<span class="_ _0"></span>UTH </span><span class="ls3c ws37">defined i<span class="_ _3"></span>n<span class="_ _3"></span> order </span></div><div class="t m0 x7 h2 y6e ff2 fs1 fc0 sc0 ls4 ws5">to use <span class="_ _3"></span>t<span class="_ _0"></span>his fl<span class="_ _3"></span>ag. </div><div class="t m0 x7 h2 y6f ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y70 ff2 fs1 fc0 sc0 ls12 ws35">For<span class="_ _0"></span> cli<span class="_ _3"></span>ent<span class="_ _0"></span> cases, t<span class="_ _0"></span>here is<span class="_ _3"></span> an opt<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>nal<span class="_ _3"></span> <span class="ff6 ls1 ws1">sessonId </span><span class="ls18 ws1a">par<span class="_ _0"></span>ameter that ident<span class="_ _0"></span>if<span class="_ _3"></span>ies a previ<span class="_ _6"></span>o<span class="_ _0"></span>us<span class="_ _0"></span>ly<span class="_ _3"></span> </span></div><div class="t m0 x7 h2 y71 ff2 fs1 fc0 sc0 ls34 ws38">o<span class="_ _0"></span>pen sess<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _7"></span>n<span class="_ _3"></span> to<span class="_ _0"></span> r<span class="_ _0"></span>esu<span class="_ _0"></span>m<span class="_ _6"></span>e<span class="_ _0"></span> a se<span class="_ _0"></span>ss<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n.<span class="_ _0"></span> A sess<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _7"></span>n<span class="_ _3"></span> <span class="_ _0"></span>i<span class="_ _3"></span>d ca<span class="_ _0"></span>n be r<span class="_ _0"></span>et<span class="_ _0"></span>r<span class="_ _0"></span>i<span class="_ _3"></span>e<span class="_ _0"></span>ved fro<span class="_ _0"></span>m a ca<span class="_ _0"></span>ll<span class="_ _3"></span> t<span class="_ _0"></span>o<span class="_ _0"></span> </div><div class="t m0 x7 h2 y72 ff6 fs1 fc0 sc0 ls3d ws1">matrixSslGetSessionId <span class="ff2 ls9 wsb">once a sessi<span class="_ _6"></span>o<span class="_ _7"></span>n has<span class="_ _3"></span> been <span class="_ _0"></span>n<span class="_ _3"></span>eg<span class="_ _0"></span>ot<span class="_ _0"></span>i<span class="_ _6"></span>at<span class="_ _0"></span>ed and bef<span class="_ _3"></span>or<span class="_ _0"></span>e it <span class="_ _0"></span>i<span class="_ _6"></span>s de<span class="_ _0"></span>leted.<span class="_ _0"></span> <span class="_ _3"></span> The </span></div><div class="t m0 x7 h2 y73 ff2 fs1 fc0 sc0 ls3e ws39">se<span class="_ _0"></span>s<span class="_ _0"></span>s<span class="_ _0"></span>io<span class="_ _0"></span>n id pa<span class="_ _0"></span>r<span class="_ _0"></span>a<span class="_ _0"></span>met<span class="_ _0"></span>e<span class="_ _0"></span>r<span class="_ _0"></span> must<span class="_ _7"></span> <span class="_ _6"></span>a<span class="_ _0"></span>lw<span class="_ _0"></span>a<span class="_ _0"></span>ys be<span class="_ _0"></span> NUL<span class="_ _0"></span>L<span class="_ _0"></span> fo<span class="_ _0"></span>r se<span class="_ _0"></span>rver<span class="_ _0"></span> imp<span class="_ _7"></span>leme<span class="_ _7"></span>nt<span class="_ _0"></span>at<span class="_ _7"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n<span class="_ _0"></span>s.<span class="_ _0"></span> </div><div class="t m0 x7 h2 y74 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y75 ff2 fs1 fc0 sc0 lsd wsf">A fi<span class="_ _3"></span>nal co<span class="_ _0"></span>nsiderat<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n at thi<span class="_ _3"></span>s po<span class="_ _0"></span>in<span class="_ _3"></span>t<span class="_ _0"></span> of<span class="_ _3"></span> integrat<span class="_ _0"></span>ion is wh<span class="_ _3"></span>ether o<span class="_ _0"></span>r not to regis<span class="_ _3"></span>t<span class="_ _0"></span>er a </div><div class="t m0 x7 h2 y76 ff2 fs1 fc0 sc0 ls22 ws23">cert<span class="_ _0"></span>ifi<span class="_ _3"></span>cat<span class="_ _0"></span>e validat<span class="_ _0"></span>i<span class="_ _3"></span>on ca<span class="_ _0"></span>llback f<span class="_ _3"></span>u<span class="_ _0"></span>nct<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n wit<span class="_ _0"></span>h the <span class="ff6 ls31 ws1">matr<span class="_ _3"></span>ixSslSetC<span class="_ _3"></span>ertValidator <span class="ff2 ls3f ws3a">AP<span class="_ _0"></span>I<span class="_ _0"></span>.<span class="_ _0"></span> T<span class="_ _0"></span>his<span class="_ _0"></span> </span></span></div><div class="t m0 x7 h2 y77 ff2 fs1 fc0 sc0 ls40 ws3b">rou<span class="_ _6"></span>ti<span class="_ _6"></span>n<span class="_ _3"></span>e<span class="_ _3"></span> ta<span class="_ _3"></span>k<span class="_ _3"></span>e<span class="_ _3"></span>s<span class="_ _6"></span> th<span class="_ _6"></span>e S<span class="_ _3"></span>S<span class="_ _3"></span>L<span class="_ _3"></span><span class="ff6 ls1 ws1"> <span class="ff2 ls2f ws2f">sessi<span class="_ _6"></span>o<span class="_ _7"></span>n<span class="_ _3"></span> a<span class="_ _0"></span>n<span class="_ _3"></span>d a f<span class="_ _3"></span>u<span class="_ _0"></span>nction po<span class="_ _0"></span>in<span class="_ _3"></span>ter<span class="_ _0"></span> as argum<span class="_ _6"></span>e<span class="_ _0"></span>nts.<span class="_ _0"></span> The regi<span class="_ _6"></span>st<span class="_ _0"></span>ered </span></span></div><div class="t m0 x7 h2 y78 ff2 fs1 fc0 sc0 ls1f ws20">funct<span class="_ _0"></span>i<span class="_ _3"></span>on will<span class="_ _6"></span> <span class="_ _0"></span>be <span class="_ _0"></span>inv<span class="_ _3"></span>o<span class="_ _0"></span>ked durin<span class="_ _3"></span>g the port<span class="_ _0"></span>i<span class="_ _3"></span>on of the h<span class="_ _3"></span>and<span class="_ _0"></span>shake process <span class="_ _0"></span>in<span class="_ _6"></span> which t<span class="_ _0"></span>h<span class="_ _3"></span>e </div><div class="t m0 x7 h2 y79 ff2 fs1 fc0 sc0 ls41 ws3c">ce<span class="_ _3"></span>rtif<span class="_ _6"></span>icate i<span class="_ _6"></span>s b<span class="_ _6"></span>e<span class="_ _0"></span>i<span class="_ _3"></span>ng<span class="_ _3"></span> <span class="_ _0"></span>v<span class="_ _6"></span>er<span class="_ _0"></span>i<span class="_ _3"></span>fi<span class="_ _3"></span>ed<span class="_ _3"></span>. Thi<span class="_ _6"></span>s A<span class="_ _3"></span>PI sh<span class="_ _6"></span>o<span class="_ _0"></span>ul<span class="_ _6"></span>d b<span class="_ _3"></span>e use<span class="_ _3"></span>d w<span class="_ _3"></span>h<span class="_ _3"></span>en<span class="_ _3"></span> the<span class="_ _3"></span> M<span class="_ _3"></span>atri<span class="_ _3"></span>x<span class="_ _3"></span>SSL<span class="_ _3"></span> def<span class="_ _3"></span>aul<span class="_ _6"></span>t </div><div class="t m0 x7 h2 y7a ff2 fs1 fc0 sc0 lsa wsc">cert<span class="_ _0"></span>ifi<span class="_ _3"></span>cat<span class="_ _0"></span>e vali<span class="_ _3"></span>dat<span class="_ _7"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n is not deem<span class="_ _3"></span>ed su<span class="_ _0"></span>fficient<span class="_ _0"></span> or i<span class="_ _3"></span>f<span class="_ _3"></span> t<span class="_ _0"></span>he app<span class="_ _0"></span>li<span class="_ _6"></span>cat<span class="_ _7"></span>i<span class="_ _3"></span>on would li<span class="_ _3"></span>k<span class="_ _0"></span>e to<span class="_ _0"></span> expose </div><div class="t m0 x7 h2 y7b ff2 fs1 fc0 sc0 ls42 ws3d">t<span class="_ _0"></span>he cer<span class="_ _3"></span>t<span class="_ _0"></span>ificate <span class="_ _0"></span>inf<span class="_ _6"></span>o<span class="_ _0"></span>r<span class="_ _0"></span>m<span class="_ _3"></span>at<span class="_ _7"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n to the user f<span class="_ _3"></span>o<span class="_ _0"></span>r any<span class="_ _3"></span> reaso<span class="_ _0"></span>n. In the comm<span class="_ _3"></span>erc<span class="_ _0"></span>ial vers<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _7"></span>n this </div><div class="t m0 x7 h2 y7c ff2 fs1 fc0 sc0 lsa wsc">callback reg<span class="_ _0"></span>i<span class="_ _3"></span>st<span class="_ _0"></span>rat<span class="_ _0"></span>i<span class="_ _3"></span>on on<span class="_ _0"></span>ly<span class="_ _6"></span> <span class="_ _0"></span>makes sense on t<span class="_ _0"></span>he s<span class="_ _3"></span>erver si<span class="_ _3"></span>d<span class="_ _0"></span>e if<span class="_ _3"></span> cl<span class="_ _0"></span>ient aut<span class="_ _0"></span>hen<span class="_ _3"></span>t<span class="_ _0"></span>i<span class="_ _3"></span>cat<span class="_ _7"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n is </div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b8aa215da9b288bef99b7/bg4.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">Dev<span class="_ _0"></span>eloper<span class="_ _0"></span>'s Guide <span class="_ _1"> </span> <span class="_ _2"> </span>Matr<span class="_ _0"></span>ixSS<span class="_ _0"></span>L 1<span class="_ _3"></span>.8<span class="ff2 fs1 ls1 ws1"> </span></div><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls2 ws2">Page 4 of 17 <span class="_ _4"> </span> <span class="_ _5"> </span><span class="fc1">Copyri<span class="_ _0"></span>ght<span class="_ _0"></span> ©2002-2006 Peer<span class="_ _0"></span>Sec Net<span class="_ _0"></span>works, Inc.<span class="_ _0"></span></span><span class="ff2 fs1 ls1 ws1"> </span></div><div class="t m0 x7 h2 y4f ff2 fs1 fc0 sc0 lsa wsc">being used as<span class="_ _3"></span> t<span class="_ _0"></span>he appli<span class="_ _3"></span>cat<span class="_ _7"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n will<span class="_ _3"></span> be rece<span class="_ _0"></span>iving the client cert<span class="_ _0"></span>ificate as part of the </div><div class="t m0 x7 h2 y50 ff2 fs1 fc0 sc0 ls3f ws1">ha<span class="_ _0"></span>nd<span class="_ _7"></span>sha<span class="_ _0"></span>k<span class="_ _0"></span>e.<span class="_ _0"></span> </div><div class="t m0 x7 h2 y51 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y52 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x1 h6 y7d ff5 fs3 fc0 sc0 ls43 ws3e">3. Ha<span class="_ _0"></span>nd<span class="_ _3"></span>s<span class="_ _0"></span>ha<span class="_ _0"></span>k<span class="_ _3"></span>ing </div><div class="t m0 x7 h2 y7e ff2 fs1 fc0 sc0 lsa wsc">Wi<span class="_ _6"></span>t<span class="_ _7"></span>h the sessi<span class="_ _3"></span>o<span class="_ _0"></span>n<span class="_ _3"></span> <span class="_ _0"></span>now est<span class="_ _0"></span>abl<span class="_ _3"></span>ished, a client <span class="_ _0"></span>ini<span class="_ _6"></span>t<span class="_ _7"></span>i<span class="_ _3"></span>at<span class="_ _0"></span>es a h<span class="_ _3"></span>andshake by <span class="_ _0"></span>fi<span class="_ _3"></span>rst<span class="_ _0"></span> const<span class="_ _0"></span>ructin<span class="_ _3"></span>g t<span class="_ _0"></span>he </div><div class="t m0 x7 h2 y7f ff2 fs1 fc0 sc0 ls24 ws24">CLIENT_HE<span class="_ _0"></span>LLO m<span class="_ _3"></span>essage wi<span class="_ _3"></span>t<span class="_ _0"></span>h a call to <span class="ff6 ls2a ws3f">matrixSslEncodeC<span class="_ _3"></span>lientHello. <span class="ff2 ls1e ws1f">The c<span class="_ _7"></span>lie<span class="_ _0"></span>nt<span class="_ _0"></span> </span></span></div><div class="t m0 x7 h2 y80 ff2 fs1 fc0 sc0 ls22 ws23">sends the co<span class="_ _0"></span>ns<span class="_ _3"></span>t<span class="_ _0"></span>ructed data to the serv<span class="_ _3"></span>er.<span class="_ _0"></span> When the server receives not<span class="_ _0"></span>i<span class="_ _3"></span>ce t<span class="_ _0"></span>hat a cli<span class="_ _3"></span>ent<span class="_ _0"></span> is<span class="_ _3"></span> </div><div class="t m0 x7 h2 y81 ff2 fs1 fc0 sc0 ls19 ws1b">request<span class="_ _0"></span>in<span class="_ _6"></span>g a secur<span class="_ _0"></span>e co<span class="_ _0"></span>mm<span class="_ _3"></span>u<span class="_ _0"></span>nicat<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n sessio<span class="_ _0"></span>n<span class="_ _3"></span> and the funct<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n <span class="ff6 ls25 ws1">matrix<span class="_ _3"></span>S<span class="_ _0"></span>slN<span class="_ _3"></span>ewSession <span class="ff2 ls3f">ha<span class="_ _0"></span>s </span></span></div><div class="t m0 x7 h2 y82 ff2 fs1 fc0 sc0 ls11 ws26">been called to<span class="_ _0"></span> create a new sessi<span class="_ _6"></span>o<span class="_ _7"></span>n<span class="_ _3"></span> st<span class="_ _0"></span>ructur<span class="_ _0"></span>e <span class="_ _3"></span>t<span class="_ _0"></span>he ap<span class="_ _3"></span>plicat<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n can then<span class="_ _3"></span> read <span class="_ _0"></span>in<span class="_ _3"></span> t<span class="_ _0"></span>he cli<span class="_ _3"></span>ent<span class="_ _0"></span> </div><div class="t m0 x7 h2 y83 ff2 fs1 fc0 sc0 ls29 ws28">message data. All<span class="_ _6"></span> <span class="_ _0"></span>inco<span class="_ _0"></span>ming m<span class="_ _6"></span>e<span class="_ _0"></span>ssages s<span class="_ _0"></span>h<span class="_ _3"></span>o<span class="_ _0"></span>uld be pas<span class="_ _3"></span>sed to <span class="ff6 ls44 ws1">matrixSslDecode<span class="_ _3"></span> <span class="ff2 lsb ws40">which then </span></span></div><div class="t m0 x7 h2 y84 ff2 fs1 fc0 sc0 ls15 ws17">pro<span class="_ _0"></span>cesses the m<span class="_ _3"></span>essage and dr<span class="_ _0"></span>iv<span class="_ _3"></span>es the handshake th<span class="_ _0"></span>ro<span class="_ _0"></span>ugh <span class="_ _6"></span>t<span class="_ _0"></span>he b<span class="_ _3"></span>u<span class="_ _0"></span>il<span class="_ _6"></span>t<span class="_ _0"></span>-<span class="_ _0"></span>in<span class="_ _3"></span> SS<span class="_ _0"></span>Lv3 state </div><div class="t m0 x7 h2 y85 ff2 fs1 fc0 sc0 ls45 ws41">mac<span class="_ _7"></span>hine<span class="_ _0"></span>.<span class="_ _0"></span> T<span class="_ _0"></span>he p<span class="_ _0"></span>a<span class="_ _0"></span>r<span class="_ _0"></span>a<span class="_ _0"></span>met<span class="_ _0"></span>e<span class="_ _0"></span>r<span class="_ _0"></span>s t<span class="_ _0"></span>o <span class="ff6 ls44 ws1">matrixSslDecode<span class="_ _3"></span> <span class="_ _0"></span><span class="ff2 ls33 ws42">in<span class="_ _6"></span>clude th<span class="_ _3"></span>e SSL<span class="_ _3"></span> s<span class="_ _6"></span>t<span class="_ _0"></span>ruc<span class="_ _3"></span>ture<span class="_ _3"></span> re<span class="_ _6"></span>t<span class="_ _0"></span>urn<span class="_ _3"></span>ed f<span class="_ _6"></span>ro<span class="_ _0"></span>m<span class="_ _6"></span> </span></span></div><div class="t m0 x7 h2 y86 ff2 fs1 fc0 sc0 ls12 ws35">t<span class="_ _0"></span>he call<span class="_ _6"></span> t<span class="_ _0"></span>o<span class="_ _0"></span> <span class="ff6 ls31 ws1">matrixSslN<span class="_ _3"></span>ew<span class="_ _6"></span>S<span class="_ _0"></span>ession<span class="ff2 ls2f ws2f">, input and output<span class="_ _0"></span> b<span class="_ _6"></span>u<span class="_ _0"></span>ffers,<span class="_ _0"></span> an<span class="_ _3"></span>d alert<span class="_ _0"></span> and error output </span></span></div><div class="t m0 x7 h2 y87 ff2 fs1 fc0 sc0 ls27 ws27">param<span class="_ _6"></span>eters<span class="_ _3"></span>. Re<span class="_ _3"></span>f<span class="_ _6"></span>er to the<span class="_ _3"></span> A<span class="_ _3"></span>PI d<span class="_ _6"></span>o<span class="_ _0"></span>cum<span class="_ _6"></span>e<span class="_ _0"></span>n<span class="_ _3"></span>tati<span class="_ _3"></span>on f<span class="_ _6"></span>o<span class="_ _0"></span>r m<span class="_ _3"></span>ore d<span class="_ _3"></span>e<span class="_ _3"></span>tai<span class="_ _3"></span>l<span class="_ _3"></span>s. </div><div class="t m0 x7 h2 y88 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y89 ff2 fs1 fc0 sc0 ls46 ws1">Th<span class="_ _3"></span>e <span class="ff6 ls44">matr<span class="_ _3"></span>ixSslDecode <span class="ff2 ls13 ws15">API is a power<span class="_ _0"></span>f<span class="_ _3"></span>ul f<span class="_ _3"></span>u<span class="_ _0"></span>nct<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n that<span class="_ _0"></span> processes handshake <span class="_ _0"></span>m<span class="_ _3"></span>essag<span class="_ _0"></span>es </span></span></div><div class="t m0 x7 h2 y60 ff2 fs1 fc0 sc0 lsa ws15">f<span class="_ _3"></span>or<span class="_ _0"></span> clients and servers as well as decod<span class="_ _0"></span>ing appli<span class="_ _3"></span>cat<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _7"></span>n<span class="_ _3"></span> dat<span class="_ _0"></span>a. Its re<span class="_ _3"></span>tu<span class="_ _0"></span>rn code <span class="_ _3"></span>tells the </div><div class="t m0 x7 h2 y61 ff2 fs1 fc0 sc0 lsd wsf">app<span class="_ _0"></span>li<span class="_ _6"></span>cat<span class="_ _7"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n what<span class="_ _0"></span> <span class="_ _3"></span>t<span class="_ _0"></span>he m<span class="_ _3"></span>essage was and ho<span class="_ _0"></span>w i<span class="_ _6"></span>t<span class="_ _0"></span> is to b<span class="_ _3"></span>e <span class="_ _0"></span>handled. </div><div class="t m0 x7 h2 y62 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x7 h2 y63 ff2 fs1 fc0 sc0 lsd wsf">The steps bel<span class="_ _3"></span>ow o<span class="_ _0"></span>ut<span class="_ _0"></span>li<span class="_ _6"></span>n<span class="_ _0"></span>e the pro<span class="_ _0"></span>per usage of <span class="ff6 ls44 ws1">matr<span class="_ _3"></span>ixSslDec<span class="_ _3"></span>ode<span class="ff2 ls20 ws21"> on t<span class="_ _0"></span>he s<span class="_ _3"></span>erver side when </span></span></div><div class="t m0 x7 h2 y64 ff2 fs1 fc0 sc0 ls2f ws2f">handshak<span class="_ _0"></span>i<span class="_ _3"></span>ng. A socket<span class="_ _0"></span>s b<span class="_ _6"></span>ased <span class="_ _0"></span>implement<span class="_ _0"></span>ation i<span class="_ _3"></span>s assumed in these steps.<span class="_ _0"></span> </div><div class="t m0 x7 h2 y65 ff2 fs1 fc0 sc0 ls1 ws1"> </div><div class="t m0 x8 h2 y66 ff2 fs1 fc0 sc0 ls30 ws43">1. <span class="_ _c"> </span>The applicat<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>ns reads t<span class="_ _0"></span>he cli<span class="_ _3"></span>e<span class="_ _0"></span>nt data off<span class="_ _6"></span> t<span class="_ _0"></span>he socket with <span class="ff6 ls34 ws1">recv<span class="_ _0"></span><span class="ff2 ls1"> </span></span></div><div class="t m0 x8 h2 y67 ff2 fs1 fc0 sc0 ls1 ws1">2. <span class="_ _c"> </span><span class="ff6 ls47">matrixSslDe<span class="_ _3"></span>code <span class="_ _0"></span><span class="ff2 ls9 wsb">i<span class="_ _3"></span>s cal<span class="_ _0"></span>l<span class="_ _3"></span>ed w<span class="_ _0"></span>i<span class="_ _6"></span>t<span class="_ _7"></span>h the cli<span class="_ _3"></span>ent<span class="_ _0"></span> da<span class="_ _3"></span>t<span class="_ _0"></span>a </span></span></div><div class="t m0 x8 h2 y68 ff2 fs1 fc0 sc0 ls1a ws1c">3. <span class="_ _c"> </span>Th<span class="_ _6"></span>e return<span class="_ _6"></span> val<span class="_ _6"></span>ue f<span class="_ _6"></span>ro<span class="_ _7"></span>m<span class="_ _6"></span> <span class="ff6 ls2a ws1">matrix<span class="_ _3"></span>SslDecode <span class="_ _0"></span><span class="ff2 ls48 ws44">is<span class="_ _3"></span> t<span class="_ _0"></span>ested to see wh<span class="_ _3"></span>at<span class="_ _0"></span> act<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n t<span class="_ _0"></span>he </span></span></div><div class="t m0 x9 h2 y69 ff2 fs1 fc0 sc0 ls30 ws43">app<span class="_ _0"></span>li<span class="_ _6"></span>cat<span class="_ _7"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n is requ<span class="_ _0"></span>i<span class="_ _6"></span>r<span class="_ _0"></span>ed to<span class="_ _0"></span> do wi<span class="_ _6"></span>t<span class="_ _0"></span>h the outp<span class="_ _0"></span>u<span class="_ _3"></span>t<span class="_ _0"></span> buf<span class="_ _3"></span>fer. T<span class="_ _0"></span>h<span class="_ _3"></span>e li<span class="_ _3"></span>st o<span class="_ _0"></span>f possible<span class="_ _3"></span> ret<span class="_ _0"></span>ur<span class="_ _0"></span>n<span class="_ _3"></span> </div><div class="t m0 x9 h2 y6a ff2 fs1 fc0 sc0 ls30 ws43">values and appropr<span class="_ _0"></span>i<span class="_ _6"></span>at<span class="_ _0"></span>e act<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n include: </div><div class="t m0 xa h2 y6b ff2 fs1 fc0 sc0 ls20 ws21">a. <span class="_ _d"> </span>SSL_SE<span class="_ _0"></span>ND_RESP<span class="_ _0"></span>ONSE - Thi<span class="_ _6"></span>s <span class="_ _0"></span>value indicat<span class="_ _0"></span>es t<span class="_ _0"></span>he m<span class="_ _3"></span>essage was part<span class="_ _0"></span> </div><div class="t m0 xb h2 y6c ff2 fs1 fc0 sc0 ls13 ws15">o<span class="_ _0"></span>f<span class="_ _6"></span> t<span class="_ _0"></span>he SSLv3 standard and a reply is expected.<span class="_ _0"></span> <span class="_ _3"></span>The applicat<span class="_ _0"></span>i<span class="_ _3"></span>o<span class="_ _0"></span>n<span class="_ _3"></span> sho<span class="_ _0"></span>uld </div><div class="t m0 xb h2 y6d ff2 fs1 fc0 sc0 ls49 ws45">se<span class="_ _0"></span>nd<span class="_ _0"></span> t<span class="_ _7"></span>he o<span class="_ _0"></span>ut<span class="_ _7"></span>put<span class="_ _0"></span> bu<span class="_ _7"></span>ff<span class="_ _3"></span>er<span class="_ _0"></span> t<span class="_ _0"></span>o<span class="_ _7"></span> <span class="_ _3"></span>t<span class="_ _0"></span>he<span class="_ _0"></span> c<span class="_ _0"></span>lie<span class="_ _0"></span>nt<span class="_ _7"></span> wit<span class="_ _0"></span>h <span class="ff6 ls1 ws1">send </span><span class="ls4a ws46">an<span class="_ _3"></span>d<span class="_ _3"></span> th<span class="_ _6"></span>en<span class="_ _3"></span> c<span class="_ _3"></span>all<span class="_ _6"></span> </span></div><div class="t m0 xb h2 y6e ff6 fs1 fc0 sc0 ls47 ws1">matrixSs<span class="_ _3"></span>lDecode <span class="ff2 ls4a ws46">ag<span class="_ _3"></span>ai<span class="_ _3"></span>n<span class="_ _6"></span> to s<span class="_ _3"></span>ee<span class="_ _6"></span> if<span class="_ _6"></span> any<span class="_ _6"></span> m<span class="_ _6"></span>ore m<span class="_ _6"></span>ess<span class="_ _3"></span>ag<span class="_ _6"></span>e data<span class="_ _6"></span> n<span class="_ _3"></span>e<span class="_ _3"></span>e<span class="_ _3"></span>ds<span class="_ _6"></span> to b<span class="_ _3"></span>e<span class="_ _3"></span> </span></div><div class="t m0 xb h2 y6f ff2 fs1 fc0 sc0 ls4 ws1">deco<span class="_ _0"></span>ded. </div><div class="t m0 xa h2 y70 ff2 fs1 fc0 sc0 ls42 ws3d">b. <span class="_ _c"> </span>SSL_E<span class="_ _0"></span>RROR – This v<span class="_ _3"></span>a<span class="_ _0"></span>lue indicat<span class="_ _0"></span>es t<span class="_ _0"></span>h<span class="_ _3"></span>ere has been an err<span class="_ _0"></span>or while </div><div class="t m0 xb h2 y71 ff2 fs1 fc0 sc0 ls4b ws47">a<span class="_ _3"></span>tte<span class="_ _6"></span>m<span class="_ _6"></span>pti<span class="_ _6"></span>n<span class="_ _3"></span>g t<span class="_ _6"></span>o de<span class="_ _3"></span>c<span class="_ _6"></span>ode<span class="_ _6"></span> th<span class="_ _6"></span>e<span class="_ _3"></span> da<span class="_ _6"></span>ta<span class="_ _6"></span> or<span class="_ _6"></span> th<span class="_ _6"></span>at a<span class="_ _6"></span> b<span class="_ _6"></span>ad<span class="_ _6"></span> <span class="_ _0"></span>m<span class="_ _6"></span>es<span class="_ _3"></span>s<span class="_ _6"></span>age<span class="_ _3"></span> w<span class="_ _3"></span>a<span class="_ _3"></span>s<span class="_ _3"></span> s<span class="_ _6"></span>en<span class="_ _3"></span>t.<span class="_ _6"></span> Th<span class="_ _6"></span>e<span class="_ _3"></span> </div><div class="t m0 xb h2 y72 ff2 fs1 fc0 sc0 lsf ws11">app<span class="_ _0"></span>li<span class="_ _6"></span>cat<span class="_ _7"></span>i<span class="_ _3"></span>on shou<span class="_ _0"></span>l<span class="_ _3"></span>d att<span class="_ _0"></span>em<span class="_ _3"></span>pt<span class="_ _0"></span> to send the out buffer to the client as a reply </div><div class="t m0 xb h2 y73 ff2 fs1 fc0 sc0 ls20 ws21">and then cl<span class="_ _3"></span>o<span class="_ _0"></span>se the socket<span class="_ _0"></span>. </div><div class="t m0 xa h2 y74 ff2 fs1 fc0 sc0 lse ws10">c. <span class="_ _d"> </span>SSL_ALERT<span class="_ _0"></span> – This<span class="_ _3"></span> va<span class="_ _0"></span>lue in<span class="_ _3"></span>d<span class="_ _0"></span>icates t<span class="_ _0"></span>he m<span class="_ _3"></span>essage <span class="_ _0"></span>was an<span class="_ _3"></span> alert<span class="_ _0"></span> sent </div><div class="t m0 xb h2 y75 ff2 fs1 fc0 sc0 lsa wsc">f<span class="_ _3"></span>ro<span class="_ _7"></span>m<span class="_ _6"></span> t<span class="_ _0"></span>he cli<span class="_ _3"></span>ent<span class="_ _0"></span> and the applicat<span class="_ _0"></span>i<span class="_ _6"></span>o<span class="_ _0"></span>n shou<span class="_ _0"></span>l<span class="_ _3"></span>d close t<span class="_ _0"></span>he socket.<span class="_ _0"></span> </div><div class="t m0 xa h2 y76 ff2 fs1 fc0 sc0 lsa wsc">d. <span class="_ _c"> </span>SSL_PARTI<span class="_ _0"></span>AL<span class="_ _3"></span> – This value <span class="_ _0"></span>in<span class="_ _6"></span>d<span class="_ _0"></span>icat<span class="_ _0"></span>es that<span class="_ _0"></span> <span class="_ _3"></span>t<span class="_ _0"></span>he i<span class="_ _6"></span>np<span class="_ _0"></span>ut buffer was an<span class="_ _3"></span> </div><div class="t m0 xb h2 y77 ff2 fs1 fc0 sc0 lsf ws11">inco<span class="_ _0"></span>m<span class="_ _3"></span>plet<span class="_ _0"></span>e message or<span class="_ _0"></span> <span class="_ _3"></span>recor<span class="_ _0"></span>d <span class="_ _3"></span>(or<span class="_ _0"></span> no da<span class="_ _6"></span>t<span class="_ _0"></span>a at all<span class="_ _3"></span> t<span class="_ _0"></span>o <span class="_ _3"></span>parse).<span class="_ _0"></span> If<span class="_ _6"></span> t<span class="_ _0"></span>he </div><div class="t m0 xb h2 y78 ff2 fs1 fc0 sc0 ls11 ws48">hands<span class="_ _0"></span>hake i<span class="_ _6"></span>s inco<span class="_ _0"></span>m<span class="_ _6"></span>p<span class="_ _0"></span>let<span class="_ _0"></span>e <span class="_ _3"></span>(<span class="ff6 ls4c ws1">!matrixSslHandshakeIsComplete())<span class="_ _0"></span></span><span class="ls7 ws49">, the<span class="_ _3"></span> </span></div><div class="t m0 xb h2 y79 ff2 fs1 fc0 sc0 lsf ws11">app<span class="_ _0"></span>li<span class="_ _6"></span>cat<span class="_ _7"></span>i<span class="_ _3"></span>on must<span class="_ _0"></span> retr<span class="_ _0"></span>i<span class="_ _6"></span>e<span class="_ _0"></span>ve m<span class="_ _3"></span>o<span class="_ _0"></span>re dat<span class="_ _0"></span>a f<span class="_ _6"></span>ro<span class="_ _7"></span>m<span class="_ _6"></span> t<span class="_ _0"></span>he socket with <span class="ff6 ls12 ws1">recv </span><span class="lsd wsf">and call </span></div><div class="t m0 xb h2 y7a ff6 fs1 fc0 sc0 ls47 ws1">matrixSs<span class="_ _3"></span>lDecode <span class="ff2 ls4d ws4a">w<span class="_ _0"></span>i<span class="_ _3"></span>t<span class="_ _0"></span>h then<span class="_ _3"></span> ent<span class="_ _7"></span>i<span class="_ _6"></span>re r<span class="_ _0"></span>eco<span class="_ _0"></span>rd. If<span class="_ _6"></span> t<span class="_ _0"></span>he handshake <span class="_ _0"></span>is </span></div><div class="t m0 xb h2 y7b ff2 fs1 fc0 sc0 ls22 ws23">co<span class="_ _0"></span>m<span class="_ _6"></span>p<span class="_ _0"></span>let<span class="_ _0"></span>e, the caller can decide whether <span class="_ _0"></span>m<span class="_ _6"></span>o<span class="_ _0"></span>r<span class="_ _0"></span>e data is<span class="_ _3"></span> e<span class="_ _0"></span>xpected at<span class="_ _0"></span> thi<span class="_ _3"></span>s </div><div class="t m0 xb h2 y7c ff2 fs1 fc0 sc0 ls4b ws4b">p<span class="_ _3"></span>oi<span class="_ _6"></span>n<span class="_ _3"></span>t or<span class="_ _3"></span> n<span class="_ _3"></span>o<span class="_ _3"></span>t. </div></div><div class="pi" data-data='{"ctm":[1.568627,0.000000,0.000000,1.568627,0.000000,0.000000]}'></div></div>