| 1 | /*************************************************************************** |
|---|
| 2 | * Copyright (c) 2002-2012, Broadcom Corporation |
|---|
| 3 | * All Rights Reserved |
|---|
| 4 | * Confidential Property of Broadcom Corporation |
|---|
| 5 | * |
|---|
| 6 | * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE |
|---|
| 7 | * AGREEMENT BETWEEN THE USER AND BROADCOM. YOU HAVE NO RIGHT TO USE OR |
|---|
| 8 | * EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. |
|---|
| 9 | * |
|---|
| 10 | * $brcm_Workfile: bhdcplib_keyloader.c $ |
|---|
| 11 | * $brcm_Revision: Hydra_Software_Devel/6 $ |
|---|
| 12 | * $brcm_Date: 1/14/12 10:04p $ |
|---|
| 13 | * |
|---|
| 14 | * Module Description: |
|---|
| 15 | * |
|---|
| 16 | * Revision History: |
|---|
| 17 | * |
|---|
| 18 | * $brcm_Log: /magnum/syslib/hdcplib/7422/bhdcplib_keyloader.c $ |
|---|
| 19 | * |
|---|
| 20 | * Hydra_Software_Devel/6 1/14/12 10:04p rgreen |
|---|
| 21 | * SWSECURITY-71: Move keyloading setup to HSM; Use |
|---|
| 22 | * BHSM_FastLoadEncryptedHdcpKey to load keys |
|---|
| 23 | * |
|---|
| 24 | * Mot_MTN1.xx_7425Bx_Int/ericz_Mot_MTN1.xx_7425Bx_3/1 12/14/11 12:35p ericz |
|---|
| 25 | * CsP465507: Build errors with "export NEXUS_HDCP_SUPPORT=y" set for |
|---|
| 26 | * DCX3600_7425 target |
|---|
| 27 | * |
|---|
| 28 | * Hydra_Software_Devel/5 10/23/11 12:30p rgreen |
|---|
| 29 | * SW7425-1583: Add BERR_TRACE when HSM reports a HDCP key load error |
|---|
| 30 | * |
|---|
| 31 | * Hydra_Software_Devel/4 10/17/11 5:38p vle |
|---|
| 32 | * SW7425-1351: update hdcplib keyloader for 40nm B0 parts |
|---|
| 33 | * |
|---|
| 34 | * Hydra_Software_Devel/3 1/31/11 7:33p vle |
|---|
| 35 | * SW7422-129: Fix build warnings. |
|---|
| 36 | * |
|---|
| 37 | * Hydra_Software_Devel/2 1/7/11 5:26p vle |
|---|
| 38 | * SW7422-129: Add HDCP keyloader support for 7422 and other 40nm |
|---|
| 39 | * platforms. |
|---|
| 40 | * |
|---|
| 41 | * Hydra_Software_Devel/1 12/15/10 6:18p rgreen |
|---|
| 42 | * SW7422-129: Initial checkin |
|---|
| 43 | * |
|---|
| 44 | ***************************************************************************/ |
|---|
| 45 | |
|---|
| 46 | #include "bstd.h" |
|---|
| 47 | #include "bkni.h" |
|---|
| 48 | #include "bhdcplib_keyloader.h" |
|---|
| 49 | |
|---|
| 50 | #include "bhsm.h" |
|---|
| 51 | #include "bhsm_keyladder.h" |
|---|
| 52 | |
|---|
| 53 | |
|---|
| 54 | #define BHDCPLib_KEY_OFFSET 0x80 |
|---|
| 55 | |
|---|
| 56 | BDBG_MODULE(BHDCPLIB_KEYLOADER) ; |
|---|
| 57 | |
|---|
| 58 | |
|---|
| 59 | |
|---|
| 60 | BERR_Code BHDCPlib_FastLoadEncryptedHdcpKeys( |
|---|
| 61 | BHDCPlib_Handle hHDCPlib) |
|---|
| 62 | { |
|---|
| 63 | BERR_Code errCode = BERR_SUCCESS; |
|---|
| 64 | uint8_t i; |
|---|
| 65 | BHSM_EncryptedHdcpKeyStruct * EncryptedHdcpKeys ; |
|---|
| 66 | |
|---|
| 67 | BDBG_ASSERT(hHDCPlib) ; |
|---|
| 68 | |
|---|
| 69 | BDBG_WRN(("$brcm_Revision: Hydra_Software_Devel/6 $")) ; |
|---|
| 70 | |
|---|
| 71 | /* Get HDCP Encrypted Keys */ |
|---|
| 72 | EncryptedHdcpKeys = (BHSM_EncryptedHdcpKeyStruct *) |
|---|
| 73 | &hHDCPlib->stHdcpConfiguration.TxKeySet.TxKeyStructure ; |
|---|
| 74 | |
|---|
| 75 | for (i =0; i< BAVC_HDMI_HDCP_N_PRIVATE_KEYS; i++) |
|---|
| 76 | { |
|---|
| 77 | /* skip keys that are not specified to be used by the RxBksv */ |
|---|
| 78 | if (!(hHDCPlib->stHdcpConfiguration.RxInfo.RxBksv[i / 8] & (1 << (i % 8)))) |
|---|
| 79 | continue ; |
|---|
| 80 | |
|---|
| 81 | errCode = BHSM_FastLoadEncryptedHdcpKey( |
|---|
| 82 | hHDCPlib->stDependencies.hHsm, i + BHDCPLib_KEY_OFFSET, &(EncryptedHdcpKeys[i]) ) ; |
|---|
| 83 | |
|---|
| 84 | if (errCode != BERR_SUCCESS) |
|---|
| 85 | { |
|---|
| 86 | BDBG_ERR(("BHSM_FastLoadEncryptedHdcpKey errCode: %x", errCode )) ; |
|---|
| 87 | BERR_TRACE(errCode) ; |
|---|
| 88 | break ; |
|---|
| 89 | } |
|---|
| 90 | } |
|---|
| 91 | |
|---|
| 92 | return( errCode ); |
|---|
| 93 | } |
|---|
| 94 | |
|---|