Crypt-Sodium-XS
view release on metacpan or search on metacpan
inc/ipcrypt.xs view on Meta::CPAN
MODULE = Crypt::Sodium::XS PACKAGE = Crypt::Sodium::XS::ipcrypt
=for doc
# NB: some constants added for consistency which are not provided by libsodium.
# for deterministic and pfx INPUTBYTES and OUTPUTBYTES are defined to be the
# same as BYTES. TWEAKBYTES is also defined as a constant of 0.
=cut
void _define_constants()
PREINIT:
HV *stash = gv_stashpv("Crypt::Sodium::XS::ipcrypt", 0);
PPCODE:
#ifdef SODIUM_HAS_IPCRYPT
newCONSTSUB(stash, "ipcrypt_BYTES",
newSVuv(crypto_ipcrypt_BYTES));
newCONSTSUB(stash, "ipcrypt_INPUTBYTES",
newSVuv(crypto_ipcrypt_BYTES));
newCONSTSUB(stash, "ipcrypt_KEYBYTES",
newSVuv(crypto_ipcrypt_KEYBYTES));
newCONSTSUB(stash, "ipcrypt_OUTPUTBYTES",
newSVuv(crypto_ipcrypt_BYTES));
newCONSTSUB(stash, "ipcrypt_TWEAKBYTES",
newSVuv(0));
newCONSTSUB(stash, "ipcrypt_ND_INPUTBYTES",
newSVuv(crypto_ipcrypt_ND_INPUTBYTES));
newCONSTSUB(stash, "ipcrypt_ND_KEYBYTES",
newSVuv(crypto_ipcrypt_ND_KEYBYTES));
newCONSTSUB(stash, "ipcrypt_ND_OUTPUTBYTES",
newSVuv(crypto_ipcrypt_ND_OUTPUTBYTES));
newCONSTSUB(stash, "ipcrypt_ND_TWEAKBYTES",
newSVuv(crypto_ipcrypt_ND_TWEAKBYTES));
newCONSTSUB(stash, "ipcrypt_NDX_INPUTBYTES",
newSVuv(crypto_ipcrypt_NDX_INPUTBYTES));
newCONSTSUB(stash, "ipcrypt_NDX_KEYBYTES",
newSVuv(crypto_ipcrypt_NDX_KEYBYTES));
newCONSTSUB(stash, "ipcrypt_NDX_OUTPUTBYTES",
newSVuv(crypto_ipcrypt_NDX_OUTPUTBYTES));
newCONSTSUB(stash, "ipcrypt_NDX_TWEAKBYTES",
newSVuv(crypto_ipcrypt_NDX_TWEAKBYTES));
newCONSTSUB(stash, "ipcrypt_PFX_BYTES",
newSVuv(crypto_ipcrypt_PFX_BYTES));
newCONSTSUB(stash, "ipcrypt_PFX_INPUTBYTES",
newSVuv(crypto_ipcrypt_PFX_BYTES));
newCONSTSUB(stash, "ipcrypt_PFX_KEYBYTES",
newSVuv(crypto_ipcrypt_PFX_KEYBYTES));
newCONSTSUB(stash, "ipcrypt_PFX_OUTPUTBYTES",
newSVuv(crypto_ipcrypt_PFX_BYTES));
newCONSTSUB(stash, "ipcrypt_PFX_TWEAKBYTES",
newSVuv(0));
newCONSTSUB(stash, "ipcrypt_available", &PL_sv_yes);
#else
newCONSTSUB(stash, "ipcrypt_available", &PL_sv_no);
#endif
SV * ipcrypt_keygen(SV * flags = &PL_sv_undef)
ALIAS:
ipcrypt_nd_keygen = 1
ipcrypt_ndx_keygen = 2
ipcrypt_pfx_keygen = 3
CODE:
#ifdef SODIUM_HAS_IPCRYPT
switch(ix) {
case 1:
RETVAL = sv_keygen(aTHX_ crypto_ipcrypt_ND_KEYBYTES, flags);
break;
case 2:
RETVAL = sv_keygen(aTHX_ crypto_ipcrypt_NDX_KEYBYTES, flags);
break;
case 3:
RETVAL = sv_keygen(aTHX_ crypto_ipcrypt_PFX_KEYBYTES, flags);
( run in 0.723 second using v1.01-cache-2.11-cpan-71847e10f99 )