LeadKit/docs/tikeychainutils/keychaincodablebackingstore.md

932 B

KeychainMigratingCodableBackingStore

import TIFoundationUtils
import TIKeychainUtils
import KeychainAccess

extension StorageKey {
    static var knownPins: StorageKey<[String: Set<String>]> {
        .init(rawValue: "knownPins")
    }
}

extension Keychain {
    static var keychain: Keychain {
        .init()
    }

    static var groupKeychain: Keychain {
        .init(service: "app.group.identifier")
    }
}

extension KeychainMigratingStorageContainer {
    static var defaultContainer: KeychainMigratingStorageContainer {
        .init(sourceStorage: .keychain, targetStorage: .groupKeychain)
    }
}

struct PinningManager {

    // Migration from keychain to groupKeychain
    // @KeychainCodableBackingStore(key: .knownPins, codableKeyValueStorage: .keychain)
    @KeychainMigratingCodableBackingStore(key: .knownPins, storageContainer: .defaultContainer)
    var knownPins = [String: Set<String>]()
}