<!--
{
  "availability" : [
    "iOS: 6.0.0 -",
    "iPadOS: 6.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.9.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreBluetooth",
  "identifier" : "/documentation/CoreBluetooth/CBAttributePermissions",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Core Bluetooth"
    ],
    "preciseIdentifier" : "c:@E@CBAttributePermissions"
  },
  "title" : "CBAttributePermissions"
}
-->

# CBAttributePermissions

Values that represent the read, write, and encryption permissions for a characteristic’s value.

```
struct CBAttributePermissions
```

## Overview

When you initialize a new mutable characteristic, you set the read, write, and encryption permissions for the characteristic’s value. Setting the read and write *permissions* for a characteristic’s value is different from specifying the read and write *properties* for a characteristic’s value. When you specify the read and write properties, the client (a central) inspects the read and write permissions of the characteristic’s value. When you specify the read and write permissions for a characteristic’s value, you set the permissions for the server (the peripheral) to allow the type of read or write specified by the characteristic’s properties. Therefore, when you initialize a mutable characteristic, you need to specify read or write properties and their corresponding permissions.

If you want to enforce encryption requirements for reads and writes on a characteristic’s value, you must specify the relevant permission ([`readEncryptionRequired`](/documentation/CoreBluetooth/CBAttributePermissions/readEncryptionRequired) or [`writeEncryptionRequired`](/documentation/CoreBluetooth/CBAttributePermissions/writeEncryptionRequired)). You may set more than one permission for a characteristic’s value.

## Topics

### Creating a Permissions Instance

[`init(rawValue:)`](/documentation/CoreBluetooth/CBAttributePermissions/init(rawValue:))

Creates a permissions instance from the provided raw value.

### Permissions

[`readable`](/documentation/CoreBluetooth/CBAttributePermissions/readable)

A permission that indicates a peripheral can read the attribute’s value.

[`writeable`](/documentation/CoreBluetooth/CBAttributePermissions/writeable)

A permission that indicates a peripheral can write the attribute’s value.

[`readEncryptionRequired`](/documentation/CoreBluetooth/CBAttributePermissions/readEncryptionRequired)

A permission that indicates only trusted devices can read the attribute’s value.

[`writeEncryptionRequired`](/documentation/CoreBluetooth/CBAttributePermissions/writeEncryptionRequired)

A permission that indicates only trusted devices can write the attribute’s value.



---

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)