Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/include/soc/fsl/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  caam-blob.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2020 Pengutronix, Ahmad Fatoum <kernel@pengutronix.de>
 */


#ifndef __CAAM_BLOB_GEN
#define __CAAM_BLOB_GEN

#include <linux/types.h>
#include <linux/errno.h>

#define CAAM_BLOB_KEYMOD_LENGTH  16
#define CAAM_BLOB_OVERHEAD  (32 + 16)
#define CAAM_BLOB_MAX_LEN  4096

struct caam_blob_priv;

/**
 * struct caam_blob_info - information for CAAM blobbing
 * @input:       pointer to input buffer (must be DMAable)
 * @input_len:   length of @input buffer in bytes.
 * @output:      pointer to output buffer (must be DMAable)
 * @output_len:  length of @output buffer in bytes.
 * @key_mod:     key modifier
 * @key_mod_len: length of @key_mod in bytes.
 *          May not exceed %CAAM_BLOB_KEYMOD_LENGTH
 */

struct caam_blob_info {
 void *input;
 size_t input_len;

 void *output;
 size_t output_len;

 const void *key_mod;
 size_t key_mod_len;
};

/**
 * caam_blob_gen_init - initialize blob generation
 * Return: pointer to new &struct caam_blob_priv instance on success
 * and ``ERR_PTR(-ENODEV)`` if CAAM has no hardware blobbing support
 * or no job ring could be allocated.
 */

struct caam_blob_priv *caam_blob_gen_init(void);

/**
 * caam_blob_gen_exit - free blob generation resources
 * @priv: instance returned by caam_blob_gen_init()
 */

void caam_blob_gen_exit(struct caam_blob_priv *priv);

/**
 * caam_process_blob - encapsulate or decapsulate blob
 * @priv:   instance returned by caam_blob_gen_init()
 * @info:   pointer to blobbing info describing key, blob and
 *          key modifier buffers.
 * @encap:  true for encapsulation, false for decapsulation
 *
 * Return: %0 and sets ``info->output_len`` on success and a negative
 * error code otherwise.
 */

int caam_process_blob(struct caam_blob_priv *priv,
        struct caam_blob_info *info, bool encap);

/**
 * caam_encap_blob - encapsulate blob
 * @priv:   instance returned by caam_blob_gen_init()
 * @info:   pointer to blobbing info describing input key,
 *          output blob and key modifier buffers.
 *
 * Return: %0 and sets ``info->output_len`` on success and
 * a negative error code otherwise.
 */

static inline int caam_encap_blob(struct caam_blob_priv *priv,
      struct caam_blob_info *info)
{
 if (info->output_len < info->input_len + CAAM_BLOB_OVERHEAD)
  return -EINVAL;

 return caam_process_blob(priv, info, true);
}

/**
 * caam_decap_blob - decapsulate blob
 * @priv:   instance returned by caam_blob_gen_init()
 * @info:   pointer to blobbing info describing output key,
 *          input blob and key modifier buffers.
 *
 * Return: %0 and sets ``info->output_len`` on success and
 * a negative error code otherwise.
 */

static inline int caam_decap_blob(struct caam_blob_priv *priv,
      struct caam_blob_info *info)
{
 if (info->input_len < CAAM_BLOB_OVERHEAD ||
     info->output_len < info->input_len - CAAM_BLOB_OVERHEAD)
  return -EINVAL;

 return caam_process_blob(priv, info, false);
}

#endif

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

¤ Dauer der Verarbeitung: 0.19 Sekunden  (vorverarbeitet)  ¤

*© 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.