1/*
2 * Copyright (c) 1999-2013 Apple Inc. All rights reserved.
3 *
4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the License
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
14 *
15 * Please obtain a copy of the License at
16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
17 *
18 * The Original Code and all software distributed under the License are
19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 * Please see the License for the specific language governing rights and
24 * limitations under the License.
25 *
26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27 */
28
29/*
30	File:		smf.h
31
32	Contains:	Secure malloc/free API.
33
34	Written by:	Doug Mitchell
35
36	Copyright: (c) 2000 by Apple Computer, Inc., all rights reserved.
37
38	Change History (most recent first):
39
40		02/10/00	dpm		Created, based on Counterpane's Yarrow code.
41
42*/
43
44#ifndef _YARROW_SMF_H_
45#define _YARROW_SMF_H_
46
47#if defined(__cplusplus)
48extern "C" {
49#endif
50
51/* smf.h */
52
53	/*
54	Header file for secure malloc and free routines used by the Counterpane
55	PRNG. Use this code to set up a memory-mapped file out of the system
56	paging file, allocate and free memory from it, and then return
57	the memory to the system registry after having securely overwritten it.
58	Details of the secure overwrite can be found in Gutmann 1996 (Usenix).
59	Trying to explain it here will cause my head to begin to hurt.
60	Ari Benbasat (pigsfly@unixg.ubc.ca)
61	*/
62
63
64
65#if		defined(macintosh) || defined(__APPLE__)
66#include "macOnly.h"
67#define MMPTR	void *
68
69#ifndef SMFAPI
70#define SMFAPI
71#endif
72
73#else	/* original Yarrow */
74
75/* Declare HOOKSAPI as __declspec(dllexport) before
76   including this file in the actual DLL */
77#ifndef SMFAPI
78#define SMFAPI __declspec(dllimport)
79#endif
80#define MMPTR	BYTE
81
82#endif /* macintosh */
83
84
85#define MM_NULL	((void *)0)
86
87/* Function forward declarations */
88SMFAPI void mmInit( void );
89SMFAPI MMPTR mmMalloc(DWORD request);
90SMFAPI void mmFree(MMPTR ptrnum);
91SMFAPI LPVOID mmGetPtr(MMPTR ptrnum);
92SMFAPI void mmReturnPtr(MMPTR ptrnum);
93#if	0
94SMFAPI void mmFreePtr(LPVOID ptr);
95#endif
96
97#if defined(__cplusplus)
98}
99#endif
100
101#endif	/* _YARROW_SMF_H_*/
102