<!--
{
  "availability" : [
    "macOS: 10.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Security",
  "identifier" : "/documentation/Security/SecKeyUsage",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Security"
    ],
    "preciseIdentifier" : "c:@E@SecKeyUsage"
  },
  "title" : "SecKeyUsage"
}
-->

# SecKeyUsage

The flags that indicate key usage in the `KeyUsage` extension of a certificate.

```
struct SecKeyUsage
```

## Topics

### Initializers

[`init(rawValue:)`](/documentation/Security/SecKeyUsage/init(rawValue:))

Initializes a key usage structure.

### Flags

[`kSecKeyUsageUnspecified`](/documentation/Security/SecKeyUsage/kSecKeyUsageUnspecified)

[`kSecKeyUsageCRLSign`](/documentation/Security/SecKeyUsage/crlSign)

The `CRLSign` bit is set in KeyUsage extension.

[`kSecKeyUsageContentCommitment`](/documentation/Security/SecKeyUsage/contentCommitment)

The `ContentCommitment` bit is set in KeyUsage extension.

[`kSecKeyUsageCritical`](/documentation/Security/SecKeyUsage/critical)

The KeyUsage extension is marked critical.

[`kSecKeyUsageDataEncipherment`](/documentation/Security/SecKeyUsage/dataEncipherment)

The `DataEncipherment` bit is set in KeyUsage extension.

[`kSecKeyUsageDecipherOnly`](/documentation/Security/SecKeyUsage/decipherOnly)

The `DecipherOnly` bit is set in KeyUsage extension.

[`kSecKeyUsageDigitalSignature`](/documentation/Security/SecKeyUsage/digitalSignature)

The `DigitalSignature` bit is set in KeyUsage extension.

[`kSecKeyUsageEncipherOnly`](/documentation/Security/SecKeyUsage/encipherOnly)

The `EncipherOnly` bit is set in KeyUsage extension.

[`kSecKeyUsageKeyAgreement`](/documentation/Security/SecKeyUsage/keyAgreement)

The `KeyAgreement` bit is set in KeyUsage extension.

[`kSecKeyUsageKeyCertSign`](/documentation/Security/SecKeyUsage/keyCertSign)

The `KeyCertSign` bit is set in KeyUsage extension.

[`kSecKeyUsageKeyEncipherment`](/documentation/Security/SecKeyUsage/keyEncipherment)

The `KeyEncipherment` bit is set in KeyUsage extension.

[`kSecKeyUsageNonRepudiation`](/documentation/Security/SecKeyUsage/nonRepudiation)

The `NonRepudiation` bit is set in KeyUsage extension.

[`kSecKeyUsageAll`](/documentation/Security/SecKeyUsage/all)

All flags set.

## Relationships

### Conforms To

[`SetAlgebra`](/documentation/Swift/SetAlgebra)

[`RawRepresentable`](/documentation/Swift/RawRepresentable)

[`Equatable`](/documentation/Swift/Equatable)

[`Sendable`](/documentation/Swift/Sendable)

[`OptionSet`](/documentation/Swift/OptionSet)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`BitwiseCopyable`](/documentation/Swift/BitwiseCopyable)

[`ExpressibleByArrayLiteral`](/documentation/Swift/ExpressibleByArrayLiteral)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)