Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/crypto/inside-secure/eip93/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  eip93-main.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0
 *
 * Copyright (C) 2019 - 2021
 *
 * Richard van Schagen <vschagen@icloud.com>
 * Christian Marangi <ansuelsmth@gmail.com
 */

#ifndef _EIP93_MAIN_H_
#define _EIP93_MAIN_H_

#include <crypto/internal/aead.h>
#include <crypto/internal/hash.h>
#include <crypto/internal/skcipher.h>
#include <linux/bitfield.h>
#include <linux/interrupt.h>

#define EIP93_RING_BUSY_DELAY  500

#define EIP93_RING_NUM   512
#define EIP93_RING_BUSY   32
#define EIP93_CRA_PRIORITY  1500

#define EIP93_RING_SA_STATE_ADDR(base, idx) ((base) + (idx))
#define EIP93_RING_SA_STATE_DMA(dma_base, idx) ((u32 __force)(dma_base) + \
       ((idx) * sizeof(struct sa_state)))

/* cipher algorithms */
#define EIP93_ALG_DES   BIT(0)
#define EIP93_ALG_3DES   BIT(1)
#define EIP93_ALG_AES   BIT(2)
#define EIP93_ALG_MASK   GENMASK(2, 0)
/* hash and hmac algorithms */
#define EIP93_HASH_MD5   BIT(3)
#define EIP93_HASH_SHA1   BIT(4)
#define EIP93_HASH_SHA224   BIT(5)
#define EIP93_HASH_SHA256   BIT(6)
#define EIP93_HASH_HMAC   BIT(7)
#define EIP93_HASH_MASK   GENMASK(6, 3)
/* cipher modes */
#define EIP93_MODE_CBC   BIT(8)
#define EIP93_MODE_ECB   BIT(9)
#define EIP93_MODE_CTR   BIT(10)
#define EIP93_MODE_RFC3686  BIT(11)
#define EIP93_MODE_MASK   GENMASK(10, 8)

/* cipher encryption/decryption operations */
#define EIP93_ENCRYPT   BIT(12)
#define EIP93_DECRYPT   BIT(13)

#define EIP93_BUSY   BIT(14)

/* descriptor flags */
#define EIP93_DESC_DMA_IV   BIT(0)
#define EIP93_DESC_IPSEC   BIT(1)
#define EIP93_DESC_FINISH   BIT(2)
#define EIP93_DESC_LAST   BIT(3)
#define EIP93_DESC_FAKE_HMAC  BIT(4)
#define EIP93_DESC_PRNG   BIT(5)
#define EIP93_DESC_HASH   BIT(6)
#define EIP93_DESC_AEAD   BIT(7)
#define EIP93_DESC_SKCIPHER  BIT(8)
#define EIP93_DESC_ASYNC   BIT(9)

#define IS_DMA_IV(desc_flags)  ((desc_flags) & EIP93_DESC_DMA_IV)

#define IS_DES(flags)   ((flags) & EIP93_ALG_DES)
#define IS_3DES(flags)   ((flags) & EIP93_ALG_3DES)
#define IS_AES(flags)   ((flags) & EIP93_ALG_AES)

#define IS_HASH_MD5(flags)  ((flags) & EIP93_HASH_MD5)
#define IS_HASH_SHA1(flags)  ((flags) & EIP93_HASH_SHA1)
#define IS_HASH_SHA224(flags)  ((flags) & EIP93_HASH_SHA224)
#define IS_HASH_SHA256(flags)  ((flags) & EIP93_HASH_SHA256)
#define IS_HMAC(flags)   ((flags) & EIP93_HASH_HMAC)

#define IS_CBC(mode)   ((mode) & EIP93_MODE_CBC)
#define IS_ECB(mode)   ((mode) & EIP93_MODE_ECB)
#define IS_CTR(mode)   ((mode) & EIP93_MODE_CTR)
#define IS_RFC3686(mode)  ((mode) & EIP93_MODE_RFC3686)

#define IS_BUSY(flags)   ((flags) & EIP93_BUSY)

#define IS_ENCRYPT(dir)   ((dir) & EIP93_ENCRYPT)
#define IS_DECRYPT(dir)   ((dir) & EIP93_DECRYPT)

#define IS_CIPHER(flags)  ((flags) & (EIP93_ALG_DES | \
          EIP93_ALG_3DES |  \
          EIP93_ALG_AES))

#define IS_HASH(flags)   ((flags) & (EIP93_HASH_MD5 |  \
          EIP93_HASH_SHA1 |   \
          EIP93_HASH_SHA224 | \
          EIP93_HASH_SHA256))

/**
 * struct eip93_device - crypto engine device structure
 */

struct eip93_device {
 void __iomem  *base;
 struct device  *dev;
 struct clk  *clk;
 int   irq;
 struct eip93_ring  *ring;
};

struct eip93_desc_ring {
 void   *base;
 void   *base_end;
 dma_addr_t  base_dma;
 /* write and read pointers */
 void   *read;
 void   *write;
 /* descriptor element offset */
 u32   offset;
};

struct eip93_state_pool {
 void   *base;
 dma_addr_t  base_dma;
};

struct eip93_ring {
 struct tasklet_struct  done_task;
 /* command/result rings */
 struct eip93_desc_ring  cdr;
 struct eip93_desc_ring  rdr;
 spinlock_t   write_lock;
 spinlock_t   read_lock;
 /* aync idr */
 spinlock_t   idr_lock;
 struct idr   crypto_async_idr;
};

enum eip93_alg_type {
 EIP93_ALG_TYPE_AEAD,
 EIP93_ALG_TYPE_SKCIPHER,
 EIP93_ALG_TYPE_HASH,
};

struct eip93_alg_template {
 struct eip93_device *eip93;
 enum eip93_alg_type type;
 u32   flags;
 union {
  struct aead_alg  aead;
  struct skcipher_alg skcipher;
  struct ahash_alg ahash;
 } alg;
};

#endif /* _EIP93_MAIN_H_ */

Messung V0.5
C=93 H=100 G=96

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.