OpenSSL

NAME

OpenSSL - OpenSSL bindings

SYNOPSIS

use OpenSSL;
    my $openssl = OpenSSL.new;
    $openssl.set-fd(123);
    $openssl.write("GET / HTTP/1.1\r\nHost: somehost\r\n\r\n");

DESCRIPTION

A module which provides OpenSSL bindings, making us able to set up a TLS/SSL connection.

METHODS

method new

method new(Bool :$client = False, Int :$version?)

A constructor. Initializes OpenSSL library, sets method and context. If $version is not specified, the highest possible version is negotiated.

method set-fd

method set-fd(OpenSSL:, int32 $fd)

Assings connection's file descriptor (file handle) $fd to the SSL object.

To get the $fd we should use C to set up the connection. (See NativeCall) I hope we will be able to use Raku's IO::Socket module instead of connecting through C soon-ish.

method set-connect-state

method set-connect-state(OpenSSL:)

Sets SSL object to connect (client) state.

Use it when you want to connect to SSL servers.

method set-accept-state

method set-accept-state(OpenSSL:)

Sets SSL object to accept (server) state.

Use it when you want to provide an SSL server.

method connect

method connect(OpenSSL:)

Connects to the server using $fd (passed using .set-fd).

Does all the SSL stuff like handshaking.

method accept

method accept(OpenSSL:)

Accepts new client connection.

Does all the SSL stuff like handshaking.

method write

method write(OpenSSL:, Str $s)

Sends $s to the other side (server/client).

method read

method read(OpenSSL:, Int $n, Bool :$bin)

Reads $n bytes from the other side (server/client).

Bool :$bin if we want it to return Buf instead of Str.

method use-certificate-file

method use-certificate-file(OpenSSL:, Str $file)

Assings a certificate (from file) to the SSL object.

method use-privatekey-file

method use-privatekey-file(OpenSSL:, Str $file)

Assings a private key (from file) to the SSL object.

method check-private-key

method check-private-key(OpenSSL:)

Checks if private key is valid.

method shutdown

method shutdown(OpenSSL:)

Turns off the connection.

method ctx-free

method ctx-free(OpenSSL:)

Frees C's SSL_CTX struct.

method ssl-free

method ssl-free(OpenSSL:)

Frees C's SSL struct.

method close

method close(OpenSSL:)

Closes the connection.

Unlike .shutdown it calls ssl-free, ctx-free, and then it shutdowns.

SEE ALSO

IO::Socket::SSL

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.