/****************************************************************************** * * Copyright (C) 2012 - 2014 Xilinx, Inc. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * Use of the Software is limited solely to applications: * (a) running on a Xilinx device, or * (b) that interact with a Xilinx device through a bus or interconnect. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * Except as contained in this notice, the name of the Xilinx shall not be used * in advertising or otherwise to promote the sale, use or other dealings in * this Software without prior written authorization from Xilinx. * ******************************************************************************/ /*****************************************************************************/ /** * * @file rsa.c * * Contains code for the RSA authentication * *
* MODIFICATION HISTORY: * * Ver Who Date Changes * ----- ---- -------- ------------------------------------------------------- * 4.00a sgd 02/28/13 Initial release * 6.00a kc 07/30/13 Added FSBL_DEBUG_RSA to print more RSA buffers * Fix for CR#724165 - Partition Header used by FSBL is * not authenticated * Fix for CR#724166 - FSBL doesn’t use PPK authenticated * by Boot ROM for authenticating * the Partition images * Fix for CR#722979 - Provide customer-friendly * changelogs in FSBL * 9.00a kc 04/16/14 Fix for CR#724166 - SetPpk() will fail on secure * fallback unless FSBL* and FSBL are * identical in length * Fix for CR#791245 - Use of xilrsa in FSBL ** * @note * ******************************************************************************/ /***************************** Include Files *********************************/ #ifdef RSA_SUPPORT #include "fsbl.h" #include "rsa.h" #include "xilrsa.h" #ifdef XPAR_XWDTPS_0_BASEADDR #include "xwdtps.h" #endif /************************** Constant Definitions *****************************/ /**************************** Type Definitions *******************************/ /***************** Macros (Inline Functions) Definitions *********************/ /************************** Function Prototypes ******************************/ #ifdef XPAR_XWDTPS_0_BASEADDR extern XWdtPs Watchdog; /* Instance of WatchDog Timer */ #endif /************************** Variable Definitions *****************************/ static u8 *PpkModular; static u8 *PpkModularEx; static u32 PpkExp; static u32 PpkAlreadySet=0; extern u32 FsblLength; void FsblPrintArray (u8 *Buf, u32 Len, char *Str) { #ifdef FSBL_DEBUG_RSA int Index; fsbl_printf(DEBUG_INFO, "%s START\r\n", Str); for (Index=0;Index