---
title: "SecKeyUnwrapSymmetric(_:_:_:_:)"
framework: security
role: symbol
role_heading: Function
path: "security/seckeyunwrapsymmetric(_:_:_:_:)"
---

# SecKeyUnwrapSymmetric(_:_:_:_:)

Unwraps a wrapped symmetric key.

## Declaration

```swift
func SecKeyUnwrapSymmetric(_ keyToUnwrap: UnsafeMutablePointer<Unmanaged<CFData>?>, _ unwrappingKey: SecKey, _ parameters: CFDictionary, _ error: UnsafeMutablePointer<Unmanaged<CFError>?>?) -> SecKey?
```

## Parameters

- `keyToUnwrap`: The wrapped key to unwrap.
- `unwrappingKey`: The key that must be used to unwrap keyToUnwrap.
- `parameters`: A parameter list for the unwrapping process. This is usually either an empty dictionary or a dictionary containing a value for doc://com.apple.security/documentation/Security/kSecAttrSalt.
- `error`: A pointer to a doc://com.apple.documentation/documentation/CoreFoundation/CFError variable where an error object is stored upon failure. If not NULL, the caller is responsible for checking this variable and releasing the resulting object if it exists.

## Return Value

Return Value The unwrapped key, or NULL on failure. In Objective-C, call the CFRelease function to free the key’s memory when you are done with it.
