int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, unsigned long long *clen_p, const unsigned char *m, unsigned long long mlen, const unsigned char *ad, unsigned long long adlen, const unsigned char *nsec, const unsigned char *npub, const unsigned char *k) { unsigned long long clen = 0ULL; int ret; if (mlen > UINT64_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES) { abort(); /* LCOV_EXCL_LINE */ } ret = crypto_aead_chacha20poly1305_ietf_encrypt_detached(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, k); if (clen_p != NULL) { if (ret == 0) { clen = mlen + crypto_aead_chacha20poly1305_ietf_ABYTES; } *clen_p = clen; } return ret; }
psResSize_t psChacha20Poly1305IetfEncryptDetached( psChacha20Poly1305Ietf_t *Context_p, const unsigned char *Plaintext_p, psSizeL_t PlaintextNBytes, const unsigned char Iv_p[PS_EXACTLY(PS_CHACHA20POLY1305_IETF_NPUBBYTES)], const unsigned char *Aad_p, psSize_t AadNBytes, unsigned char *Ciphertext_p, unsigned char Mac_p[PS_EXACTLY(PS_CHACHA20POLY1305_IETF_ABYTES)]) { int ret; /* Check input is not too large for this API. */ if (PlaintextNBytes > (psSizeL_t)PS_RES_SIZE_OK_MAX) { return PS_ARG_FAIL; } ret = crypto_aead_chacha20poly1305_ietf_encrypt_detached( Ciphertext_p, Mac_p, NULL, (const unsigned char *)Plaintext_p, (unsigned long long)PlaintextNBytes, (const unsigned char *)Aad_p, (unsigned long long)AadNBytes, NULL, (const unsigned char *)Iv_p, (const unsigned char *)Context_p->key); if (ret == 0) { return (psResSize_t) PlaintextNBytes; } return PS_FAIL; }