Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  ocs-aes.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Intel Keem Bay OCS AES Crypto Driver.
 *
 * Copyright (C) 2018-2020 Intel Corporation
 */


#ifndef _CRYPTO_OCS_AES_H
#define _CRYPTO_OCS_AES_H

#include <linux/dma-mapping.h>

enum ocs_cipher {
 OCS_AES = 0,
 OCS_SM4 = 1,
};

enum ocs_mode {
 OCS_MODE_ECB = 0,
 OCS_MODE_CBC = 1,
 OCS_MODE_CTR = 2,
 OCS_MODE_CCM = 6,
 OCS_MODE_GCM = 7,
 OCS_MODE_CTS = 9,
};

enum ocs_instruction {
 OCS_ENCRYPT = 0,
 OCS_DECRYPT = 1,
 OCS_EXPAND  = 2,
 OCS_BYPASS  = 3,
};

/**
 * struct ocs_aes_dev - AES device context.
 * @list: List head for insertion into device list hold
 * by driver.
 * @dev: OCS AES device.
 * @irq: IRQ number.
 * @base_reg: IO base address of OCS AES.
 * @irq_copy_completion: Completion to indicate IRQ has been triggered.
 * @dma_err_mask: Error reported by OCS DMA interrupts.
 * @engine: Crypto engine for the device.
 */

struct ocs_aes_dev {
 struct list_head list;
 struct device *dev;
 int irq;
 void __iomem *base_reg;
 struct completion irq_completion;
 u32 dma_err_mask;
 struct crypto_engine *engine;
};

/**
 * struct ocs_dll_desc - Descriptor of an OCS DMA Linked List.
 * @vaddr: Virtual address of the linked list head.
 * @dma_addr: DMA address of the linked list head.
 * @size: Size (in bytes) of the linked list.
 */

struct ocs_dll_desc {
 void  *vaddr;
 dma_addr_t dma_addr;
 size_t  size;
};

int ocs_aes_set_key(struct ocs_aes_dev *aes_dev, const u32 key_size,
      const u8 *key, const enum ocs_cipher cipher);

int ocs_aes_op(struct ocs_aes_dev *aes_dev,
        enum ocs_mode mode,
        enum ocs_cipher cipher,
        enum ocs_instruction instruction,
        dma_addr_t dst_dma_list,
        dma_addr_t src_dma_list,
        u32 src_size,
        u8 *iv,
        u32 iv_size);

/**
 * ocs_aes_bypass_op() - Use OCS DMA to copy data.
 * @aes_dev:            The OCS AES device to use.
 * @dst_dma_list: The OCS DMA list mapping the memory where input data
 * will be copied to.
 * @src_dma_list: The OCS DMA list mapping input data.
 * @src_size: The amount of data to copy.
 */

static inline int ocs_aes_bypass_op(struct ocs_aes_dev *aes_dev,
        dma_addr_t dst_dma_list,
        dma_addr_t src_dma_list, u32 src_size)
{
 return ocs_aes_op(aes_dev, OCS_MODE_ECB, OCS_AES, OCS_BYPASS,
     dst_dma_list, src_dma_list, src_size, NULL, 0);
}

int ocs_aes_gcm_op(struct ocs_aes_dev *aes_dev,
     enum ocs_cipher cipher,
     enum ocs_instruction instruction,
     dma_addr_t dst_dma_list,
     dma_addr_t src_dma_list,
     u32 src_size,
     const u8 *iv,
     dma_addr_t aad_dma_list,
     u32 aad_size,
     u8 *out_tag,
     u32 tag_size);

int ocs_aes_ccm_op(struct ocs_aes_dev *aes_dev,
     enum ocs_cipher cipher,
     enum ocs_instruction instruction,
     dma_addr_t dst_dma_list,
     dma_addr_t src_dma_list,
     u32 src_size,
     u8 *iv,
     dma_addr_t adata_dma_list,
     u32 adata_size,
     u8 *in_tag,
     u32 tag_size);

int ocs_create_linked_list_from_sg(const struct ocs_aes_dev *aes_dev,
       struct scatterlist *sg,
       int sg_dma_count,
       struct ocs_dll_desc *dll_desc,
       size_t data_size,
       size_t data_offset);

irqreturn_t ocs_aes_irq_handler(int irq, void *dev_id);

#endif

Messung V0.5
C=97 H=88 G=92

¤ Dauer der Verarbeitung: 0.2 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge