package Crypt::Cipher::SM4; ### BEWARE - GENERATED FILE, DO NOT EDIT MANUALLY! use strict; use warnings; our $VERSION = '0.090'; use base qw(Crypt::Cipher); sub new { my ($class, @args) = @_; my $obj = Crypt::Cipher->new('SM4', @args); return bless $obj, $class; } sub blocksize { Crypt::Cipher::blocksize('SM4') } sub keysize { Crypt::Cipher::keysize('SM4') } sub max_keysize { Crypt::Cipher::max_keysize('SM4') } sub min_keysize { Crypt::Cipher::min_keysize('SM4') } sub default_rounds { Crypt::Cipher::default_rounds('SM4') } 1; =pod =head1 NAME Crypt::Cipher::SM4 - Symmetric cipher SM4, key size: 128 bits =head1 SYNOPSIS ### example 1 use Crypt::Mode::CBC; my $key = '...'; # length must be a valid key size for this cipher my $iv = '...'; # 16 bytes my $cbc = Crypt::Mode::CBC->new('SM4'); my $ciphertext = $cbc->encrypt("secret data", $key, $iv); ### example 2 (slower) use Crypt::CBC; use Crypt::Cipher::SM4; my $key = '...'; # length must be a valid key size for this cipher my $iv = '...'; # 16 bytes my $cbc = Crypt::CBC->new( -cipher=>'Cipher::SM4', -key=>$key, -iv=>$iv ); my $ciphertext = $cbc->encrypt("secret data"); =head1 DESCRIPTION I This module implements the SM4 cipher. Its interface is compatible with L. B This module only implements single-block encryption and decryption. For general data, use a block mode such as L, L, or L (which is slower). =head1 METHODS Unless noted otherwise, assume C<$c> is an existing cipher object created via C, for example: my $c = Crypt::Cipher::SM4->new($key); =head2 new my $c = Crypt::Cipher::SM4->new($key); #or my $c = Crypt::Cipher::SM4->new($key, $rounds); # $key .... [binary string] key of an accepted length (see keysize, min_keysize, max_keysize) # $rounds . [integer] optional, number of rounds (if supported by the cipher; croaks on invalid value) =head2 encrypt Encrypts exactly one block of plaintext. The length of C<$plaintext> must equal L; croaks otherwise. An empty string is accepted and returned unchanged. my $ciphertext = $c->encrypt($plaintext); Returns the encrypted block as a binary string (raw bytes). =head2 decrypt Decrypts exactly one block of ciphertext. The length of C<$ciphertext> must equal L; croaks otherwise. An empty string is accepted and returned unchanged. my $plaintext = $c->decrypt($ciphertext); Returns the decrypted block as a binary string (raw bytes). =head2 keysize Just an alias for C. $c->keysize; #or Crypt::Cipher::SM4->keysize; #or Crypt::Cipher::SM4::keysize; =head2 blocksize Returns the cipher block size (in bytes). $c->blocksize; #or Crypt::Cipher::SM4->blocksize; #or Crypt::Cipher::SM4::blocksize; =head2 max_keysize Returns the maximum key size (in bytes). $c->max_keysize; #or Crypt::Cipher::SM4->max_keysize; #or Crypt::Cipher::SM4::max_keysize; =head2 min_keysize Returns the minimum key size (in bytes). $c->min_keysize; #or Crypt::Cipher::SM4->min_keysize; #or Crypt::Cipher::SM4::min_keysize; =head2 default_rounds Returns the cipher's default round count. $c->default_rounds; #or Crypt::Cipher::SM4->default_rounds; #or Crypt::Cipher::SM4::default_rounds; =head1 SEE ALSO =over =item * L, L =item * L =back =cut