keyblock.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef __KEY_BLOCK_H__
  2. #define __KEY_BLOCK_H__
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. typedef enum {
  7. WIDEVINE_ID = 0,
  8. MARLIN_ID,
  9. HDCP_1X_TX_ID,
  10. HDCP_2X_V1_TX_ID,
  11. HDCP_2X_V1_RX_ID,
  12. HDCP_2X_V2_TX_ID,
  13. HDCP_2X_V2_RX_ID,
  14. PLAYREADY_BGROUPCERT_ID,
  15. PLAYREADY_ZGPRIV_ID,
  16. PLAYREADY_KEYFILE_ID,
  17. DRM_KEY_MAX,
  18. DRM_SP_EKKB = 0xFFFF
  19. } DRMKeyID;
  20. #define SZ_DRMKEY_ID 4
  21. #define SZ_DRMKEY_TYPE 4
  22. #define SZ_DRMKEY_SIZE 4
  23. #define SZ_DRMKEY_ENC_SIZE 4
  24. #define SZ_DRMKEY_CLEAR_IV 16
  25. #define SZ_DRMKEY_RESERVED 64
  26. #define SZ_DRMKEY_HEADER_SIZE \
  27. (SZ_DRMKEY_ID+SZ_DRMKEY_TYPE+SZ_DRMKEY_SIZE+SZ_DRMKEY_ENC_SIZE+\
  28. SZ_DRMKEY_CLEAR_IV+SZ_DRMKEY_RESERVED)
  29. #define SZ_DRMKEY_SIG 16
  30. /* begin of uree using */
  31. /*
  32. [in] keyID Enum DRMKeyID
  33. [out] oneDrmkeyBlock encrypt DRMBlock
  34. [out] blockLeng encrypt DRMBlockLength
  35. return 0: OK, others: FAIL
  36. */
  37. int get_encrypt_drmkey(unsigned int keyID,
  38. unsigned char **oneDrmkeyBlock,
  39. unsigned int *blockLeng);
  40. int get_clearDrmkey_size(unsigned int keyID, unsigned int *leng);
  41. int free_encrypt_drmkey(unsigned char *oneEncDrmkeyBlock);
  42. int write_kbo_drmkey(DRMKeyID id, unsigned char *enckey, unsigned int length);
  43. int delete_kbo_drmkey(DRMKeyID id);
  44. int install_KB_OTA_API(unsigned char *buff, unsigned int len);
  45. int query_drmkey(unsigned int *count, unsigned int *keytype);
  46. /* end of uree using */
  47. /* begin for tee using */
  48. int encrypt_drmkey(DRMKeyID id, unsigned char *clearKey, unsigned int inLength,
  49. unsigned char **encKey, unsigned int *outLength);
  50. int decrypt_drmkey(unsigned char *encDrmKeyBlock, unsigned int inLength,
  51. unsigned char **DrmKey, unsigned int *outLength);
  52. int free_drmkey(unsigned char *drmkey);
  53. int free_drmkey_safe(unsigned char *drmkey, int size);
  54. /* end for tee using */
  55. #ifdef __cplusplus
  56. }
  57. #endif
  58. #endif /* __KEY_BLOCK_H__ */