You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.5 KiB
79 lines
1.5 KiB
//-----------------------------------------------------------------------------
|
|
//
|
|
// File: cbckey.h
|
|
//
|
|
// Microsoft Digital Rights Management
|
|
// Copyright (C) Microsoft Corporation, 1998 - 1999, All Rights Reserved
|
|
//
|
|
// Description:
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
#ifndef __CBCMAC_H__
|
|
#define __CBCMAC_H__
|
|
|
|
// #define _TEST_MAC to compile code in a "default" environment
|
|
#ifndef _TEST_MAC
|
|
#define _TEST_MAC
|
|
#endif
|
|
|
|
#ifdef _TEST_MAC
|
|
#define SHCLASS
|
|
#endif
|
|
|
|
|
|
typedef struct _CBCKey {
|
|
UINT32 a1, b1, c1, d1, e1, f1, a2, b2, c2, d2, e2, f2;
|
|
} CBCKey;
|
|
|
|
UINT32 CBC64WS4_asm(
|
|
UINT32 *Data,
|
|
unsigned NumDWORDBlocks,
|
|
UINT32 *pKey2,
|
|
CBCKey key );
|
|
|
|
UINT32 InvCBC64WS4_asm(
|
|
UINT32 *Data,
|
|
unsigned NumDWORDBlocks,
|
|
UINT32 *pKey2,
|
|
CBCKey key,
|
|
CBCKey ikey );
|
|
|
|
UINT32 inv32(UINT32 n);
|
|
|
|
typedef struct {
|
|
UINT32 sum,t;
|
|
BYTE buf[8];
|
|
DWORD dwBufLen;
|
|
} CBCState;
|
|
|
|
void CBC64Init( CBCKey *cbckey, CBCState *cbcstate, BYTE *pKey );
|
|
void CBC64InitState( CBCState *cbcstate );
|
|
void CBC64InvKey( CBCKey *cbcKey, CBCKey *cbcInvKey );
|
|
void CBC64Update( CBCKey *key, CBCState *cbcstate,DWORD dwLen, BYTE *pData );
|
|
UINT32 CBC64Finalize( CBCKey *key, CBCState *cbcstate, UINT32 *pKey2 );
|
|
UINT32 CBC64Invert( CBCKey *key, CBCKey *ikey, UINT32 MacA1, UINT32 MacA2,
|
|
UINT32 MacB1, UINT32 MacB2, UINT32 *pInvKey2 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|