Blame src/gcrypt/crypto.h

Packit 3ff1e7
/* libquvi
Packit 3ff1e7
 * Copyright (C) 2013  Toni Gundogdu <legatvs@gmail.com>
Packit 3ff1e7
 *
Packit 3ff1e7
 * This file is part of libquvi <http://quvi.sourceforge.net/>.
Packit 3ff1e7
 *
Packit 3ff1e7
 * This library is free software: you can redistribute it and/or
Packit 3ff1e7
 * modify it under the terms of the GNU Affero General Public
Packit 3ff1e7
 * License as published by the Free Software Foundation, either
Packit 3ff1e7
 * version 3 of the License, or (at your option) any later version.
Packit 3ff1e7
 *
Packit 3ff1e7
 * This library is distributed in the hope that it will be useful,
Packit 3ff1e7
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 3ff1e7
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 3ff1e7
 * GNU Affero General Public License for more details.
Packit 3ff1e7
 *
Packit 3ff1e7
 * You should have received a copy of the GNU Affero General
Packit 3ff1e7
 * Public License along with this library.  If not, see
Packit 3ff1e7
 * <http://www.gnu.org/licenses/>.
Packit 3ff1e7
 */
Packit 3ff1e7
Packit 3ff1e7
#ifndef crypto_h
Packit 3ff1e7
Packit 3ff1e7
typedef enum
Packit 3ff1e7
{
Packit 3ff1e7
  CRYPTO_MODE_ENCRYPT,
Packit 3ff1e7
  CRYPTO_MODE_DECRYPT,
Packit 3ff1e7
  CRYPTO_MODE_HASH
Packit 3ff1e7
} CryptoMode;
Packit 3ff1e7
Packit 3ff1e7
struct crypto_s
Packit 3ff1e7
{
Packit 3ff1e7
  struct
Packit 3ff1e7
  {
Packit 3ff1e7
    gboolean should_pad;
Packit 3ff1e7
    gcry_cipher_hd_t h;
Packit 3ff1e7
    gsize blklen;
Packit 3ff1e7
    gsize keylen;
Packit 3ff1e7
    guint flags;
Packit 3ff1e7
    gchar *key;
Packit 3ff1e7
    gint mode;
Packit 3ff1e7
  } cipher;
Packit 3ff1e7
  struct
Packit 3ff1e7
  {
Packit 3ff1e7
    guchar *data;
Packit 3ff1e7
    gsize dlen;
Packit 3ff1e7
  } out;
Packit 3ff1e7
  CryptoMode mode;
Packit 3ff1e7
  gchar *errmsg;
Packit 3ff1e7
  gint algo;
Packit 3ff1e7
  gint rc;
Packit 3ff1e7
};
Packit 3ff1e7
Packit 3ff1e7
typedef struct crypto_s *crypto_t;
Packit 3ff1e7
Packit 3ff1e7
crypto_t crypto_new(const gchar*, const CryptoMode, gchar*,
Packit 3ff1e7
                    const gint, const guint);
Packit 3ff1e7
void crypto_free(crypto_t);
Packit 3ff1e7
Packit 3ff1e7
gint crypto_exec(crypto_t, const guchar*, const gsize);
Packit 3ff1e7
Packit 3ff1e7
void crypto_dump(const gchar*, const guchar*, const gsize);
Packit 3ff1e7
gboolean crypto_ok(crypto_t);
Packit 3ff1e7
Packit 3ff1e7
gchar *crypto_bytes2hex(const guchar*, const gsize);
Packit 3ff1e7
guchar *crypto_hex2bytes(const gchar*, gsize*);
Packit 3ff1e7
Packit 3ff1e7
#endif /* crypto_h */
Packit 3ff1e7
Packit 3ff1e7
/* vim: set ts=2 sw=2 tw=72 expandtab: */
Packit 3ff1e7