简而言之,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进行各种操作,如获取属性,读取解密后内容等。这里不再赘述。
发表评论
-
下拉刷新的代码--转发
2013-11-19 14:18 534转发别人的代码 -
播放raw中的音乐范例
2013-03-05 16:09 917package cn.test.lee; impor ... -
创建可访问https的client
2012-05-23 09:54 939import java.io.IOException; ... -
android中将读回的xml inputstream打印为日志
2012-05-21 10:40 2573if(StringUtils.IsShowLog) ... -
将保存的文件读为bitmap
2012-05-21 10:38 1075private boolean getSavedPng ... -
将bitmap保存为文件
2012-05-21 10:37 810private void saveBmpToSd(Bi ... -
安装apk的函数
2012-04-12 13:04 940private void installApk(){ ... -
读取存储卡剩余空间
2012-01-06 21:37 742void readSDCard() { String st ... -
向Eclipse导入linux编译生成的jar包,调试android原生app
2012-01-06 11:01 4099Android 系统应用程序 Eclipse 开 ... -
转载---AIDL代理模式讲解图
2011-12-08 20:02 784goi -
监听电话的receiver片段
2011-11-24 12:05 740public class PhoneStatRecei ... -
转载---AIDL
2011-11-14 16:29 871欢迎阅读本文,你能关注本文,你知道你需要进程间通信、 ... -
Android系统应用程序Eclipse开发环境的搭建
2011-11-09 19:19 1<!-- [if !mso]> <styl ... -
android 编译单独模块的命令
2011-10-20 19:47 1<!-- [if !mso]> <styl ... -
不匀速移动的Animaiton实例XML
2011-10-20 10:16 856<?xml version="1.0" ... -
截取屏幕图像返回Bitmap的函数
2011-10-20 10:14 1729Handler mMyHandler = new Ha ... -
光影魔术手--不失真压缩图片的方法
2011-08-31 12:51 6438光影魔术手--不失真压缩图片的方法 “光影魔术手(nEO i ... -
Android JNI完整调试过程
2011-08-18 15:06 7338整个JNI的调试过程如下: 1.创建手电筒工程 在工程中加 ...
相关推荐
brezillon-drm-kms.pdf 介绍kms
关于DRM,有一定参考设计,帮助深入理解DRM,生动形象,很有意思
上进行即可, 无需再次到 DRM-X 平台。 您只需调用 DRM-X XML Web Service 接口,使用“getLicenseRemoteToTableWithVersion”方法 既可以完成集成过程,整个过程非常简单。集成后,用户在打开您加 密后的文件时就...
RK3399的DRM-HOWTO测试 最近在学习与调试RK3399的DRM显示架构,网上有很多例程,其中介绍比较多的是来于David Herrmann’s Github的drm-howto.开源代码 但这些源码下载后执行make编译出来的执行文件只能在PC机上测试...
通过 DRM-X 4.0 自定义登录页面集成后, 您可以将此登陆窗口指向 您网站的登陆框口,也就是用户所有的注册、登陆都只需在您的网站 上进行... 您只需调用 DRM-X XML Web Service 接口,使用“getLicenseRemoteToTable
DRM PTH ENGLISH-through-hole solder joint evaluation (demo)
移除多媒体保护------DRM 破解++++移除多媒体保护------DRM 破解++++移除多媒体保护------DRM 破解++++移除多媒体保护------DRM 破解++++移除多媒体保护------DRM 破解++++移除多媒体保护------DRM 破解++++移除...
DRM-X 4.0加密与PHP集成文档,php与DRM-X 4.0集成代码
android DRM,关于android中DRM的分析
China-DRM EXE文件加密器 V9.0
drm-driver-v5
python库。 资源全名:tencentcloud-sdk-python-drm-3.0.350.tar.gz
python库。 资源全名:tencentcloud-sdk-python-drm-3.0.568.tar.gz
china-drm课件加密认证管理系统说明(WORD)文档下载 - CHINA-DRM流媒体
资源来自pypi官网。 资源全名:tencentcloud-sdk-python-drm-3.0.444.tar.gz
前言本文档包含一般应用上线所必要的环节,其中包括资源申请、应用备案、预发布测试、正式上线等。目的为规范系统上线管理,明确系统上线管理的工作要求,合理配置资源,确
HB DRM-免费大量下载器 这是一个功能强大的脚本,可让您从Humble Bundle页面( )批量下载无DRM内容(电子书,游戏,音乐等)。 它本身适用于Windows 8 +,Windows 7需要下载Powershell 3+,请点击下面的链接。 它...
资源分类:Python库 所属语言:Python 资源全名:tencentcloud-sdk-python-drm-3.0.506.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:tencentcloud-sdk-python-drm-3.0.476.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:tencentcloud-sdk-python-drm-3.0.462.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059