File Coverage

blib/lib/CryptX.pm
Criterion Covered Total %
statement 16 21 76.1
branch 3 10 30.0
condition 1 3 33.3
subroutine 5 7 71.4
pod n/a
total 25 41 60.9


line stmt bran cond sub pod time code
1             package CryptX;
2              
3 129     129   843 use strict;
  129         244  
  129         3709  
4 129     129   624 use warnings ;
  129         233  
  129         7411  
5             our $VERSION = '0.080_001';
6              
7             require XSLoader;
8             XSLoader::load('CryptX', $VERSION);
9              
10 129     129   763 use Carp;
  129         277  
  129         10720  
11             my $has_json;
12              
13             BEGIN {
14 129 50   129   535 $has_json = 1 if eval { require JSON; 1 };
  129         54884  
  0         0  
15             }
16              
17             sub _croak {
18 23 50 33 23   138 die @_ if ref $_[0] || !$_[-1];
19 23 50       201 if ($_[-1] =~ /^(.*)( at .+ line .+\n$)/s) {
20 23         44 pop @_;
21 23         73 push @_, $1;
22             }
23 23         3021 die Carp::shortmess @_;
24             }
25              
26             sub _decode_json {
27 0 0   0     croak "FATAL: cannot find JSON module" if !$has_json;
28 0           return JSON->new->utf8->decode(shift);
29             }
30              
31             sub _encode_json {
32 0 0   0     croak "FATAL: cannot find JSON module" if !$has_json;
33 0           return JSON->new->utf8->canonical->encode(shift);
34             }
35              
36             1;
37              
38             =pod
39              
40             =head1 NAME
41              
42             CryptX - Cryptographic toolkit
43              
44             =head1 DESCRIPTION
45              
46             Perl modules providing a cryptography based on L library.
47              
48             =over
49              
50             =item * Symmetric ciphers - see L and related modules
51              
52             L, L, L, L, L, L,
53             L, L, L, L, L, L,
54             L, L, L, L, L, L,
55             L, L, L, L, L,
56             L, L
57              
58             =item * Block cipher modes
59              
60             L, L, L, L, L
61              
62             =item * Stream ciphers
63              
64             L, L, L, L,
65             L, L
66              
67             =item * Authenticated encryption modes
68              
69             L, L, L, L, L
70              
71             =item * Hash Functions - see L and related modules
72              
73             L, L, L, L,
74             L, L, L, L,
75             L, L, L, L, L, L,
76             L, L, L, L, L, L,
77             L, L, L, L, L,
78             L, L, L, L,
79             L, L, L, L, L
80              
81             =item * Checksums
82              
83             L, L
84              
85             =item * Message Authentication Codes
86              
87             L, L, L, L, L,
88             L, L, L, L
89              
90             =item * Public key cryptography
91              
92             L, L, L, L, L, L
93              
94             =item * Cryptographically secure random number generators - see L and related modules
95              
96             L, L, L, L, L
97              
98             =item * Key derivation functions - PBKDF1, PBKDF2 and HKDF
99              
100             L
101              
102             =item * Other handy functions related to cryptography
103              
104             L
105              
106             =back
107              
108             =head1 LICENSE
109              
110             This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
111              
112             =head1 COPYRIGHT
113              
114             Copyright (c) 2013-2023 DCIT, a.s. L / Karel Miko
115              
116             =cut