⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcm_memory.c

📁 这是由Rinick编写的加解密函数库。最近找了不少关于加解密的C源码
💻 C
字号:
/* LibTomCrypt, modular cryptographic library -- Tom St Denis * * LibTomCrypt is a library that provides various cryptographic * algorithms in a highly modular and flexible manner. * * The library is free for all purposes without any express * guarantee it works. * * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org *//**   @file gcm_memory.c   GCM implementation, process a packet, by Tom St Denis*/#include "tomcrypt.h"#ifdef GCM_MODE/**  Process an entire GCM packet in one call.  @param cipher            Index of cipher to use  @param key               The secret key  @param keylen            The length of the secret key  @param IV                The initial vector   @param IVlen             The length of the initial vector  @param adata             The additional authentication data (header)  @param adatalen          The length of the adata  @param pt                The plaintext  @param ptlen             The length of the plaintext (ciphertext length is the same)  @param ct                The ciphertext  @param tag               [out] The MAC tag  @param taglen            [in/out] The MAC tag length  @param direction         Encrypt or Decrypt mode (GCM_ENCRYPT or GCM_DECRYPT)  @return CRYPT_OK on success */int gcm_memory(      int           cipher,               const unsigned char *key,    unsigned long keylen,               const unsigned char *IV,     unsigned long IVlen,               const unsigned char *adata,  unsigned long adatalen,                     unsigned char *pt,     unsigned long ptlen,                     unsigned char *ct,                      unsigned char *tag,    unsigned long *taglen,                               int direction){    gcm_state *gcm;    int        err;    if ((err = cipher_is_valid(cipher)) != CRYPT_OK) {       return err;    }     if (cipher_descriptor[cipher].accel_gcm_memory != NULL) {       cipher_descriptor[cipher].accel_gcm_memory                                          (key,   keylen,                                           IV,    IVlen,                                           adata, adatalen,                                           pt,    ptlen,                                           ct,                                           tag,   taglen,                                           direction);       return CRYPT_OK;    }    gcm = XMALLOC(sizeof(*gcm));    if (gcm == NULL) {        return CRYPT_MEM;    }    if ((err = gcm_init(gcm, cipher, key, keylen)) != CRYPT_OK) {       goto LTC_ERR;    }    if ((err = gcm_add_iv(gcm, IV, IVlen)) != CRYPT_OK) {       goto LTC_ERR;    }    if ((err = gcm_add_aad(gcm, adata, adatalen)) != CRYPT_OK) {       goto LTC_ERR;    }    if ((err = gcm_process(gcm, pt, ptlen, ct, direction)) != CRYPT_OK) {       goto LTC_ERR;    }    err = gcm_done(gcm, tag, taglen);LTC_ERR:    XFREE(gcm);    return err;}#endif/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_memory.c,v $ *//* $Revision: 1.19 $ *//* $Date: 2005/05/05 14:35:58 $ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -