blob: f595d159b112dd00a4a4a46dd1b88cc445cf794c [file] [log] [blame]
Tudor Ambarus8c419772016-07-04 13:12:08 +03001/*
2 * caam - Freescale FSL CAAM support for Public Key Cryptography descriptors
3 *
4 * Copyright 2016 Freescale Semiconductor, Inc.
5 *
6 * There is no Shared Descriptor for PKC so that the Job Descriptor must carry
7 * all the desired key parameters, input and output pointers.
8 */
9
10#ifndef _PKC_DESC_H_
11#define _PKC_DESC_H_
12#include "compat.h"
13#include "pdb.h"
14
15/**
16 * caam_rsa_key - CAAM RSA key structure. Keys are allocated in DMA zone.
17 * @n : RSA modulus raw byte stream
18 * @e : RSA public exponent raw byte stream
19 * @d : RSA private exponent raw byte stream
20 * @n_sz : length in bytes of RSA modulus n
21 * @e_sz : length in bytes of RSA public exponent
22 * @d_sz : length in bytes of RSA private exponent
23 */
24struct caam_rsa_key {
25 u8 *n;
26 u8 *e;
27 u8 *d;
28 size_t n_sz;
29 size_t e_sz;
30 size_t d_sz;
31};
32
33/**
34 * caam_rsa_ctx - per session context.
35 * @key : RSA key in DMA zone
36 * @dev : device structure
37 */
38struct caam_rsa_ctx {
39 struct caam_rsa_key key;
40 struct device *dev;
41};
42
43/**
44 * rsa_edesc - s/w-extended rsa descriptor
45 * @src_nents : number of segments in input scatterlist
46 * @dst_nents : number of segments in output scatterlist
47 * @sec4_sg_bytes : length of h/w link table
48 * @sec4_sg_dma : dma address of h/w link table
49 * @sec4_sg : pointer to h/w link table
50 * @pdb : specific RSA Protocol Data Block (PDB)
51 * @hw_desc : descriptor followed by link tables if any
52 */
53struct rsa_edesc {
54 int src_nents;
55 int dst_nents;
56 int sec4_sg_bytes;
57 dma_addr_t sec4_sg_dma;
58 struct sec4_sg_entry *sec4_sg;
59 union {
60 struct rsa_pub_pdb pub;
61 struct rsa_priv_f1_pdb priv_f1;
62 } pdb;
63 u32 hw_desc[];
64};
65
66/* Descriptor construction primitives. */
67void init_rsa_pub_desc(u32 *desc, struct rsa_pub_pdb *pdb);
68void init_rsa_priv_f1_desc(u32 *desc, struct rsa_priv_f1_pdb *pdb);
69
70#endif