Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d0c89ad authored by Jeff Tinker's avatar Jeff Tinker Committed by Android (Google) Code Review
Browse files

Merge "resolved conflicts for merge of 4f342e87 to master"

parents ed3db02c 9de8c1d8
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -2585,6 +2585,13 @@
        android:description="@string/permdesc_accessNetworkConditions"
        android:protectionLevel="signature|system" />

    <!-- Allows an application to provision and access DRM certificates
         @hide This is not a third-party API (intended for system apps). -->
    <permission android:name="android.permission.ACCESS_DRM_CERTIFICATES"
        android:label="@string/permlab_accessDrmCertificates"
        android:description="@string/permdesc_accessDrmCertificates"
        android:protectionLevel="signature|system" />

    <!-- The system process is explicitly the only one allowed to launch the
         confirmation UI for full backup/restore -->
    <uses-permission android:name="android.permission.CONFIRM_FULL_BACKUP"/>
+5 −0
Original line number Diff line number Diff line
@@ -2002,6 +2002,11 @@
    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
    <string name="permdesc_setInputCalibration">Allows the app to modify the calibration parameters of the touch screen. Should never be needed for normal apps.</string>

    <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
    <string name="permlab_accessDrmCertificates">access DRM certificates</string>
    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
    <string name="permdesc_accessDrmCertificates">Allows an application to provision and use DRM certficates. Should never be needed for normal apps.</string>

    <!-- Policy administration -->

    <!-- Title of policy access to limiting the user's password choices -->
+26 −29
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import android.os.Looper;
import android.os.Message;
import android.os.Parcel;
import android.util.Log;
import android.content.Context;

/**
 * MediaDrm can be used to obtain keys for decrypting protected media streams, in
@@ -98,6 +97,8 @@ public final class MediaDrm {

    private final static String TAG = "MediaDrm";

    private static final String PERMISSION = android.Manifest.permission.ACCESS_DRM_CERTIFICATES;

    private EventHandler mEventHandler;
    private OnEventListener mOnEventListener;

@@ -385,8 +386,7 @@ public final class MediaDrm {
     * problem with the certifcate
     */
    public native KeyRequest getKeyRequest(byte[] scope, byte[] init,
                                           String mimeType, int keyType,
                                           HashMap<String, String> optionalParameters)
            String mimeType, int keyType, HashMap<String, String> optionalParameters)
            throws NotProvisionedException;


@@ -598,8 +598,7 @@ public final class MediaDrm {
            byte[] keyId, byte[] message);

    private static final native boolean verifyNative(MediaDrm drm, byte[] sessionId,
                                                     byte[] keyId, byte[] message,
                                                     byte[] signature);
            byte[] keyId, byte[] message, byte[] signature);

    /**
     * In addition to supporting decryption of DASH Common Encrypted Media, the
@@ -704,8 +703,7 @@ public final class MediaDrm {
     * "algorithms".
     */
    public CryptoSession getCryptoSession(byte[] sessionId,
                                          String cipherAlgorithm,
                                          String macAlgorithm)
            String cipherAlgorithm, String macAlgorithm)
    {
        return new CryptoSession(this, sessionId, cipherAlgorithm, macAlgorithm);
    }
