NAME

Crypt::Sodium::XS::stream - Stream ciphers

SYNOPSIS

use Crypt::Sodium::XS::stream ":default";

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::secretbox.

FUNCTIONS

Nothing is exported by default. A :default tag imports the functions and constants as documented below. A separate import tag is provided for each of the primitives listed in "PRIMITIVES". For example, :chacha20 imports stream_chacha20_xor. You should use at least one import tag.

stream_keygen

my $key = stream_keygen();

stream_nonce

my $nonce = stream_nonce();

stream

my $stream_data = stream($length, $nonce, $key);

stream_xor

my $ciphertext = stream_xor($plaintext, $nonce, $key);

stream_xor_ic

my $ciphertext = stream_xor_ic($plaintext, $nonce, $internal_counter, $key);

CONSTANTS

stream_KEYBYTES

my $key_length = stream_KEYBYTES();

stream_MESSAGEBYTES_MAX

my $plaintext_max_length = stream_MESSAGEBYTES_MAX();

stream_NONCEBYTES

my $nonce_length = stream_NONCEBYTES();

PRIMITIVES

Except for salsa2012, which does not provide an xor_ic function, all constants (except _PRIMITIVE) and functions have stream_<primitive>-prefixed counterparts (e.g., stream_chacha20_ietf_xor_ic, stream_salsa2012_KEYBYTES).

  • chacha20

  • chacha20_ietf

  • salsa20

  • salsa2012

  • xchacha20

  • xsalsa20

SEE ALSO

Crypt::Sodium::XS
Crypt::Sodium::XS::OO::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 on irc.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.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 166:

You forgot a '=back' before '=head1'