static jboolean setHDMIDRMKey(JNIEnv* env, jobject clazz) { bool ret = false; #if defined (MTK_HDMI_SUPPORT) #if defined (MTK_DRM_KEY_MNG_SUPPORT) ALOGI("[HDMI] JNI MtkHdmiManagerService.setHDMIDRMKey end\n"); hdmi_hdcp_drmkey hKey; int i; int ret_temp = 0; unsigned char* enckbdrm = NULL; unsigned int inlength = 0; ret_temp = get_encrypt_drmkey(HDCP_1X_TX_ID,&enckbdrm,&inlength); if(ret_temp !=0 ) { ALOGI("[HDMI] JNI setHDMIDRMKey get_encrypt_drmkey failed %d", ret_temp); return ret; } memcpy(hKey.u1Hdcpkey, (unsigned char*)enckbdrm, sizeof(hKey.u1Hdcpkey)); for (i=0; i<sizeof(hKey.u1Hdcpkey); i++) { ALOGI("[HDMI] JNI setHDMIDRMKey key[%d] = %x\n", i, hKey.u1Hdcpkey[i]); } ret = hdmi_ioctl(MTK_HDMI_HDCP_KEY, (long)&hKey); ALOGI("[HDMI] JNI setHDMIDRMKey ret = %d\n",ret); free_encrypt_drmkey(enckbdrm); #endif #endif ALOGI("[HDMI] JNI MtkHdmiManagerService.setHDMIDRMKey end\n"); return ret; }
int main(void) { DRMKeyID id = WIDEVINE_ID; int ret = 0; unsigned char* enckbdrm = NULL; unsigned int inlength = 0; unsigned char* kbdrm = NULL; unsigned int outlength = 0; for(; id<DRM_KEY_MAX; id++) { ret = get_encrypt_drmkey(id,&enckbdrm,&inlength); if(ret!=0) { printf("KeyID:%d get fail!\n",id); continue; } /*don't call decrypt_drmkey and free_drmkey while TEE is enable*/ ret = decrypt_drmkey (enckbdrm,inlength, &kbdrm, &outlength); if(ret!=0) { printf("KeyID:%d decrypt fail!\n",id); continue; } free_drmkey (kbdrm); /*don't call decrypt_drmkey and free_drmkey while TEE is enable*/ free_encrypt_drmkey (enckbdrm); } return 0; }