I'm trying to generate a private key with and without the Security Enclave like this:
     CFErrorRef error = NULL;
     SecAccessControlRef sacObject = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
                                                       kSecAttrAccessibleWhenUnlocked,
                                                       kSecAccessControlDevicePasscode, &error);
        NSDictionary *attributes = @{
    //               (__bridge id)kSecAttrTokenID: (__bridge id)kSecAttrTokenIDSecureEnclave,
               (__bridge id)kSecAttrKeyType: (__bridge id)kSecAttrKeyTypeEC,
               (__bridge id)kSecAttrKeySizeInBits: @256,
               (__bridge id)kSecPrivateKeyAttrs: @{
                   (__bridge id)kSecAttrAccessControl: (__bridge_transfer id)sacObject,
                   (__bridge id)kSecAttrIsPermanent: @YES,
                   (__bridge id)kSecAttrLabel: @"TestKey",
               },
           };
        SecKeyRef privateKey = SecKeyCreateRandomKey((__bridge CFDictionaryRef)attributes, &error);
        if (!privateKey) {
            NSError *err = CFBridgingRelease(error);  // ARC takes ownership
            // Handle the error. . .
        }SecKeyCreateRandomKey succeeds only when when I set the proper entitlement (Keychain Access Groups) for both cases, which works perfectly for an UI app.
The problem is that I need to generate the key from a service-console application. Thus, when I add the entitlement (Keychain Access Groups) to my console app, it simply doesn't start.
Any ideas how to fix that?
Thanks!