williamr@2: /* williamr@2: * Copyright (c) 2005 - 2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Contains the OMA DRM CAF Agent specific data types, commands williamr@2: * and attributes williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: #ifndef OMA2AGENT_H williamr@2: #define OMA2AGENT_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: williamr@2: // CONSTANTS williamr@2: _LIT(KOmaDrm2AgentName, "OMA DRM Agent"); williamr@2: _LIT8(KOma1DrmMessageContentType, "application/vnd.oma.drm.message"); williamr@2: _LIT8(KOma1XmlRoContentType, "application/vnd.oma.drm.rights+xml"); williamr@2: _LIT8(KOma1WbxmlRoContentType, "application/vnd.oma.drm.rights+wbxml"); williamr@2: _LIT8(KOma2RoContentType, "application/vnd.oma.drm.roap-pdu+xml"); williamr@2: _LIT8(KOma2ProtectedRoType, "application/vnd.oma.drm.ro+xml"); williamr@2: _LIT8(KOma2TriggerContentType, "application/vnd.oma.drm.roap-trigger+xml"); williamr@2: _LIT8(KOma1DcfContentType, "application/vnd.oma.drm.content"); williamr@2: _LIT8(KOma2DcfContentType, "application/vnd.oma.drm.dcf"); williamr@2: _LIT8(KOmaImportContentType, "application/x-vnd.oma.drm.import"); williamr@2: _LIT8(KOmaImportMimeTypeField, "Content-type"); williamr@2: _LIT8(KOmaImportRightsField, "Rights"); williamr@2: _LIT8(KOma2DcfRoBoxId, "cid:Oma2DcfRightsObjectBox@localhost"); williamr@2: _LIT8(KOma2DcfTransactionBoxId, "cid:Oma2DcfTransactionBox@localhost"); williamr@2: _LIT8(KOma2DcfBranding, "\000\000\000\024ftypodcf\000\000\000\002odcf"); williamr@2: _LIT8(KCafMimeType, "application/x-caf"); williamr@2: _LIT(KOma1DcfExtension, ".dcf"); williamr@2: _LIT(KOma2DcfExtension, ".odf"); williamr@2: _LIT(KOma2DcfExtensionAudio, ".o4a"); williamr@2: _LIT(KOma2DcfExtensionVideo, ".o4v"); williamr@2: williamr@2: // DATA TYPES williamr@2: williamr@2: // Transport scheme for encrypted rights objects williamr@2: williamr@2: enum TKeyTransportScheme williamr@2: { williamr@2: EOma, williamr@2: ECmlaIp1, williamr@2: ECmlaIp2, williamr@2: ECmlaIp3, williamr@2: ECmlaIp4, williamr@2: ECmlaIp5, williamr@2: ECmlaIp6, williamr@2: ECmlaIp7, williamr@2: }; williamr@2: williamr@2: namespace ContentAccess williamr@2: { williamr@2: // Agent specific attribute identifiers williamr@2: williamr@2: enum TOma2AgentAttribute williamr@2: { williamr@2: EFileType = EAgentSpecificAttributeBase + 1, williamr@2: EPreviewType, williamr@2: ESilentRightsType, williamr@2: EDeliveryMethod, williamr@2: ERecordingYear williamr@2: }; williamr@2: williamr@2: enum TOma2AgentStringAttribute williamr@2: { williamr@2: EInstantPreviewUri = EAgentSpecificAttributeBase + 1, williamr@2: EPreviewRightsUri, williamr@2: ERightsIssuerUrl, williamr@2: ESilentRightsUrl, williamr@2: ETransactionTrackingId, williamr@2: EEmbeddedRightsObject, williamr@2: EGroupId, williamr@2: EDomainRightsIssuerUrl, williamr@2: EDomainId, williamr@2: EDomainRightsIssuerId, williamr@2: EContentVendor, williamr@2: ECopyright, williamr@2: EContentName, williamr@2: EOmaDrmContentLocation, williamr@2: EOmaDrmContentVersion, williamr@2: EPerformer, williamr@2: EOmaDrmGenre, williamr@2: ERatingInfo, williamr@2: EClassificationInfo, williamr@2: EKeyword, williamr@2: ELocInfoName, williamr@2: ELocInfoAstronomicalBody, williamr@2: ELocInfoAdditionalNotes, williamr@2: EAlbumTitle, williamr@2: EAlbumTrack, williamr@2: ECoverUri, williamr@2: ELyricsUrl, williamr@2: EFileName williamr@2: }; williamr@2: williamr@2: // File types williamr@2: // EOma1DcfBased, The file type is derived from Oma1Dcf but has some extensions to it williamr@2: enum williamr@2: { williamr@2: ENoDcf = 0, williamr@2: EOma1Dcf = 1, williamr@2: EOma2Dcf = 2, williamr@2: EOma1DcfBased = 4 williamr@2: }; williamr@2: williamr@2: // Delivery method williamr@2: williamr@2: enum TOmaDrmDeliveryMethod williamr@2: { williamr@2: EOmaDrm1LocalDataFile, williamr@2: EOmaDrm1ForwardLock, williamr@2: EOmaDrm1ForwardLockDcf, williamr@2: EOmaDrm1CombinedDelivery, williamr@2: EOmaDrm1CombinedDeliveryDcf, williamr@2: EOmaDrm1SeparateDelivery, williamr@2: EOmaDrm2 williamr@2: }; williamr@2: williamr@2: // Encryption methods for OMA DRM 2 DCF files williamr@2: williamr@2: enum TEncryptionMethod williamr@2: { williamr@2: EMethodNULL = 0x00, williamr@2: EMethodAES_128_CBC = 0x01, williamr@2: EMethodAES_128_CTR = 0x02 williamr@2: }; williamr@2: williamr@2: // Padding options williamr@2: williamr@2: enum TEncryptionPadding williamr@2: { williamr@2: EPaddingNone = 0x00, williamr@2: EPaddingRFC_2630 = 0x01 williamr@2: }; williamr@2: williamr@2: // Rights refresh and preview options williamr@2: williamr@2: enum TSilentRefresh williamr@2: { williamr@2: ENoSilentRefresh = 0x00, williamr@2: EOnDemand = 0x01, williamr@2: EInAdvance = 0x02 williamr@2: }; williamr@2: williamr@2: enum TPreview williamr@2: { williamr@2: ENoPreview = 0x00, williamr@2: EInstantPreview = 0x01, williamr@2: EPreviewRights = 0x02 williamr@2: }; williamr@2: williamr@2: // Rights Object version (stored in the iVersionMain field of the version) williamr@2: williamr@2: enum williamr@2: { williamr@2: EOma1Rights = 1, williamr@2: EOma2Rights = 2, williamr@2: ECmlaRights = 3 williamr@2: }; williamr@2: williamr@2: // Agent specific commands williamr@2: williamr@2: enum williamr@2: { williamr@2: /** williamr@2: * Embed any present domain RO into a CContent object williamr@2: * Works as an agent specific command for CContent williamr@2: * Input buffer: unused williamr@2: * Output buffer: unused williamr@2: */ williamr@2: EEmbedDomainRo, williamr@2: williamr@2: /** williamr@2: * Return the supported OMA DRM methods williamr@2: * Works as an agent specific command for CManager williamr@2: * Input buffer: unused williamr@2: * Output buffer: String containing the following tokens williamr@2: * FL if OMA DRM 1.0 Forward Lock is supported williamr@2: * CD if OMA DRM 1.0 Combined Delivery is supported williamr@2: * SD if OMA DRM 1.0 Separate Delivery is supported williamr@2: * OMADRM2 if OMA DRM 2.0 is supported williamr@2: */ williamr@2: EOmaDrmMethods, williamr@2: williamr@2: /** williamr@2: * Set the value of the x-oma header williamr@2: * works as an agent specific command for CManager williamr@2: * Input buffer: String containing the following data williamr@2: * 4 bytes(TInt) | ContentURI williamr@2: * Output buffer: unused williamr@2: */ williamr@2: ESetPendingRightsETA, williamr@2: williamr@2: /** williamr@2: * Checks whether a memory buffer contains an OMA DRM 1.0 DCF williamr@2: * Input buffer: Memory buffer to check williamr@2: * Output buffer: unused williamr@2: * Return value: KErrNone if the buffer contains a DCF williamr@2: */ williamr@2: EBufferContainsOma1Dcf, williamr@2: williamr@2: /** williamr@2: * Decrypt an OMA DRM 1.0 DCF memory buffer williamr@2: * Input buffer: Intent of the decryption (EPlay, ...) in the first byte, williamr@2: * followed by the memory buffer to decrypt williamr@2: * Output buffer: Decrypted data williamr@2: */ williamr@2: EDecryptOma1DcfBuffer, williamr@2: williamr@2: williamr@2: /** williamr@2: * Set the content name williamr@2: * Input buffer: first memory buffer 4 bytes of length of the content name | williamr@2: * memory buffer of the new content name | williamr@2: * content id williamr@2: * Output buffer: unused williamr@2: */ williamr@2: ESetContentName, williamr@2: williamr@2: }; williamr@2: } williamr@2: williamr@2: #endif // OMA2AGENT_H williamr@2: williamr@2: // End of File