]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_codesigning/lib/CodeSigner.cpp
Security-57337.40.85.tar.gz
[apple/security.git] / OSX / libsecurity_codesigning / lib / CodeSigner.cpp
index 3d80482c8e73c89b3baf8f6e983443f7fbb1db6b..783262bab48ab431512db05cfbebde46c78a9cb0 100644 (file)
@@ -65,7 +65,7 @@ public:
 // Construct a SecCodeSigner
 //
 SecCodeSigner::SecCodeSigner(SecCSFlags flags)
-       : mOpFlags(flags), mDigestAlgorithm(kSecCodeSignatureDefaultDigestAlgorithm), mLimitedAsync(NULL)
+       : mOpFlags(flags), mLimitedAsync(NULL)
 {
 }
 
@@ -172,30 +172,6 @@ void SecCodeSigner::returnDetachedSignature(BlobCore *blob, Signer &signer)
 }
 
 
-//
-// Our DiskRep::signingContext methods communicate with the signing subsystem
-// in terms those callers can easily understand.
-//
-string SecCodeSigner::sdkPath(const std::string &path) const
-{
-       assert(path[0] == '/'); // need absolute path here
-       if (mSDKRoot)
-               return cfString(mSDKRoot) + path;
-       else
-               return path;
-}
-
-bool SecCodeSigner::isAdhoc() const
-{
-       return mSigner == SecIdentityRef(kCFNull);
-}
-
-SecCSFlags SecCodeSigner::signingFlags() const
-{
-       return mOpFlags;
-}
-
-
 //
 // The actual parsing operation is done in the Parser class.
 //
@@ -219,8 +195,11 @@ SecCodeSigner::Parser::Parser(SecCodeSigner &state, CFDictionaryRef parameters)
                state.mCdFlagsGiven = false;
        
        // digest algorithms are specified as a numeric code
-       if (CFNumberRef digestAlgorithm = get<CFNumberRef>(kSecCodeSignerDigestAlgorithm))
-               state.mDigestAlgorithm = cfNumber<unsigned int>(digestAlgorithm);
+       if (CFCopyRef<CFTypeRef> digestAlgorithms = get<CFTypeRef>(kSecCodeSignerDigestAlgorithm)) {
+               CFRef<CFArrayRef> array = cfArrayize(digestAlgorithms);
+               CFToVector<CodeDirectory::HashAlgorithm, CFNumberRef, cfNumber<CodeDirectory::HashAlgorithm> > digests(array);
+               std::copy(digests.begin(), digests.end(), std::inserter(state.mDigestAlgorithms, state.mDigestAlgorithms.begin()));
+       }
 
        if (CFNumberRef cmsSize = get<CFNumberRef>(CFSTR("cmssize")))
                state.mCMSSize = cfNumber<size_t>(cmsSize);