File Coverage

lib/Crypt/ScryptKDF.xs
Criterion Covered Total %
statement 6 7 85.7
branch 1 2 50.0
condition n/a
subroutine n/a
pod n/a
total 7 9 77.7


line stmt bran cond sub pod time code
1             #include "EXTERN.h"
2             #include "perl.h"
3             #include "XSUB.h"
4              
5             #include "crypto_scrypt.h"
6              
7             MODULE = Crypt::ScryptKDF PACKAGE = Crypt::ScryptKDF
8              
9             SV *
10             _scrypt(SV *passwd, SV *salt, UV N, U32 r, U32 p, STRLEN res_len)
11             PREINIT:
12             STRLEN p_len, s_len;
13             uint8_t *result, *p_data, *s_data;
14             CODE:
15             {
16 20           p_data = (uint8_t *) SvPVbyte(passwd, p_len);
17 20           s_data = (uint8_t *) SvPVbyte(salt, s_len);
18             /* warn("DEBUG: p_len=%d s_len=%d r=%d, N=%d, p=%d, res_len=%d\n", p_len, s_len, r, N, p, res_len); */
19 20           Newz(0, result, res_len, uint8_t);
20             /* crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
21             * const uint8_t * salt, size_t saltlen,
22             * uint64_t N, uint32_t r, uint32_t p, uint8_t * buf, size_t buflen)
23             */
24 20 50         if (crypto_scrypt(p_data, p_len, s_data, s_len, N, r, p, result, res_len) == 0)
25 20           RETVAL = newSVpvn((char*)result, res_len);
26             else
27 0           RETVAL = newSVpvn(NULL, 0); /* undef */
28             Zero(result, res_len, uint8_t);
29 20           Safefree(result);
30             }
31             OUTPUT:
32             RETVAL