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 Foundation
import SharedKit
enum AppGroupConfiguration { enum AppGroupConfiguration {
static let identifier = "group.com.mbrucedogs.securestorage" static var identifier: String {
StorageServiceIdentifiers.appGroupIdentifier
}
} }

View File

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

View File

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

View File

@ -1,5 +1,6 @@
import Foundation import Foundation
import LocalData import LocalData
import SharedKit
extension StorageKeys { extension StorageKeys {
/// Stores external key material used for encryption policies. /// Stores external key material used for encryption policies.
@ -7,7 +8,7 @@ extension StorageKeys {
typealias Value = Data typealias Value = Data
let name = "external_key_material" 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( let security: SecurityPolicy = .keychain(
accessibility: .afterFirstUnlock, accessibility: .afterFirstUnlock,
accessControl: nil accessControl: nil

View File

@ -1,5 +1,6 @@
import Foundation import Foundation
import LocalData import LocalData
import SharedKit
extension StorageKeys { extension StorageKeys {
/// Stores sensitive location data in keychain with biometric protection. /// Stores sensitive location data in keychain with biometric protection.
@ -7,7 +8,7 @@ extension StorageKeys {
typealias Value = SampleLocationData typealias Value = SampleLocationData
let name = "last_known_location" 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( let security: SecurityPolicy = .keychain(
accessibility: .afterFirstUnlock, accessibility: .afterFirstUnlock,
accessControl: .userPresence 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"
}
}