DiffieHellman: gracefully handle platforms that fail the sha256 self test, currently only known to be PowerPC. Added support for PHP's built-in hash functions (they were added in 5.1.2) and use them in lieu of the built-in sha256 implementation when available.
+ − <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ − <!-- Created with Inkscape (http://www.inkscape.org/) -->
+ − <svg
+ − xmlns:dc="http://purl.org/dc/elements/1.1/"
+ − xmlns:cc="http://web.resource.org/cc/"
+ − xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ − xmlns:svg="http://www.w3.org/2000/svg"
+ − xmlns="http://www.w3.org/2000/svg"
+ − xmlns:xlink="http://www.w3.org/1999/xlink"
+ − xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ − xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ − sodipodi:docname="face-happy.svg"
+ − sodipodi:docbase="/home/jimmac/gfx/ximian/tango-icon-theme/scalable/emotes"
+ − inkscape:version="0.42+devel"
+ − sodipodi:version="0.32"
+ − id="svg4376"
+ − height="48px"
+ − width="48px">
+ − <defs
+ − id="defs3">
+ − <linearGradient
+ − id="linearGradient3290">
+ − <stop
+ − id="stop3292"
+ − offset="0.0000000"
+ − style="stop-color:#fffcde;stop-opacity:1.0000000;" />
+ − <stop
+ − style="stop-color:#f6e76a;stop-opacity:1.0000000;"
+ − offset="0.64485979"
+ − id="stop3294" />
+ − <stop
+ − id="stop3296"
+ − offset="1.0000000"
+ − style="stop-color:#ffb738;stop-opacity:1.0000000;" />
+ − </linearGradient>
+ − <radialGradient
+ − r="8.9020796"
+ − fy="15.755712"
+ − fx="29.158466"
+ − cy="15.720984"
+ − cx="29.288071"
+ − gradientUnits="userSpaceOnUse"
+ − id="radialGradient2714"
+ − xlink:href="#linearGradient3290"
+ − inkscape:collect="always" />
+ − <linearGradient
+ − id="linearGradient2509">
+ − <stop
+ − style="stop-color:#fffbd5;stop-opacity:1.0000000;"
+ − offset="0.0000000"
+ − id="stop2511" />
+ − <stop
+ − style="stop-color:#edd400;stop-opacity:1.0000000;"
+ − offset="1.0000000"
+ − id="stop2513" />
+ − </linearGradient>
+ − <radialGradient
+ − gradientTransform="matrix(1.250000,0.000000,0.000000,1.250000,-6.479446,-13.37211)"
+ − id="aigrd2"
+ − cx="25.0527"
+ − cy="39.5928"
+ − r="15.7572"
+ − fx="25.0527"
+ − fy="39.5928"
+ − gradientUnits="userSpaceOnUse">
+ − <stop
+ − offset="0.0000000"
+ − style="stop-color:#777777;stop-opacity:1.0000000;"
+ − id="stop8602" />
+ − <stop
+ − offset="1"
+ − style="stop-color:#000000"
+ − id="stop8604" />
+ − </radialGradient>
+ − <linearGradient
+ − id="linearGradient4565"
+ − inkscape:collect="always">
+ − <stop
+ − id="stop4567"
+ − offset="0"
+ − style="stop-color:#000000;stop-opacity:1;" />
+ − <stop
+ − id="stop4569"
+ − offset="1"
+ − style="stop-color:#000000;stop-opacity:0;" />
+ − </linearGradient>
+ − <linearGradient
+ − id="linearGradient3824">
+ − <stop
+ − id="stop3826"
+ − offset="0"
+ − style="stop-color:#ffffff;stop-opacity:1;" />
+ − <stop
+ − id="stop3828"
+ − offset="1.0000000"
+ − style="stop-color:#c9c9c9;stop-opacity:1.0000000;" />
+ − </linearGradient>
+ − <linearGradient
+ − id="linearGradient3800">
+ − <stop
+ − id="stop3802"
+ − offset="0.0000000"
+ − style="stop-color:#ffeed6;stop-opacity:1.0000000;" />
+ − <stop
+ − style="stop-color:#e49c2f;stop-opacity:1.0000000;"
+ − offset="0.50000000"
+ − id="stop8664" />
+ − <stop
+ − id="stop3804"
+ − offset="1.0000000"
+ − style="stop-color:#ffc66c;stop-opacity:1.0000000;" />
+ − </linearGradient>
+ − <radialGradient
+ − gradientUnits="userSpaceOnUse"
+ − gradientTransform="matrix(1.000000,0.000000,0.000000,0.333333,0.000000,25.71429)"
+ − r="19.714285"
+ − fy="38.571430"
+ − fx="24.714285"
+ − cy="38.571430"
+ − cx="24.714285"
+ − id="radialGradient4571"
+ − xlink:href="#linearGradient4565"
+ − inkscape:collect="always" />
+ − </defs>
+ − <sodipodi:namedview
+ − inkscape:window-y="184"
+ − inkscape:window-x="223"
+ − inkscape:window-height="739"
+ − inkscape:window-width="770"
+ − inkscape:showpageshadow="false"
+ − inkscape:document-units="px"
+ − inkscape:grid-bbox="true"
+ − showgrid="false"
+ − inkscape:current-layer="layer1"
+ − inkscape:cy="24.058534"
+ − inkscape:cx="25.411306"
+ − inkscape:zoom="11.313708"
+ − inkscape:pageshadow="2"
+ − inkscape:pageopacity="0.0"
+ − borderopacity="0.19607843"
+ − bordercolor="#666666"
+ − pagecolor="#ffffff"
+ − id="base"
+ − fill="#edd400" />
+ − <metadata
+ − id="metadata4">
+ − <rdf:RDF>
+ − <cc:Work
+ − rdf:about="">
+ − <dc:format>image/svg+xml</dc:format>
+ − <dc:type
+ − rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ − <dc:title>Face - Happy</dc:title>
+ − <dc:subject>
+ − <rdf:Bag>
+ − <rdf:li>emoticon</rdf:li>
+ − <rdf:li>emote</rdf:li>
+ − <rdf:li>smiley</rdf:li>
+ − <rdf:li>happy</rdf:li>
+ − <rdf:li>:)</rdf:li>
+ − <rdf:li>:-)</rdf:li>
+ − </rdf:Bag>
+ − </dc:subject>
+ − <cc:license
+ − rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ − <dc:creator>
+ − <cc:Agent>
+ − <dc:title>Jakub Steiner</dc:title>
+ − </cc:Agent>
+ − </dc:creator>
+ − <dc:source>http://jimmac.musichall.cz</dc:source>
+ − </cc:Work>
+ − <cc:License
+ − rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ − <cc:permits
+ − rdf:resource="http://web.resource.org/cc/Reproduction" />
+ − <cc:permits
+ − rdf:resource="http://web.resource.org/cc/Distribution" />
+ − <cc:requires
+ − rdf:resource="http://web.resource.org/cc/Notice" />
+ − <cc:requires
+ − rdf:resource="http://web.resource.org/cc/Attribution" />
+ − <cc:permits
+ − rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ − <cc:requires
+ − rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ − </cc:License>
+ − </rdf:RDF>
+ − </metadata>
+ − <g
+ − inkscape:groupmode="layer"
+ − inkscape:label="Layer 1"
+ − id="layer1">
+ − <path
+ − d="M 44.428570 38.571430 A 19.714285 6.5714288 0 1 1 5.0000000,38.571430 A 19.714285 6.5714288 0 1 1 44.428570 38.571430 z"
+ − sodipodi:ry="6.5714288"
+ − sodipodi:rx="19.714285"
+ − sodipodi:cy="38.571430"
+ − sodipodi:cx="24.714285"
+ − id="path4563"
+ − style="opacity:0.53164557;color:#000000;fill:url(#radialGradient4571);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ − sodipodi:type="arc" />
+ − <path
+ − transform="matrix(2.083142,0.000000,0.000000,2.083142,-40.54715,-16.49224)"
+ − d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
+ − sodipodi:ry="8.6620579"
+ − sodipodi:rx="8.6620579"
+ − sodipodi:cy="19.008621"
+ − sodipodi:cx="31.112698"
+ − id="path4320"
+ − style="overflow:visible;display:inline;visibility:visible;stroke-opacity:1.0000000;stroke-dashoffset:0.0000000;stroke-dasharray:none;stroke-miterlimit:4.0000000;marker-end:none;marker-mid:none;marker-start:none;marker:none;stroke-linejoin:round;stroke-linecap:round;stroke-width:0.48004404;stroke:#9c8c0a;fill-rule:evenodd;fill-opacity:1.0000000;fill:url(#radialGradient2714);color:#000000;opacity:1.0000000"
+ − sodipodi:type="arc" />
+ − <path
+ − transform="matrix(1.979782,0.000000,0.000000,1.979782,-37.33128,-14.52746)"
+ − sodipodi:type="arc"
+ − style="opacity:0.67721519;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ − id="path4322"
+ − sodipodi:cx="31.112698"
+ − sodipodi:cy="19.008621"
+ − sodipodi:rx="8.6620579"
+ − sodipodi:ry="8.6620579"
+ − d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
+ − <path
+ − sodipodi:nodetypes="czczc"
+ − id="path2659"
+ − d="M 37.284637,24.719966 C 34.268170,29.944639 30.741134,33.710005 24.462492,33.710005 C 18.362475,33.710005 13.896955,29.370308 11.110016,24.543189 C 13.659429,27.599109 17.392948,31.109501 24.197327,31.109501 C 32.327531,31.109501 33.749103,28.202646 37.284637,24.719966 z "
+ − style="opacity:0.35999998;color:#000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+ − <path
+ − style="fill:url(#aigrd2);fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000"
+ − d="M 37.284637,24.012862 C 34.268170,29.237535 30.741134,33.002901 24.462492,33.002901 C 18.362475,33.002901 13.896955,28.663204 11.110016,23.836085 C 13.659429,26.892005 17.392948,30.402397 24.197327,30.402397 C 32.327531,30.402397 33.749103,27.495542 37.284637,24.012862 z "
+ − id="path8606"
+ − sodipodi:nodetypes="czczc" />
+ − <g
+ − transform="translate(0.353553,2.392706)"
+ − id="g8666">
+ − <path
+ − style="opacity:0.35999998;fill:#ffffff;fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000"
+ − d="M 21.398158,15.321428 C 21.398158,17.821428 20.273158,19.821428 18.898158,19.821428 C 17.523158,19.821428 16.273158,17.821428 16.273158,15.321428 C 16.273158,12.821428 17.398158,10.821428 18.773158,10.821428 C 20.148158,10.821428 21.273158,12.821428 21.273158,15.321428 L 21.398158,15.321428 z "
+ − id="path8610" />
+ − <path
+ − style="opacity:0.35999998;fill:#ffffff;fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000"
+ − d="M 30.688512,15.321428 C 30.688512,17.821428 29.563512,19.821428 28.188512,19.821428 C 26.813512,19.821428 25.688512,17.821428 25.688512,15.321428 C 25.688512,12.821428 26.813512,10.821428 28.188512,10.821428 C 29.563512,10.821428 30.688512,12.821428 30.688512,15.321428 z "
+ − id="path8612" />
+ − <path
+ − style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000"
+ − d="M 21.398158,14.696428 C 21.398158,17.196428 20.273158,19.196428 18.898158,19.196428 C 17.523158,19.196428 16.398158,17.196428 16.398158,14.696428 C 16.398158,12.196428 17.523158,10.196428 18.898158,10.196428 C 20.273158,10.196428 21.398158,12.196428 21.398158,14.696428 z "
+ − id="path8614" />
+ − <path
+ − style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000"
+ − d="M 30.688512,14.696428 C 30.688512,17.196428 29.563512,19.196428 28.188512,19.196428 C 26.813512,19.196428 25.688512,17.196428 25.688512,14.696428 C 25.688512,12.196428 26.813512,10.196428 28.188512,10.196428 C 29.563512,10.196428 30.688512,12.196428 30.688512,14.696428 z "
+ − id="path8616" />
+ − </g>
+ − </g>
+ − </svg>