Crypt-MatrixSSL
view release on metacpan or search on metacpan
ppmhtml/site/lib/Crypt/MatrixSSL.html view on Meta::CPAN
<p>
</p>
<h3><a name="constants_exported_by_default">CONSTANTS EXPORTED BY DEFAULT</a></h3>
<p>Return code in user validation callback:</p>
<pre>
$SSL_ALLOW_ANON_CONNECTION</pre>
<p>Max size for message in matrixSslEncode():</p>
<pre>
$SSL_MAX_PLAINTEXT_LEN</pre>
<p>Flags for matrixSslNewSession():</p>
<pre>
$SSL_FLAGS_SERVER
$SSL_FLAGS_CLIENT_AUTH</pre>
<p>Options for matrixSslSetSessionOption():</p>
<pre>
$SSL_OPTION_DELETE_SESSION</pre>
<p><a href="#matrixssldecode"><code>matrixSslDecode()</code></a> return values:</p>
<pre>
$SSL_SUCCESS
$SSL_ERROR
$SSL_FULL
$SSL_PARTIAL
$SSL_SEND_RESPONSE
$SSL_PROCESS_DATA
$SSL_ALERT
$SSL_FILE_NOT_FOUND
$SSL_MEM_ERROR</pre>
<p><a href="#matrixssldecode"><code>matrixSslDecode()</code></a> alertLevel:</p>
<pre>
$SSL_ALERT_LEVEL_WARNING
$SSL_ALERT_LEVEL_FATAL</pre>
<p><a href="#matrixssldecode"><code>matrixSslDecode()</code></a> alertDescription:</p>
<pre>
$SSL_ALERT_CLOSE_NOTIFY
$SSL_ALERT_UNEXPECTED_MESSAGE
$SSL_ALERT_BAD_RECORD_MAC
$SSL_ALERT_DECOMPRESSION_FAILURE
$SSL_ALERT_HANDSHAKE_FAILURE
$SSL_ALERT_NO_CERTIFICATE
$SSL_ALERT_BAD_CERTIFICATE
$SSL_ALERT_UNSUPPORTED_CERTIFICATE
$SSL_ALERT_CERTIFICATE_REVOKED
$SSL_ALERT_CERTIFICATE_EXPIRED
$SSL_ALERT_CERTIFICATE_UNKNOWN
$SSL_ALERT_ILLEGAL_PARAMETER</pre>
<p>
</p>
<h3><a name="hashes_export_by_default">HASHES EXPORT BY DEFAULT</a></h3>
<pre>
%SSL_alertLevel
%SSL_alertDescription</pre>
<p>
</p>
<hr />
<h1><a name="functions">FUNCTIONS</a></h1>
<dl>
<dt><strong><a name="matrixssldecode" class="item"><strong>matrixSslDecode</strong>( $ssl, $inBuf, $outBuf, $error, $alertLevel, $alertDescription )</a></strong></dt>
<dd>
<p>$inBuf and $outBuf are usual string scalars, not (sslBuf_t *) as in C interface.</p>
<p>After succesfull decoding one packet, <a href="#matrixssldecode"><code>matrixSslDecode()</code></a> will cut decoded
packet from $inBuf's beginning.</p>
<p>Reply SSL packets or application data will be appended to $outBuf, if any.</p>
<p>To convert error/alert codes into text use exported hashes:</p>
<pre>
<span class="variable">$SSL_alertDescription</span><span class="operator">{</span> <span class="variable">$error</span> <span class="operator">}</span>
<span class="variable">$SSL_alertLevel</span><span class="operator">{</span> <span class="variable">$alertLevel</span> <span class="operator">}</span>
<span class="variable">$SSL_alertDescription</span><span class="operator">{</span> <span class="variable">$alertDescription</span> <span class="operator">}</span>
</pre>
</dd>
<dt><strong><a name="matrixsslencode" class="item"><strong>matrixSslEncode</strong>( $ssl, $inBuf, $outBuf )</a></strong></dt>
<dt><strong><a name="matrixsslencodeclosurealert" class="item"><strong>matrixSslEncodeClosureAlert</strong>( $ssl, $outBuf )</a></strong></dt>
<dt><strong><a name="matrixsslencodeclienthello" class="item"><strong>matrixSslEncodeClientHello</strong>( $ssl, $outBuf, $cipherSuite )</a></strong></dt>
<dt><strong><a name="matrixsslencodehellorequest" class="item"><strong>matrixSslEncodeHelloRequest</strong>( $ssl, $outBuf )</a></strong></dt>
<dd>
<p>$outBuf in all matrixSslEncode* functions is usual string scalar,
not (sslBuf_t *) as in C interface.</p>
<p>Encoded SSL packet will be appended to $outBuf.</p>
<p>If you need to <a href="#matrixsslencode"><code>matrixSslEncode()</code></a> huge $inBuf, then you should split $inBuf
into strings with size <= $SSL_MAX_PLAINTEXT_LEN and call <a href="#matrixsslencode"><code>matrixSslEncode()</code></a>
for each of these strings. If you don't do this <a href="#matrixsslencode"><code>matrixSslEncode()</code></a> will return
one of these errors: $SSL_ERROR, $SSL_FULL or <a href="#matrixssldecode"><code>matrixSslDecode()</code></a> on other side
will return $SSL_ERROR.</p>
</dd>
<dt><strong><a name="matrixsslsetcertvalidator" class="item"><strong>matrixSslSetCertValidator</strong>( $ssl, \&cb, $cb_arg )</a></strong></dt>
<dd>
<p>While interface of this function is same as in C, there some important notes
about perl callback \&cb. Perl callback will be called with two scalar params:
$certInfo and $cb_arg - just like in C.</p>
<p>But $certInfo instead of (sslCertInfo_t *) will contain reference to array
with certificates. Each certificate will be hash in this format:</p>
<pre>
<span class="string">verified</span> <span class="operator">=></span> <span class="variable">$verified</span><span class="operator">,</span>
<span class="string">notBefore</span> <span class="operator">=></span> <span class="variable">$notBefore</span><span class="operator">,</span>
<span class="string">notAfter</span> <span class="operator">=></span> <span class="variable">$notAfter</span><span class="operator">,</span>
<span class="string">subjectAltName</span> <span class="operator">=></span> <span class="operator">{</span>
<span class="string">dns</span> <span class="operator">=></span> <span class="variable">$dns</span><span class="operator">,</span>
<span class="string">uri</span> <span class="operator">=></span> <span class="variable">$uri</span><span class="operator">,</span>
<span class="string">email</span> <span class="operator">=></span> <span class="variable">$email</span><span class="operator">,</span>
<span class="operator">}</span><span class="operator">,</span>
<span class="string">subject</span> <span class="operator">=></span> <span class="operator">{</span>
<span class="string">country</span> <span class="operator">=></span> <span class="variable">$country</span><span class="operator">,</span>
<span class="string">state</span> <span class="operator">=></span> <span class="variable">$state</span><span class="operator">,</span>
<span class="string">locality</span> <span class="operator">=></span> <span class="variable">$locality</span><span class="operator">,</span>
<span class="string">organization</span> <span class="operator">=></span> <span class="variable">$organization</span><span class="operator">,</span>
<span class="string">orgUnit</span> <span class="operator">=></span> <span class="variable">$orgUnit</span><span class="operator">,</span>
<span class="string">commonName</span> <span class="operator">=></span> <span class="variable">$commonName</span><span class="operator">,</span>
<span class="operator">}</span><span class="operator">,</span>
<span class="string">issuer</span> <span class="operator">=></span> <span class="operator">{</span>
<span class="string">country</span> <span class="operator">=></span> <span class="variable">$country</span><span class="operator">,</span>
<span class="string">state</span> <span class="operator">=></span> <span class="variable">$state</span><span class="operator">,</span>
<span class="string">locality</span> <span class="operator">=></span> <span class="variable">$locality</span><span class="operator">,</span>
<span class="string">organization</span> <span class="operator">=></span> <span class="variable">$organization</span><span class="operator">,</span>
<span class="string">orgUnit</span> <span class="operator">=></span> <span class="variable">$orgUnit</span><span class="operator">,</span>
<span class="string">commonName</span> <span class="operator">=></span> <span class="variable">$commonName</span><span class="operator">,</span>
<span class="operator">}</span><span class="operator">,</span>
( run in 1.859 second using v1.01-cache-2.11-cpan-d8267643d1d )