18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * caam - Freescale FSL CAAM support for Public Key Cryptography descriptors 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright 2016 Freescale Semiconductor, Inc. 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * There is no Shared Descriptor for PKC so that the Job Descriptor must carry 88c2ecf20Sopenharmony_ci * all the desired key parameters, input and output pointers. 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci#include "caampkc.h" 118c2ecf20Sopenharmony_ci#include "desc_constr.h" 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci/* Descriptor for RSA Public operation */ 148c2ecf20Sopenharmony_civoid init_rsa_pub_desc(u32 *desc, struct rsa_pub_pdb *pdb) 158c2ecf20Sopenharmony_ci{ 168c2ecf20Sopenharmony_ci init_job_desc_pdb(desc, 0, SIZEOF_RSA_PUB_PDB); 178c2ecf20Sopenharmony_ci append_cmd(desc, pdb->sgf); 188c2ecf20Sopenharmony_ci append_ptr(desc, pdb->f_dma); 198c2ecf20Sopenharmony_ci append_ptr(desc, pdb->g_dma); 208c2ecf20Sopenharmony_ci append_ptr(desc, pdb->n_dma); 218c2ecf20Sopenharmony_ci append_ptr(desc, pdb->e_dma); 228c2ecf20Sopenharmony_ci append_cmd(desc, pdb->f_len); 238c2ecf20Sopenharmony_ci append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSAENC_PUBKEY); 248c2ecf20Sopenharmony_ci} 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci/* Descriptor for RSA Private operation - Private Key Form #1 */ 278c2ecf20Sopenharmony_civoid init_rsa_priv_f1_desc(u32 *desc, struct rsa_priv_f1_pdb *pdb) 288c2ecf20Sopenharmony_ci{ 298c2ecf20Sopenharmony_ci init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F1_PDB); 308c2ecf20Sopenharmony_ci append_cmd(desc, pdb->sgf); 318c2ecf20Sopenharmony_ci append_ptr(desc, pdb->g_dma); 328c2ecf20Sopenharmony_ci append_ptr(desc, pdb->f_dma); 338c2ecf20Sopenharmony_ci append_ptr(desc, pdb->n_dma); 348c2ecf20Sopenharmony_ci append_ptr(desc, pdb->d_dma); 358c2ecf20Sopenharmony_ci append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSADEC_PRVKEY | 368c2ecf20Sopenharmony_ci RSA_PRIV_KEY_FRM_1); 378c2ecf20Sopenharmony_ci} 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci/* Descriptor for RSA Private operation - Private Key Form #2 */ 408c2ecf20Sopenharmony_civoid init_rsa_priv_f2_desc(u32 *desc, struct rsa_priv_f2_pdb *pdb) 418c2ecf20Sopenharmony_ci{ 428c2ecf20Sopenharmony_ci init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F2_PDB); 438c2ecf20Sopenharmony_ci append_cmd(desc, pdb->sgf); 448c2ecf20Sopenharmony_ci append_ptr(desc, pdb->g_dma); 458c2ecf20Sopenharmony_ci append_ptr(desc, pdb->f_dma); 468c2ecf20Sopenharmony_ci append_ptr(desc, pdb->d_dma); 478c2ecf20Sopenharmony_ci append_ptr(desc, pdb->p_dma); 488c2ecf20Sopenharmony_ci append_ptr(desc, pdb->q_dma); 498c2ecf20Sopenharmony_ci append_ptr(desc, pdb->tmp1_dma); 508c2ecf20Sopenharmony_ci append_ptr(desc, pdb->tmp2_dma); 518c2ecf20Sopenharmony_ci append_cmd(desc, pdb->p_q_len); 528c2ecf20Sopenharmony_ci append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSADEC_PRVKEY | 538c2ecf20Sopenharmony_ci RSA_PRIV_KEY_FRM_2); 548c2ecf20Sopenharmony_ci} 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci/* Descriptor for RSA Private operation - Private Key Form #3 */ 578c2ecf20Sopenharmony_civoid init_rsa_priv_f3_desc(u32 *desc, struct rsa_priv_f3_pdb *pdb) 588c2ecf20Sopenharmony_ci{ 598c2ecf20Sopenharmony_ci init_job_desc_pdb(desc, 0, SIZEOF_RSA_PRIV_F3_PDB); 608c2ecf20Sopenharmony_ci append_cmd(desc, pdb->sgf); 618c2ecf20Sopenharmony_ci append_ptr(desc, pdb->g_dma); 628c2ecf20Sopenharmony_ci append_ptr(desc, pdb->f_dma); 638c2ecf20Sopenharmony_ci append_ptr(desc, pdb->c_dma); 648c2ecf20Sopenharmony_ci append_ptr(desc, pdb->p_dma); 658c2ecf20Sopenharmony_ci append_ptr(desc, pdb->q_dma); 668c2ecf20Sopenharmony_ci append_ptr(desc, pdb->dp_dma); 678c2ecf20Sopenharmony_ci append_ptr(desc, pdb->dq_dma); 688c2ecf20Sopenharmony_ci append_ptr(desc, pdb->tmp1_dma); 698c2ecf20Sopenharmony_ci append_ptr(desc, pdb->tmp2_dma); 708c2ecf20Sopenharmony_ci append_cmd(desc, pdb->p_q_len); 718c2ecf20Sopenharmony_ci append_operation(desc, OP_TYPE_UNI_PROTOCOL | OP_PCLID_RSADEC_PRVKEY | 728c2ecf20Sopenharmony_ci RSA_PRIV_KEY_FRM_3); 738c2ecf20Sopenharmony_ci} 74