File Coverage

Keys.xs
Criterion Covered Total %
statement 7 7 100.0
branch 2 4 50.0
condition n/a
subroutine n/a
pod n/a
total 9 11 81.8


line stmt bran cond sub pod time code
1             #define PERL_NO_GET_CONTEXT
2             #include "EXTERN.h"
3             #include "perl.h"
4             #include "XSUB.h"
5              
6             #include "ppport.h"
7              
8             void tweetnacl_crypto_sk_to_pk(unsigned char *pk, const unsigned char *sk);
9              
10             MODULE = Monero::Keys PACKAGE = Monero::Keys
11              
12             SV *
13             _generate_pk_from_sk(SV* sk)
14             CODE:
15             {
16             int rv;
17 8           unsigned char *sk_data=NULL;
18             unsigned char pk_data[32];
19 8           STRLEN sk_len = 0;
20              
21 8 50         if (SvOK(sk)) {
22 8           sk_data = (unsigned char *)SvPVbyte(sk, sk_len);
23             }
24 8 50         if (sk_len != 32) croak("FATAL: seed must be 32 bytes long");
25 8           tweetnacl_crypto_sk_to_pk(pk_data, sk_data);
26 8           RETVAL = newSVpv((char *)pk_data, 32);
27             }
28             OUTPUT:
29             RETVAL
30