]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/crypto/caam/pkc_desc.c
Merge branch 'for-4.8/core' of git://git.kernel.dk/linux-block
[karo-tx-linux.git] / drivers / crypto / caam / pkc_desc.c
1 /*
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 #include "caampkc.h"
10 #include "desc_constr.h"
11
12 /* Descriptor for RSA Public operation */
13 void init_rsa_pub_desc(u32 *desc, struct rsa_pub_pdb *pdb)
14 {
15         init_job_desc_pdb(desc, 0, sizeof(*pdb));
16         append_cmd(desc, pdb->sgf);
17         append_ptr(desc, pdb->f_dma);
18         append_ptr(desc, pdb->g_dma);
19         append_ptr(desc, pdb->n_dma);
20         append_ptr(desc, pdb->e_dma);
21         append_cmd(desc, pdb->f_len);
22         append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSAENC_PUBKEY);
23 }
24
25 /* Descriptor for RSA Private operation - Private Key Form #1 */
26 void init_rsa_priv_f1_desc(u32 *desc, struct rsa_priv_f1_pdb *pdb)
27 {
28         init_job_desc_pdb(desc, 0, sizeof(*pdb));
29         append_cmd(desc, pdb->sgf);
30         append_ptr(desc, pdb->g_dma);
31         append_ptr(desc, pdb->f_dma);
32         append_ptr(desc, pdb->n_dma);
33         append_ptr(desc, pdb->d_dma);
34         append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSADEC_PRVKEY |
35                          RSA_PRIV_KEY_FRM_1);
36 }