1*33de042dSApple OSS Distributions /* 2*33de042dSApple OSS Distributions * Copyright (c) 2005-2008 Apple Inc. All rights reserved. 3*33de042dSApple OSS Distributions * 4*33de042dSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5*33de042dSApple OSS Distributions * 6*33de042dSApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7*33de042dSApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8*33de042dSApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9*33de042dSApple OSS Distributions * compliance with the License. The rights granted to you under the License 10*33de042dSApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11*33de042dSApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12*33de042dSApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13*33de042dSApple OSS Distributions * terms of an Apple operating system software license agreement. 14*33de042dSApple OSS Distributions * 15*33de042dSApple OSS Distributions * Please obtain a copy of the License at 16*33de042dSApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17*33de042dSApple OSS Distributions * 18*33de042dSApple OSS Distributions * The Original Code and all software distributed under the License are 19*33de042dSApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20*33de042dSApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21*33de042dSApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22*33de042dSApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23*33de042dSApple OSS Distributions * Please see the License for the specific language governing rights and 24*33de042dSApple OSS Distributions * limitations under the License. 25*33de042dSApple OSS Distributions * 26*33de042dSApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27*33de042dSApple OSS Distributions */ 28*33de042dSApple OSS Distributions 29*33de042dSApple OSS Distributions #ifdef KERNEL_PRIVATE 30*33de042dSApple OSS Distributions 31*33de042dSApple OSS Distributions #ifndef _KERN_PAGE_DECRYPT_H 32*33de042dSApple OSS Distributions #define _KERN_PAGE_DECRYPT_H 33*33de042dSApple OSS Distributions 34*33de042dSApple OSS Distributions #include <mach/machine.h> 35*33de042dSApple OSS Distributions 36*33de042dSApple OSS Distributions /* 37*33de042dSApple OSS Distributions * Interface for DSMOS 38*33de042dSApple OSS Distributions */ 39*33de042dSApple OSS Distributions typedef int (*dsmos_page_transform_hook_t) (const void *, void*, unsigned long long, void *); 40*33de042dSApple OSS Distributions extern void dsmos_page_transform_hook(dsmos_page_transform_hook_t hook); /* exported */ 41*33de042dSApple OSS Distributions 42*33de042dSApple OSS Distributions extern int dsmos_page_transform(const void *, void*, unsigned long long, void*); 43*33de042dSApple OSS Distributions 44*33de042dSApple OSS Distributions 45*33de042dSApple OSS Distributions /* 46*33de042dSApple OSS Distributions * Interface for text decryption family 47*33de042dSApple OSS Distributions */ 48*33de042dSApple OSS Distributions struct pager_crypt_info { 49*33de042dSApple OSS Distributions /* Decrypt one page */ 50*33de042dSApple OSS Distributions int (*page_decrypt)(const void *src_vaddr, void *dst_vaddr, 51*33de042dSApple OSS Distributions unsigned long long src_offset, void *crypt_ops); 52*33de042dSApple OSS Distributions /* Pager using this crypter terminates - crypt module not needed anymore */ 53*33de042dSApple OSS Distributions void (*crypt_end)(void *crypt_ops); 54*33de042dSApple OSS Distributions /* Private data for the crypter */ 55*33de042dSApple OSS Distributions void *crypt_ops; 56*33de042dSApple OSS Distributions volatile int crypt_refcnt; 57*33de042dSApple OSS Distributions }; 58*33de042dSApple OSS Distributions typedef struct pager_crypt_info pager_crypt_info_t; 59*33de042dSApple OSS Distributions 60*33de042dSApple OSS Distributions typedef enum { 61*33de042dSApple OSS Distributions CRYPT_ORIGIN_ANY, 62*33de042dSApple OSS Distributions CRYPT_ORIGIN_APP_LAUNCH, 63*33de042dSApple OSS Distributions CRYPT_ORIGIN_LIBRARY_LOAD, 64*33de042dSApple OSS Distributions CRYPT_ORIGIN_MAX, 65*33de042dSApple OSS Distributions } crypt_origin_t; 66*33de042dSApple OSS Distributions 67*33de042dSApple OSS Distributions struct crypt_file_data { 68*33de042dSApple OSS Distributions char *filename; 69*33de042dSApple OSS Distributions cpu_type_t cputype; 70*33de042dSApple OSS Distributions cpu_subtype_t cpusubtype; 71*33de042dSApple OSS Distributions crypt_origin_t origin; 72*33de042dSApple OSS Distributions }; 73*33de042dSApple OSS Distributions typedef struct crypt_file_data crypt_file_data_t; 74*33de042dSApple OSS Distributions 75*33de042dSApple OSS Distributions typedef int (*text_crypter_create_hook_t)(struct pager_crypt_info *crypt_info, 76*33de042dSApple OSS Distributions const char *id, void *crypt_data); 77*33de042dSApple OSS Distributions extern void text_crypter_create_hook_set(text_crypter_create_hook_t hook); 78*33de042dSApple OSS Distributions extern text_crypter_create_hook_t text_crypter_create; 79*33de042dSApple OSS Distributions 80*33de042dSApple OSS Distributions #endif /* _KERN_PAGE_DECRYPT_H */ 81*33de042dSApple OSS Distributions 82*33de042dSApple OSS Distributions #endif /* KERNEL_PRIVATE */ 83