Skip to content
  • beidson@apple.com's avatar
    Part of <rdar://problem/9434311> and https://bugs.webkit.org/show_bug.cgi?id=61334 · e0a37f5b
    beidson@apple.com authored
    Should shim a few SecKeychainItem* methods on SnowLeopard
    
    Reviewed by Darin Adler.
    
    Initialize the KeychainItem shim on SnowLeopard:
    * WebProcess/mac/WebProcessMac.mm:
    (WebKit::WebProcess::initializeShim):
    
    On SnowLeopard, shim the 4 SecKeychainItem methods:
    * WebProcess/mac/WebProcessShim.h:
    * WebProcess/mac/WebProcessShim.mm:
    (WebKit::shimSecKeychainItemCopyContent):
    (WebKit::shimSecKeychainItemCreateFromContent):
    (WebKit::shimSecKeychainItemModifyContent):
    (WebKit::shimSecKeychainItemFreeContent):
    (WebKit::WebKitWebProcessKeychainItemShimInitialize):
    
    * WebProcess/mac/KeychainItemShimMethods.h: Added.
    * WebProcess/mac/KeychainItemShimMethods.mm: Added.
    Manage a set of shim-controlled AttributeList data:
    (WebKit::shimManagedAttributeLists):
    (WebKit::freeAttributeListContents):
    (WebKit::allocateAttributeListContents):
    
    Manage a set of shim-controlled KeychainItem data:
    (WebKit::shimManagedKeychainItemContents):
    (WebKit::allocateKeychainItemContentData):
    
    Free any shim-controlled AttributeList or KeychainItem data:
    (WebKit::webFreeAttributeListContentOnMainThread):
    (WebKit::webFreeAttributeListContent):
    (WebKit::webFreeKeychainItemContentOnMainThread):
    (WebKit::webFreeKeychainItemContent):
    
    Marshall these 3 KeychainItem methods to the UIProcess:
    (WebKit::webSecKeychainItemCopyContentOnMainThread):
    (WebKit::webSecKeychainItemCopyContent):
    (WebKit::webSecKeychainItemCreateFromContentOnMainThread):
    (WebKit::webSecKeychainItemCreateFromContent):
    (WebKit::webSecKeychainItemModifyContentOnMainThread):
    (WebKit::webSecKeychainItemModifyContent):
    (WebKit::initializeKeychainItemShim):
    
    Container for an AttributeList entry that knows how to encode/decode:
    * Shared/mac/KeychainAttribute.cpp: Added.
    (WebKit::KeychainAttribute::KeychainAttribute):
    (CoreIPC::encode):
    (CoreIPC::decode):
    * Shared/mac/KeychainAttribute.h: Added.
    
    Container for the relevant arguments to the shimmed methods, to send to the UIProcess:
    * Shared/mac/SecKeychainItemRequestData.cpp: Added.
    (WebKit::SecKeychainItemRequestData::SecKeychainItemRequestData):
    (WebKit::SecKeychainItemRequestData::initializeWithAttributeList):
    (WebKit::SecKeychainItemRequestData::~SecKeychainItemRequestData):
    (WebKit::SecKeychainItemRequestData::attributeList):
    (WebKit::SecKeychainItemRequestData::encode):
    (WebKit::SecKeychainItemRequestData::decode):
    * Shared/mac/SecKeychainItemRequestData.h: Added.
    (WebKit::SecKeychainItemRequestData::keychainItem):
    (WebKit::SecKeychainItemRequestData::itemClass):
    (WebKit::SecKeychainItemRequestData::length):
    (WebKit::SecKeychainItemRequestData::data):
    
    Container for the possible output from the shimmed methods, to send back to the WebProcess:
    * Shared/mac/SecKeychainItemResponseData.cpp: Added.
    (WebKit::SecKeychainItemResponseData::SecKeychainItemResponseData):
    (WebKit::SecKeychainItemResponseData::encode):
    (WebKit::SecKeychainItemResponseData::decode):
    * Shared/mac/SecKeychainItemResponseData.h: Added.
    (WebKit::SecKeychainItemResponseData::itemClass):
    (WebKit::SecKeychainItemResponseData::data):
    (WebKit::SecKeychainItemResponseData::resultCode):
    (WebKit::SecKeychainItemResponseData::attributes):
    (WebKit::SecKeychainItemResponseData::keychainItem):
    
    Actually implement the calls to the SecKeychainItem* methods in the UIProcess:
    * UIProcess/WebProcessProxy.h:
    * UIProcess/WebProcessProxy.messages.in:
    * UIProcess/mac/WebProcessProxyMac.mm:
    (WebKit::WebProcessProxy::secKeychainItemCopyContent):
    (WebKit::WebProcessProxy::secKeychainItemCreateFromContent):
    (WebKit::WebProcessProxy::secKeychainItemModifyContent):
    
    * WebKit2.xcodeproj/project.pbxproj: Project file stuff
    * Configurations/Shim.xcconfig:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87221 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    e0a37f5b