Hello Apple Developer community,
I'm investigating an unexpected metadata representation returned by Apple's Security framework while inspecting an existing Secure Enclave-associated Keychain item on macOS.
A read-only inspection using SecItemCopyMatching returns one matching key record with a successful status, a Secure Enclave token identifier (com.apple.setoken), and a 256-bit key size.
However, direct Core Foundation type inspection reports:
kSecAttrKeyType: CFNumber
kSecAttrKeyClass: CFNumber
kSecAttrSynchronizable: CFNumber
The raw Core Foundation observations and bridged observations agree.
Our current validator rejects these unexpected types and returns UNSUPPORTED_OR_INCOMPLETE_METADATA.
We have deliberately stopped further key operations pending clarification.
Questions:
Can these CFNumber values legitimately appear in a dictionary returned by SecItemCopyMatching for Secure Enclave-associated key items on macOS?
What returned value types should be expected for these three attributes, and are they dependent on the query or Keychain implementation?
Is there an Apple-recommended way to normalize or validate these attributes without incorrectly accepting incompatible metadata?
How should an application distinguish an existing Secure Enclave-backed key from an incomplete or unsupported Keychain record without performing a private-key operation?
Are there relevant Security framework documentation references or known implementation differences we should consult?
Our aim is to validate the existing record safely without regenerating, deleting, or using the private key.
Thank you for your guidance.
2
0
55