`
googlelee
  • 浏览: 116092 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

转发---Android DRM

 
阅读更多

简而言之,DRM系统提供一套机制对用户使用手机上的媒体内容(如ringtong, mp3等)进行限制,如限制拷贝给第三方,限制使用次数或时限等,从而保护内容提供商的权利。建议读者可以阅读OMA DRM 的规范,以便更好的了解代码。

相关代码主要位于下列目录:
frameworks/base/media/java/android/drm/mobile1
frameworks/base/media/libdrm/moblile1
frameworks/base/media/libdrm/mobile2
packages/apps/Mms/src/com/android/mms/drm: drm
packages/providers/DrmProvider/src/com/android/providers/drm

下面先作简要分析:
frameworks/base/media/libdrm/moblile1应该是提供OMA DMA1.0的本地/c++ 实现
frameworks/base/media/libdrm/moblile2应该是提供OMA DAM2.0的本地/c++ 实现。

frameworks/base/media/java/android/drm/mobile1 对应用提供OMA DRM 1.0 (即frameworks/base/media/libdrm/moblile1)的java接口。目前尚没有OMA DRM 2.0的java接口,也就意味着OMA DRM 2.0在Android中尚未应用。

packages/apps/Mms/src/com/android/mms/drm 实现在MMS中如何使用DRM。
packages/providers/DrmProvider/src/com/android/providers/drm ?

下面再作具体介绍:
一 目录 frameworks/base/media/java/android/drm/mobile1
这个目录是OMA DRM 1.0的java 接口。
OMA DRM 1.0 定义了几个重要概念:
DRM消息(DRM message):用户下载的一条DRM内容。根据下面介绍的DRM内容 传输方式的不同,DRM消息中包含的内容亦有所不同,可能只包含一个未经加密的媒体对象;也可能即包含未加密的媒体对象,也包含一个权利对象;也可能只包含一个经过加密的媒体对象(.dcf)。
媒体对象 (media object):包含媒体资源,如一个mp3, ringtone等。
权利对象(Right object): 限制用户如何使用媒体对象。


OMA DRM 1.0 定义了DRM内容的四种传输方式:
1. Combined delivery: 这种传输方式中,媒体对象以未经加密的方式(plain) 与Right object打成一个包,一块传输。这个包下载到手机设备上后,不允许转发给其他设备。
2. Forward lock: 这种传输方式是combined delivery的一个特例。媒体对象没有对应的Rigth object。媒体对象不允许转发给其他设备
3. Separate delivery: 媒体对象和权利对象分别传输。媒体对象采用对称密钥加密,文件以.dcf为后缀。权利对象中则包含对应的密钥。
4. Superdistribution:类似separate delivery, 但媒体内容允许转发给其他设备。

相应地,本目录的代码中:

DrmConstraintInfo对象描述了(对媒体内容的)一组限制属性,如开始/结束使用日期,使用次数等;

DrmRights对象代表了一个OMA 权利对象。

DrmRightsManager管理设备上的Rigth Objects。所有下载的权利对象,不论是由separate delivery 还是 combined delivery,权利对象都要首先安装到设备上。

 DrmRawContent代表一条DRM内容,分为两类:DRM_MIMETYPE_MESSAGE_STRING --DRM内容是经combined delivery 或 forward lock传输的 (也即媒体对象没有加密,没有或者有一个权利对象); DRM_MIMETYPE_CONTENT_STRING -- DRM内容是经 separate delivery传输的(也即媒体对象是经过加密的dcf格式,不包含权利对象)。

DrmInputStream:这个对象从一个DrmRawContent对象中读出经过权利对象验证并解密后的(需要的话)媒体对象内容。这个内容之后就可以传给相关应用输出给用户。


二 目录frameworks/base/media/libdrm/moblile1
本目录真正实现DRM DRM 1.0。
drm1_jni.c提供对DrmRawContent中方法的本地实现;
objmng目录下是具体实现。frameworks/base/media/libdrm/mobile1/include/objmng/svc_drm.h中有关于每个方法的详细解释,基本思路是每打开一个Drm 内容,就创建一个session,然后提供一系列方法,以此session为参数,对Drm进行各种操作,如获取属性,读取解密后内容等。这里不再赘述。

分享到:
评论

相关推荐

    brezillon-drm-kms

    DRM(Direct Rendering Manager)/KMS(Kernel Mode Setting)是Linux内核中负责控制显示设备硬件的一个子系统。DRM主要负责与图形硬件通信,例如进行图形渲染,而KMS则是用来设置显示硬件的输出参数,如分辨率、...

    brezillon-drm-kms.zip

    《DRM与KMS深度解析》 在信息技术领域,DRM(Digital Rights Management,数字版权管理)和KMS(Key ...通过阅读Brezillon-drm-kms.pdf,读者可以深入理解这两者的原理、实施方式以及它们在现代数字环境中的实际应用。

    DRM-X 4.0加密与PHP集成文档

    ### DRM-X 4.0加密技术概述 DRM-X 4.0是一种数字版权管理(Digital Rights Management)解决方案,它能够保护数字内容不被未经授权的访问和复制。DRM技术常用于音乐、视频、软件和电子书等数字媒体内容的版权保护。...

    RK3399的DRM-HOWTO测试

    RK3399的DRM-HOWTO测试 最近在学习与调试RK3399的DRM显示架构,网上有很多例程,其中介绍比较多的是来于David Herrmann’s Github的drm-howto.开源代码 但这些源码下载后执行make编译出来的执行文件只能在PC机上测试...

    DRM-X 4.0 自定义登陆页面集成c#指南与样例代码

    上进行即可, 无需再次到 DRM-X 平台。 您只需调用 DRM-X XML Web Service 接口,使用“getLicenseRemoteToTableWithVersion”方法 既可以完成集成过程,整个过程非常简单。集成后,用户在打开您加 密后的文件时就...

    China-DRM EXE文件加密器

    《China-DRM EXE文件加密器:保护您的软件安全》 在当今信息化时代,软件安全成为了开发者关注的重要议题。China-DRM EXE文件加密器V9.0是一款专门针对可执行文件(EXE)进行加密的专业工具,旨在帮助程序员和软件...

    DRM-X 4.0 自定义登陆页面集成vb指南与样例代码

    通过 DRM-X 4.0 自定义登录页面集成后, 您可以将此登陆窗口指向 您网站的登陆框口,也就是用户所有的注册、登陆都只需在您的网站 上进行... 您只需调用 DRM-X XML Web Service 接口,使用“getLicenseRemoteToTable

    FairUse4WM

    移除多媒体保护------DRM 破解++++移除多媒体保护------DRM 破解++++移除多媒体保护------DRM 破解++++移除多媒体保护------DRM 破解++++移除多媒体保护------DRM 破解++++移除多媒体保护------DRM 破解++++移除...

    Python库 | tencentcloud-sdk-python-drm-3.0.568.tar.gz

    本文将详细介绍腾讯云SDK for Python中的DRM模块,即Tencentcloud-sdk-python-drm-3.0.568。 首先,我们需要理解DRM(Digital Rights Management,数字版权管理)的概念。DRM是一种技术手段,用于保护数字内容的...

    OMA-AD-DRM-V2_0-20060303-A

    根据提供的文件信息,我们可以深入探讨OMA-AD-DRM-V2_0-20060303-A文档中的关键知识点,主要包括OMA架构协议的介绍、信任模型以及Use Case的应用场景。 ### OMA架构协议介绍 #### 1. OMA概述 OMA(Open Mobile ...

    PyPI 官网下载 | tencentcloud-sdk-python-drm-3.0.444.tar.gz

    **PyPI 官网下载 | tencentcloud-sdk-python-drm-3.0.444.tar.gz** 在Python开发中,PyPI(Python Package Index)是官方的第三方Python软件包仓库,开发者可以在这里发布和下载各种Python库。资源“tencentcloud-...

    Python库 | tencentcloud-sdk-python-drm-3.0.350.tar.gz

    本文将详细介绍“Tencentcloud-sdk-python-drm-3.0.350”这一Python库,它是腾讯云为Python开发者提供的数字版权管理(Digital Rights Management, DRM)服务的SDK,版本号为3.0.350。 首先,了解DRM的概念。数字...

    Linux DRM Developer-中文翻译_linux_DRM_drm开发者文档_

    Linux Direct Rendering Manager (DRM) 是Linux内核中用于图形硬件管理的重要组件,它为现代图形处理器(GPU)提供了一个接口,使得操作系统可以高效地控制显示子系统。这份"Linux DRM Developer-中文翻译"文档是...

    drm-driver-v5

    drm-driver-v5

    Linux DRM how-to 例子

    8. **测试工具**:像drm-test这样的项目提供了一系列的测试用例,用于验证DRM子系统的功能性和稳定性,确保其在各种场景下都能正常工作。 在“Linux DRM how-to”中,你可能会学习到如何配置DRM系统,编写libdrm...

    DRM-PTH-ENGLISH

    在电子制造领域,尤其在焊接技术中,对于孔金属化引线孔(PTH)的焊接接头评估是非常重要的。它确保了电子组件的机械稳定性和电气连接的可靠性。根据IPC发布的标准,如IPC-A-610E和IPC J-STD-001E,它们为电子组装件...

    shean023#DevOps-1#24、《CD-DRM-DRM-DS-L4-01-应用上线部署发布和回滚流程文档》1

    前言本文档包含一般应用上线所必要的环节,其中包括资源申请、应用备案、预发布测试、正式上线等。目的为规范系统上线管理,明确系统上线管理的工作要求,合理配置资源,确

    DRM-X 4.0 用户同步集成c#指南与样例代码

    **DRM-X 4.0 用户同步集成C#指南与样例代码详解** 在数字版权管理(Digital Rights Management,简称DRM)领域,DRM-X 4.0 是一款强大的HTML5 DRM加密软件,旨在为内容提供商提供安全、高效的版权保护解决方案。本...

    rk3568-lvgl-drm显示

    rk3568-lvgl-drm显示

Global site tag (gtag.js) - Google Analytics