@@ -805,13 +803,11 @@ public final class MediaDrm {
    }

    private static final native byte[] signRSANative(MediaDrm drm, byte[] sessionId,
                                                     String algorithm, byte[] wrappedKey,
                                                     byte[] message);
            String algorithm, byte[] wrappedKey, byte[] message);

    /**
     * Sign data using an RSA key
     *
     * @param context the app context
     * @param sessionId a sessionId obtained from openSession on the MediaDrm object
     * @param algorithm the signing algorithm to use, e.g. "PKCS1-BlockType1"
     * @param wrappedKey - the wrapped (encrypted) RSA private key obtained
@@ -820,7 +816,8 @@ public final class MediaDrm {
     *
     * @hide - not part of the public API at this time
     */
    public byte[] signRSA(Context context, byte[] sessionId, String algorithm, byte[] wrappedKey, byte[] message) {
    public byte[] signRSA(byte[] sessionId, String algorithm,
            byte[] wrappedKey, byte[] message) {
        return signRSANative(this, sessionId, algorithm, wrappedKey, message);
    }

+4 −4
Original line number Diff line number Diff line
@@ -570,7 +570,7 @@ static void android_media_MediaDrm_native_init(JNIEnv *env) {
    FIND_CLASS(clazz, "android/media/MediaDrm$Certificate");
    GET_FIELD_ID(gFields.certificate.wrappedPrivateKey, clazz, "mWrappedKey", "[B");
    GET_FIELD_ID(gFields.certificate.certificateData, clazz, "mCertificateData", "[B");
    gFields.certificateClassId = reinterpret_cast<jclass>(env->NewGlobalRef(clazz));
    gFields.certificateClassId = static_cast<jclass>(env->NewGlobalRef(clazz));

    FIND_CLASS(clazz, "java/util/ArrayList");
    GET_METHOD_ID(gFields.arraylist.init, clazz, "<init>", "()V");
@@ -595,13 +595,13 @@ static void android_media_MediaDrm_native_init(JNIEnv *env) {
    GET_METHOD_ID(gFields.entry.getValue, clazz, "getValue", "()Ljava/lang/Object;");

    FIND_CLASS(clazz, "java/util/HashMap");
    gFields.hashmapClassId = reinterpret_cast<jclass>(env->NewGlobalRef(clazz));
    gFields.hashmapClassId = static_cast<jclass>(env->NewGlobalRef(clazz));

    FIND_CLASS(clazz, "java/lang/String");
    gFields.stringClassId = reinterpret_cast<jclass>(env->NewGlobalRef(clazz));
    gFields.stringClassId = static_cast<jclass>(env->NewGlobalRef(clazz));

    FIND_CLASS(clazz, "java/util/ArrayList");
    gFields.arraylistClassId = reinterpret_cast<jclass>(env->NewGlobalRef(clazz));
    gFields.arraylistClassId = static_cast<jclass>(env->NewGlobalRef(clazz));
}

static void android_media_MediaDrm_native_setup(
+7 −9
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.mediadrm.signer;

import android.content.Context;
import android.media.MediaDrm;
import android.media.DeniedByServerException;

@@ -37,7 +36,7 @@ public final class MediaDrmSigner {
     * server
     */
    public final static class CertificateRequest {
        private MediaDrm.CertificateRequest mCertRequest;
        private final MediaDrm.CertificateRequest mCertRequest;

        CertificateRequest(MediaDrm.CertificateRequest certRequest) {
            mCertRequest = certRequest;
@@ -65,7 +64,7 @@ public final class MediaDrmSigner {
     * with a certificate.
     */
    public final static class Certificate {
        private MediaDrm.Certificate mCertificate;
        private final MediaDrm.Certificate mCertificate;

        Certificate(MediaDrm.Certificate certificate) {
            mCertificate = certificate;
@@ -124,7 +123,6 @@ public final class MediaDrmSigner {
    /**
     * Sign data using an RSA key
     *
     * @param context the App context
     * @param drm the MediaDrm object
     * @param sessionId a sessionId obtained from openSession on the MediaDrm object
     * @param algorithm the signing algorithm to use, e.g. "PKCS1-BlockType1"
@@ -132,8 +130,8 @@ public final class MediaDrmSigner {
     * from provideCertificateResponse
     * @param message the data for which a signature is to be computed
     */
    public static byte[] signRSA(Context context, MediaDrm drm, byte[] sessionId,
    public static byte[] signRSA(MediaDrm drm, byte[] sessionId,
            String algorithm, byte[] wrappedKey, byte[] message) {
        return drm.signRSA(context, sessionId, algorithm, wrappedKey, message);
        return drm.signRSA(sessionId, algorithm, wrappedKey, message);
    }
}