]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/Kernel/i386/IOKeyStoreHelper.cpp
xnu-4903.270.47.tar.gz
[apple/xnu.git] / iokit / Kernel / i386 / IOKeyStoreHelper.cpp
index 17ebea8021a19f461b8952585907c33c755d0ecd..88b077a25314d68b74ff37c485df870503fcc04f 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 2010 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
- * 
+ *
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
  * unlawful or unlicensed copies of an Apple operating system, or to
  * circumvent, violate, or enable the circumvention or violation of, any
  * terms of an Apple operating system software license agreement.
- * 
+ *
  * Please obtain a copy of the License at
  * http://www.opensource.apple.com/apsl/ and read it before using this file.
- * 
+ *
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
@@ -22,7 +22,7 @@
  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  * Please see the License for the specific language governing rights and
  * limitations under the License.
- * 
+ *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 
@@ -57,57 +57,58 @@ void IOSetAPFSKeyStoreData(IOMemoryDescriptor* data);
 __END_DECLS
 
 #if 1
-#define DEBG(fmt, args...)     { kprintf(fmt, ## args); }
+#define DEBG(fmt, args...)      { kprintf(fmt, ## args); }
 #else
-#define DEBG(fmt, args...)     {}
+#define DEBG(fmt, args...)      {}
 #endif
 
 void
 IOSetKeyStoreData(IOMemoryDescriptor * data)
 {
-    newData = data;
-    alreadyFetched = 0;
+       newData = data;
+       alreadyFetched = 0;
 }
 
 IOMemoryDescriptor *
 IOGetBootKeyStoreData(void)
 {
-  IOMemoryDescriptor *memoryDescriptor;
-  boot_args *args = (boot_args *)PE_state.bootArgs;
-  IOOptionBits options;
-  IOAddressRange ranges;
-
-  if (!OSCompareAndSwap(0, 1, &alreadyFetched))
-    return (NULL);
-
-  if (newData)
-  {
-    IOMemoryDescriptor * data = newData;
-    newData = NULL;
-    return (data);
-  }  
-
-  DEBG("%s: data at address %u size %u\n", __func__,
-       args->keyStoreDataStart,
-       args->keyStoreDataSize);
-
-  if (args->keyStoreDataStart == 0)
-    return (NULL);
-
-  ranges.address = args->keyStoreDataStart;
-  ranges.length = args->keyStoreDataSize;
-
-  options = kIODirectionInOut | kIOMemoryTypePhysical64 | kIOMemoryMapperNone;
-  
-  memoryDescriptor = IOMemoryDescriptor::withOptions(&ranges,
-                                                    1,
-                                                    0,
-                                                    NULL,
-                                                    options);
-
-  DEBG("%s: memory descriptor %p\n", __func__, memoryDescriptor);
-
-  return memoryDescriptor;
+       IOMemoryDescriptor *memoryDescriptor;
+       boot_args *args = (boot_args *)PE_state.bootArgs;
+       IOOptionBits options;
+       IOAddressRange ranges;
+
+       if (!OSCompareAndSwap(0, 1, &alreadyFetched)) {
+               return NULL;
+       }
+
+       if (newData) {
+               IOMemoryDescriptor * data = newData;
+               newData = NULL;
+               return data;
+       }
+
+       DEBG("%s: data at address %u size %u\n", __func__,
+           args->keyStoreDataStart,
+           args->keyStoreDataSize);
+
+       if (args->keyStoreDataStart == 0) {
+               return NULL;
+       }
+
+       ranges.address = args->keyStoreDataStart;
+       ranges.length = args->keyStoreDataSize;
+
+       options = kIODirectionInOut | kIOMemoryTypePhysical64 | kIOMemoryMapperNone;
+
+       memoryDescriptor = IOMemoryDescriptor::withOptions(&ranges,
+           1,
+           0,
+           NULL,
+           options);
+
+       DEBG("%s: memory descriptor %p\n", __func__, memoryDescriptor);
+
+       return memoryDescriptor;
 }
 
 // APFS volume key fetcher
@@ -116,45 +117,45 @@ IOGetBootKeyStoreData(void)
 void
 IOSetAPFSKeyStoreData(IOMemoryDescriptor* data)
 {
-    // Do not allow re-fetching of the boot_args key by passing NULL here.
-    if (data != NULL)
-    {
-        apfsKeyData = data;
-        apfsKeyFetched = 0;
-    }
+       // Do not allow re-fetching of the boot_args key by passing NULL here.
+       if (data != NULL) {
+               apfsKeyData = data;
+               apfsKeyFetched = 0;
+       }
 }
 
 // Retrieve any key we may have (stored in boot_args or by Hibernate)
 IOMemoryDescriptor*
 IOGetAPFSKeyStoreData()
 {
-    // Check if someone got the key before us
-    if (!OSCompareAndSwap(0, 1, &apfsKeyFetched))
-        return NULL;
-
-    // Do we have in-memory key?
-    if (apfsKeyData)
-    {
-        IOMemoryDescriptor* data = apfsKeyData;
-        apfsKeyData = NULL;
-        return data;
-    }
-
-    // Looks like there was no in-memory key and it's the first call - try boot_args
-    boot_args* args = (boot_args*)PE_state.bootArgs;
-
-    DEBG("%s: data at address %u size %u\n", __func__, args->apfsDataStart, args->apfsDataSize);
-    if (args->apfsDataStart == 0)
-        return NULL;
-
-    // We have the key in the boot_args, create IOMemoryDescriptor for the blob
-    IOAddressRange ranges;
-    ranges.address = args->apfsDataStart;
-    ranges.length = args->apfsDataSize;
-
-    const IOOptionBits options = kIODirectionInOut | kIOMemoryTypePhysical64 | kIOMemoryMapperNone;
-
-    IOMemoryDescriptor* memoryDescriptor = IOMemoryDescriptor::withOptions(&ranges, 1, 0, NULL, options);
-    DEBG("%s: memory descriptor %p\n", __func__, memoryDescriptor);
-    return memoryDescriptor;
+       // Check if someone got the key before us
+       if (!OSCompareAndSwap(0, 1, &apfsKeyFetched)) {
+               return NULL;
+       }
+
+       // Do we have in-memory key?
+       if (apfsKeyData) {
+               IOMemoryDescriptor* data = apfsKeyData;
+               apfsKeyData = NULL;
+               return data;
+       }
+
+       // Looks like there was no in-memory key and it's the first call - try boot_args
+       boot_args* args = (boot_args*)PE_state.bootArgs;
+
+       DEBG("%s: data at address %u size %u\n", __func__, args->apfsDataStart, args->apfsDataSize);
+       if (args->apfsDataStart == 0) {
+               return NULL;
+       }
+
+       // We have the key in the boot_args, create IOMemoryDescriptor for the blob
+       IOAddressRange ranges;
+       ranges.address = args->apfsDataStart;
+       ranges.length = args->apfsDataSize;
+
+       const IOOptionBits options = kIODirectionInOut | kIOMemoryTypePhysical64 | kIOMemoryMapperNone;
+
+       IOMemoryDescriptor* memoryDescriptor = IOMemoryDescriptor::withOptions(&ranges, 1, 0, NULL, options);
+       DEBG("%s: memory descriptor %p\n", __func__, memoryDescriptor);
+       return memoryDescriptor;
 }