⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wmdrmnet.h

📁 本程序为ST公司开发的源代码
💻 H
字号:
/**@@@+++@@@@********************************************************************** Microsoft Windows Media** Copyright (C) Microsoft Corporation. All rights reserved.*****@@@---@@@@*******************************************************************//* * WmdrmNet.h * * Header file for routines in WmdrmNet.c */#ifndef _WMDRMNET_H_#define _WMDRMNET_H_#include "rsa.h"#include "DrmAes.h"#ifdef  __cplusplusextern "C"{#endif/* * Version of the WMDRMNET protocol */#define WMDRMNET_VERSION_2 2/* * Message Types of the WMDRMNET protocol *//* Registration Message */#define WMDRMNET_REGISTRATION_MESSAGE_TYPE 1#define WMDRMNET_REGISTRATION_MESSAGE_SIZE ( \            sizeof(DRM_BYTE) +                  /* Protocol Vesion */ \            sizeof(DRM_BYTE) +                  /* Message Type */ \            sizeof(DRM_ID) +                    /* Serial Number */ \            sizeof(DRM_DWORD) )                 /* Certificate Length */ \/* Registration Response Message */#define WMDRMNET_REGISTRATION_RESPONSE_MESSAGE_TYPE 2#define WMDRMNET_REGISTRATION_RESPONSE_MESSAGE_SIZE ( \            sizeof(DRM_BYTE) +                  /* Protocol Vesion */ \            sizeof(DRM_BYTE) +                  /* Message Type */ \            sizeof(DRM_WORD) +                  /* Signature Offset */ \            sizeof(DRM_ID) +                    /* Serial Number */ \            sizeof(DRM_ID) +                    /* Session ID */ \            sizeof(DRM_WORD) +                  /* Address Length */ \            sizeof(DRM_BYTE) +                  /* Seed Encryption Type */  \            sizeof(DRM_WORD) +                  /* Seed Length */  \            sizeof(DRM_BYTE) +                  /* Signature Type */ \            sizeof(DRM_WORD) )                  /* Signature Length */ \/* Proximity Start Message */#define WMDRMNET_PROXIMITY_START_MESSAGE_TYPE 3#define WMDRMNET_PROXIMITY_START_MESSAGE_SIZE ( \            sizeof(DRM_BYTE) +                  /* Protocol Vesion */ \            sizeof(DRM_BYTE) +                  /* Message Type */ \            sizeof(DRM_ID) )                    /* Session ID */ \/* Proximity Challenge Message */#define WMDRMNET_PROXIMITY_CHALLENGE_MESSAGE_TYPE 4#define WMDRMNET_PROXIMITY_CHALLENGE_MESSAGE_SIZE ( \            sizeof(DRM_BYTE) +                  /* Protocol Vesion */ \            sizeof(DRM_BYTE) +                  /* Message Type */ \            sizeof(DRM_BYTE) +                  /* Sequence Number */ \            sizeof(DRM_ID) +                    /* Session ID */ \            sizeof(DRM_ID) )                    /* Challenge */ \/* Proximity Response Message */#define WMDRMNET_PROXIMITY_RESPONSE_MESSAGE_TYPE 5#define WMDRMNET_PROXIMITY_RESPONSE_MESSAGE_SIZE ( \            sizeof(DRM_BYTE) +                  /* Protocol Vesion */ \            sizeof(DRM_BYTE) +                  /* Message Type */ \            sizeof(DRM_BYTE) +                  /* Sequence Number */ \            sizeof(DRM_ID) )                    /* Session ID */ \/* Proximity Result Message */#define WMDRMNET_PROXIMITY_RESULT_MESSAGE_TYPE 6#define WMDRMNET_PROXIMITY_RESULT_MESSAGE_SIZE ( \            sizeof(DRM_BYTE) +                  /* Protocol Vesion */ \            sizeof(DRM_BYTE) +                  /* Message Type */ \            sizeof(DRM_ID) +                    /* Session ID */ \            sizeof(DRM_WORD) )                  /* Result *//* License Request Message */#define WMDRMNET_LICENSE_REQUEST_MESSAGE_TYPE 7#define WMDRMNET_LICENSE_REQUEST_MESSAGE_SIZE ( \            sizeof(DRM_BYTE) +                  /* Protocol Vesion */ \            sizeof(DRM_BYTE) +                  /* Message Type */ \            sizeof(DRM_ID) +                    /* Rights ID */ \            sizeof(DRM_DWORD) +                 /* Reserved */ \            sizeof(DRM_ID) +                    /* Serial Number */ \            sizeof(DRM_DWORD) +                 /* Certificate Length */ \            sizeof(DRM_WORD) )                  /* Action Length *//* License Response Message */#define WMDRMNET_LICENSE_RESPONSE_MESSAGE_TYPE 8#define WMDRMNET_LICENSE_RESPONSE_MESSAGE_SIZE ( \            sizeof(DRM_BYTE) +                  /* Protocol Vesion */ \            sizeof(DRM_BYTE) +                  /* Message Type */ \            sizeof(DRM_DWORD) )                 /* Length of Reserved field */#define WMDRMNET_REVOCATION_LIST_REQUEST_MESSAGE_TYPE 10#define WMDRMNET_REVOCATION_LIST_REQUEST_MESSAGE_SIZE ( \            sizeof(DRM_BYTE) +                        /* Protocol Vesion */ \            sizeof(DRM_BYTE) +                        /* Message Type */ \            sizeof(DRM_BYTE) )                        /* Number of entries */ \#define WMDRMNET_REVOCATION_LIST_RESPONSE_MESSAGE_TYPE 11#define WMDRMNET_REVOCATION_LIST_RESPONSE_MESSAGE_SIZE ( \            sizeof(DRM_BYTE) +                        /* Protocol Vesion */ \            sizeof(DRM_BYTE) )                        /* Message Type *//* Define signature types */#define WMDRMNET_SIGNATURE_AES_OMAC_TYPE    1 /* AES OMAC1 */#define WMDRMNET_SIGNATURE_SHA_RSAPSS_TYPE  2 /* SHA1 signed by the 1024-bit RSA private key *//* Define encryption types */#define WMDRMNET_ENCRYPT_RSA_OAEP 1   /* 1024-bit RSA OAEP *//* Wait time between proximity detection attempts */#define WMDRMNET_PROXIMITY_DETECTION_INTERVAL   30 /* milliseconds *//* Actions */#define WMDRMNET_PLAY_ACTION "PLAY"#define WMDRMNET_PLAY_ACTION_SIZE (sizeof(WMDRMNET_PLAY_ACTION)-1)/* * * Define a structure for packing and unpacking WmdrmNet messages */typedef struct {    /* Allocated Buffer */    DRM_BYTE *Buffer;    DRM_DWORD BufferSize;    /* Current Offset into the buffer */    DRM_DWORD Offset;} WMDRMNET_MESSAGE_DESCRIPTOR;/* * Low level procedures for packing and unpacking messages */DRM_RESULTWmdrmNetAllocateMessageDescriptor(    IN DRM_BYTE *Message,    IN DRM_DWORD MessageSize,    OUT WMDRMNET_MESSAGE_DESCRIPTOR **MessageDescriptor    );WMDRMNET_MESSAGE_DESCRIPTOR *WmdrmNetAllocateMessage(    IN DRM_BYTE MessageType,    IN DRM_DWORD VariableSize    );DRM_RESULTWmdrmNetValidateMessage(    IN DRM_BYTE *Message,    IN DRM_DWORD MessageSize,    IN DRM_BYTE ExpectedMessageType,    OUT WMDRMNET_MESSAGE_DESCRIPTOR **MessageDescriptor    );DRM_VOIDWmdrmNetPackOctet(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    IN DRM_BYTE Octet    );DRM_VOIDWmdrmNetPackOctets(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    IN DRM_BYTE *Value,    IN DRM_DWORD ValueSize    );DRM_BOOLWmdrmNetUnpackOctet(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    OUT DRM_BYTE *Octet    );DRM_BOOLWmdrmNetUnpackOctets(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    OUT DRM_BYTE **Value,    IN DRM_DWORD ValueSize    );DRM_VOIDWmdrmNetPackWord(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    IN DRM_WORD Value    );DRM_BOOLWmdrmNetUnpackWord(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    OUT DRM_WORD *Value    );DRM_VOIDWmdrmNetPackDword(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    IN DRM_DWORD Value    );DRM_BOOLWmdrmNetUnpackDword(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    OUT DRM_DWORD *Value    );DRM_BOOLWmdrmNetUnpackUI64(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    OUT DRM_UINT64 *Value    );DRM_VOIDWmdrmNetPackVal128(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    IN DRM_ID *Value    );DRM_BOOLWmdrmNetUnpackVal128(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    OUT DRM_ID *Value    );DRM_VOIDWmdrmNetFreeMessageDescriptor(    IN WMDRMNET_MESSAGE_DESCRIPTOR *MessageDescriptor,    IN DRM_BOOL Done    );/* * Procedures for packing and unpacking messages */DRM_BYTEWmdrmNetGetMessageType(    IN DRM_BYTE *Message,    IN DRM_DWORD MessageSize    );DRM_DWORDWmdrmNetFixedMessageSize(    IN DRM_BYTE MessageType    );DRM_AES_KEY *WmdrmNetGetRegistrationKey(    IN DRM_ID *pSeed,    IN DRM_BOOL bComputeContentIntegrityKey    );DRM_RESULTWmdrmNetPackRegistrationMessage(    IN DRM_ID *SerialNumber,    IN DRM_BYTE *DeviceCertificate,    IN DRM_DWORD DeviceCertificateSize,    OUT DRM_BYTE **Message,    OUT DRM_DWORD *MessageSize    );DRM_RESULTWmdrmNetUnpackRegistrationResponseMessage(    IN crl_rsa_private_key *pPrivateKey,    IN DRM_BYTE *Message,    IN DRM_DWORD MessageSize,    OUT DRM_ID *Seed,    OUT DRM_ID *SerialNumber,    OUT DRM_ID *SessionId,    OUT DRM_BYTE **Address,    OUT DRM_WORD *AddressSize    );DRM_RESULTWmdrmNetPackLicenseRequestMessage(    IN DRM_ID *RightsId,    IN DRM_ID *SerialNumber,    IN DRM_BYTE *DeviceCertificate,    IN DRM_DWORD DeviceCertificateSize,    IN DRM_BYTE *Action,    IN DRM_WORD ActionSize,    OUT DRM_BYTE **Message,    OUT DRM_DWORD *MessageSize    );DRM_RESULTWmdrmNetUnpackLicenseResponseMessage(    IN DRM_BYTE *Message,    IN DRM_DWORD MessageSize,    OUT DRM_BYTE **ppbLicense,    OUT DRM_DWORD *cbLicense    );/* * These status codes should be moved to drmresults.h *//**   MessageId:  DRM_E_INVALID_MESSAGE*   Message Meaning:*       A received message is garbled*   Hex Value:  0x8004c801*/#define DRM_E_INVALID_MESSAGE               MAKE_DRM_RESULT(DRM_SEVERITY_ERROR,  DRM_FACILITY_ITF, DRM_E_BASECODE+0x801)/**   MessageId:  DRM_E_INVALID_MESSAGE_TYPE*   Message Meaning:*       A received message contains an invalid message type*   Hex Value:  0x8004c802*/#define DRM_E_INVALID_MESSAGE_TYPE          MAKE_DRM_RESULT(DRM_SEVERITY_ERROR,  DRM_FACILITY_ITF, DRM_E_BASECODE+0x802)/**   MessageId:  DRM_E_INVALID_MESSAGE_TYPE*   Message Meaning:*       A received message contains an invalid message version*   Hex Value:  0x8004c803*/#define DRM_E_INVALID_MESSAGE_VERSION       MAKE_DRM_RESULT(DRM_SEVERITY_ERROR,  DRM_FACILITY_ITF, DRM_E_BASECODE+0x803)#ifdef  __cplusplus}#endif#endif /* _WMDRMNET_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -