NAME
Crypt::AuthEnc::ChaCha20Poly1305 - Authenticated encryption in ChaCha20-Poly1305 mode
SYNOPSIS
my $ae = Crypt::AuthEnc::ChaCha20Poly1305->new( $key , $iv );
$ae ->adata_add( 'additional_authenticated_data1' );
$ae ->adata_add( 'additional_authenticated_data2' );
my $ct = $ae ->encrypt_add( 'data1' );
$ct .= $ae ->encrypt_add( 'data2' );
$ct .= $ae ->encrypt_add( 'data3' );
my $tag = $ae ->encrypt_done();
my $ae = Crypt::AuthEnc::ChaCha20Poly1305->new( $key , $iv );
$ae ->adata_add( 'additional_authenticated_data1' );
$ae ->adata_add( 'additional_authenticated_data2' );
my $pt = $ae ->decrypt_add( 'ciphertext1' );
$pt .= $ae ->decrypt_add( 'ciphertext2' );
$pt .= $ae ->decrypt_add( 'ciphertext3' );
my $tag = $ae ->decrypt_done();
die "decrypt failed" unless $tag eq $expected_tag ;
my $result = $ae ->decrypt_done( $expected_tag );
my ( $ciphertext , $tag ) = chacha20poly1305_encrypt_authenticate( $key , $iv , $adata , $plaintext );
my $plaintext = chacha20poly1305_decrypt_verify( $key , $iv , $adata , $ciphertext , $tag );
|
DESCRIPTION
Provides encryption and authentication based on ChaCha20 + Poly1305 as defined in RFC 7539 - https://tools.ietf.org/html/rfc7539
EXPORT
Nothing is exported by default.
You can export selected functions:
FUNCTIONS
chacha20poly1305_encrypt_authenticate
my ( $ciphertext , $tag ) = chacha20poly1305_encrypt_authenticate( $key , $iv , $adata , $plaintext );
|
chacha20poly1305_decrypt_verify
my $plaintext = chacha20poly1305_decrypt_verify( $key , $iv , $adata , $ciphertext , $tag );
|
METHODS
new
my $ae = Crypt::AuthEnc::ChaCha20Poly1305->new( $key , $iv );
|
adata_add
Add additional authenticated data. Can be called before the first encrypt_add
or decrypt_add
;
$ae ->adata_add( $aad_data );
|
encrypt_add
$ciphertext = $ae ->encrypt_add( $data );
|
encrypt_done
$tag = $ae ->encrypt_done();
|
decrypt_add
$plaintext = $ae ->decrypt_add( $ciphertext );
|
decrypt_done
my $tag = $ae ->decrypt_done;
my $result = $ae ->decrypt_done( $tag );
|
set_iv
my $ae = Crypt::AuthEnc::ChaCha20Poly1305->new( $key )->set_iv( $iv );
|
set_iv_rfc7905
See https://tools.ietf.org/html/rfc7905
my $ae = Crypt::AuthEnc::ChaCha20Poly1305->new( $key )->set_iv_rfc7905( $iv , $seqnum );
|
clone
SEE ALSO