📄 key1024.c
字号:
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Copyright (c) 2001. Samsung Electronics, co. ltd All rights reserved.
Module Name:
Abstract:
Debug routines
rev:
2002.4.3 : First S3C2410 version (SOC)
2002.1.28 : CE.NET port (kwangyoon LEE, kwangyoon@samsung.com)
Notes:
This file is only needed if run-time DLL and EXE signature checking is turned on.
The public key below should correspond to the private key used to sign the
executables
--*/
const unsigned char g_bSignPublicKeyBlob[] = {
0x06,0x02,0x00,0x00,0x00,0x24,0x00,0x00,0x52,0x53,0x41,0x31,0x00,0x04,0x00,0x00,
0x01,0x00,0x01,0x00,0x51,0xea,0xee,0xba,0x4f,0xe6,0xf4,0x87,0x44,0x7e,0x88,0xb7,
0x70,0x9d,0x05,0xf2,0xe2,0x91,0x08,0xb9,0x92,0x95,0xa7,0x76,0xe2,0xd2,0xc1,0x5a,
0x3b,0x0f,0x38,0x0a,0x5f,0x99,0xde,0x5c,0xa0,0x36,0xd3,0x03,0xca,0xd3,0x3e,0x81,
0xea,0x8d,0x60,0x43,0x12,0x21,0xf2,0x8f,0x81,0x26,0x78,0xe3,0x51,0x22,0x0b,0xee,
0x6c,0x63,0x2e,0xa8,0xf6,0x6c,0xbc,0xa1,0x41,0x03,0xf7,0xb6,0x84,0x29,0x46,0xe7,
0xfd,0xd7,0x33,0xf6,0x86,0xeb,0x08,0xe1,0x50,0xb0,0x81,0xbf,0xa2,0x91,0x6a,0xcd,
0xd0,0x32,0xb6,0x9a,0x5b,0x51,0x85,0xdd,0xab,0x90,0x17,0x9a,0xcd,0x64,0x1c,0x48,
0x16,0xc3,0xb4,0x03,0xa1,0xa7,0x15,0xf6,0x6f,0x29,0x0e,0xf7,0x87,0xda,0xc0,0x59,
0x55,0x0c,0x84,0x87
};
typedef BOOL (* OEMLoadInit_t)(LPWSTR lpszName);
typedef DWORD (* OEMLoadModule_t)(LPBYTE lpData, DWORD cbData);
// The following two kernel function pointers should be initialized in the OAL
extern OEMLoadInit_t pOEMLoadInit; // implemented by OEMLoadInit()
extern OEMLoadModule_t pOEMLoadModule; // implemented by OEMLoadModule()
// LoadAuth library routines
extern BOOL InitPubKey(const BYTE *KeyBlob, DWORD cbKeyBlob);
extern BOOL CertifyModuleInit(void);
extern BOOL CertifyModule(PBYTE pbBlock, DWORD cbBlock);
extern BOOL CertifyModuleFinal(PBYTE *ppbSignData, PDWORD pcbSignData);
// called once for each RAM executable module, to initialize signature checking
BOOL OEMLoadInit(LPWSTR lpszName)
{
return CertifyModuleInit();
}
// called one or more times after OemLoadInit
DWORD OEMLoadModule(LPBYTE lpData, DWORD cbData)
{
if (cbData)
{
// process module bytes
return CertifyModule(lpData, cbData);
}
else
{
// final call
DWORD dwTrustLevel = OEM_CERTIFY_FALSE;
LPBYTE pSignedData;
DWORD cbSignedData;
BOOL fRet = CertifyModuleFinal(&pSignedData, &cbSignedData);
if (fRet)
{
// the file has a valid signature
// we expect the trust level to be returned as signed data
if (cbSignedData < sizeof(CHAR))
fRet = FALSE;
else
switch (*pSignedData)
{
case 'T' :
dwTrustLevel = OEM_CERTIFY_TRUST;
break;
case 'R' :
dwTrustLevel = OEM_CERTIFY_RUN;
break;
default:
dwTrustLevel = OEM_CERTIFY_FALSE;
break;
}
}
#ifdef DEBUG
if (!fRet)
lpWriteDebugStringFunc(TEXT("OEMLoadModule:signature check failed.\r\n"));
#endif
// return one of the OEM_CERTIFY levels
return dwTrustLevel;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -