NAME
Crypt::Sodium::XS::OO::stream - Stream ciphers
SYNOPSIS
use Crypt::Sodium::XS::OO::stream;
my $stream = Crypt::Sodium::XS::OO::stream->new;
# or use the shortcut
# use Crypt::Sodium::XS;
# my $stream = Crypt::Sodium::XS->stream;
DESCRIPTION
These functions are stream ciphers. They do not provide authenticated encryption. They can be used to generate pseudo-random data from a key, or as building blocks for implementing custom constructions, but they are not alternatives to Crypt::Sodium::XS::OO::secretbox.
CONSTRUCTOR
new
my $stream = Crypt::Sodium::XS::OO::stream->new;
my $stream = Crypt::Sodium::XS::OO::stream->new(primitive => 'xchacha20');
my $stream = Crypt::Sodium::XS->stream;
Returns a new secretstream object for the given primitive. If not given, the default primitive is default
.
METHODS
PRIMITIVE
my $stream = Crypt::Sodium::XS::OO::stream->new;
my $default_primitive = $stream->PRIMITIVE;
KEYBYTES
my $key_length = $stream->KEYBYTES;
MESSAGEBYTES_MAX
my $plaintext_max_length = $stream->MESSAGEBYTES_MAX;
NONCEBYTES
my $nonce_length = $stream->NONCEBYTES;
primitives
my @primitives = $pwhash->primitives;
Returns a list of all supported primitive names (including 'default').
keygen
my $key = $stream->keygen;
nonce
my $nonce = $stream->nonce;
stream
my $stream_data = $stream->stream($length, $nonce, $key);
xor
my $ciphertext = $stream->xor($plaintext, $nonce, $key);
xor_ic
my $ciphertext = $stream->xor_ic($plaintext, $nonce, $internal_counter, $key);
NOTE: xor_ic is not supported with the salsa2012
primitive.
SEE ALSO
- Crypt::Sodium::XS
- Crypt::Sodium::XS::stream
- https://doc.libsodium.org/advanced/stream_ciphers
- https://doc.libsodium.org/advanced/stream_ciphers/chacha20
- https://doc.libsodium.org/advanced/stream_ciphers/xchacha20
- https://doc.libsodium.org/advanced/stream_ciphers/salsa20
- https://doc.libsodium.org/advanced/stream_ciphers/xsalsa20
FEEDBACK
For reporting bugs, giving feedback, submitting patches, etc. please use the following:
IRC channel
#sodium
onirc.perl.org
.Email the author directly.
For any security sensitive reports, please email the author directly or contact privately via IRC.
AUTHOR
Brad Barden <perlmodules@5c30.org>
COPYRIGHT & LICENSE
Copyright (c) 2022 Brad Barden. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.