xref: /openbmc/linux/drivers/crypto/caam/pkc_desc.c (revision 8730046c)
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 }
37