Add StorageServiceIdentifiers

This commit is contained in:
Matt Bruce 2026-01-14 12:10:12 -06:00
parent ac9cca89b6
commit d135edc8ef
6 changed files with 39 additions and 5 deletions

View File

@ -1,5 +1,8 @@
import Foundation
import SharedKit
enum AppGroupConfiguration {
static let identifier = "group.com.mbrucedogs.securestorage"
static var identifier: String {
StorageServiceIdentifiers.appGroupIdentifier
}
}

View File

@ -1,5 +1,6 @@
import Foundation
import LocalData
import SharedKit
extension StorageKeys {
/// Stores API token in keychain.
@ -7,7 +8,7 @@ extension StorageKeys {
typealias Value = String
let name = "api_token"
let domain: StorageDomain = .keychain(service: "com.example.securestorage.api")
let domain: StorageDomain = .keychain(service: StorageServiceIdentifiers.keychainAPIToken)
let security: SecurityPolicy = .keychain(
accessibility: .whenUnlockedThisDeviceOnly,
accessControl: nil

View File

@ -1,5 +1,6 @@
import Foundation
import LocalData
import SharedKit
extension StorageKeys {
/// Stores user credentials securely in keychain.
@ -8,7 +9,7 @@ extension StorageKeys {
typealias Value = Credential
let name = "user_credentials"
let domain: StorageDomain = .keychain(service: "com.example.securestorage")
let domain: StorageDomain = .keychain(service: StorageServiceIdentifiers.keychainCredentials)
let security: SecurityPolicy
let serializer: Serializer<Credential> = .json
let owner = "SampleApp"

View File

@ -1,5 +1,6 @@
import Foundation
import LocalData
import SharedKit
extension StorageKeys {
/// Stores external key material used for encryption policies.
@ -7,7 +8,7 @@ extension StorageKeys {
typealias Value = Data
let name = "external_key_material"
let domain: StorageDomain = .keychain(service: "com.example.securestorage.externalkey")
let domain: StorageDomain = .keychain(service: StorageServiceIdentifiers.keychainExternalKeyMaterial)
let security: SecurityPolicy = .keychain(
accessibility: .afterFirstUnlock,
accessControl: nil

View File

@ -1,5 +1,6 @@
import Foundation
import LocalData
import SharedKit
extension StorageKeys {
/// Stores sensitive location data in keychain with biometric protection.
@ -7,7 +8,7 @@ extension StorageKeys {
typealias Value = SampleLocationData
let name = "last_known_location"
let domain: StorageDomain = .keychain(service: "com.example.app.security")
let domain: StorageDomain = .keychain(service: StorageServiceIdentifiers.keychainLocation)
let security: SecurityPolicy = .keychain(
accessibility: .afterFirstUnlock,
accessControl: .userPresence

View File

@ -0,0 +1,27 @@
import Foundation
public enum StorageServiceIdentifiers {
public static var bundleIdentifier: String {
Bundle.main.bundleIdentifier ?? "com.example.securestorage"
}
public static var appGroupIdentifier: String {
"group.\(bundleIdentifier)"
}
public static var keychainCredentials: String {
bundleIdentifier
}
public static var keychainAPIToken: String {
"\(bundleIdentifier).api"
}
public static var keychainExternalKeyMaterial: String {
"\(bundleIdentifier).externalkey"
}
public static var keychainLocation: String {
"\(bundleIdentifier).security"
}
}