Skip to content

Commit 1df0ae1

Browse files
committed
feat(rotation): require explicit values for key rotation request parameters
1 parent 0bd3be1 commit 1df0ae1

2 files changed

Lines changed: 21 additions & 21 deletions

File tree

ios/HybridSensitiveInfo.swift

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ final class HybridSensitiveInfo: HybridSensitiveInfoSpec {
179179
var query = queryBuilder.makeBaseQuery(
180180
key: request.key,
181181
service: service,
182-
synchronizable: request.iosSynchronizable
182+
synchronizable: request.iosSynchronizable ?? false
183183
)
184184
if let group = request.keychainGroup {
185185
query[kSecAttrAccessGroup as String] = group
@@ -255,7 +255,7 @@ final class HybridSensitiveInfo: HybridSensitiveInfoSpec {
255255
var query = queryBuilder.makeBaseQuery(
256256
key: request.key,
257257
service: service,
258-
synchronizable: request.iosSynchronizable
258+
synchronizable: request.iosSynchronizable ?? false
259259
)
260260
if let group = request.keychainGroup {
261261
query[kSecAttrAccessGroup as String] = group
@@ -301,7 +301,7 @@ final class HybridSensitiveInfo: HybridSensitiveInfoSpec {
301301
var query = queryBuilder.makeBaseQuery(
302302
key: request.key,
303303
service: service,
304-
synchronizable: request.iosSynchronizable
304+
synchronizable: request.iosSynchronizable ?? false
305305
)
306306
if let group = request.keychainGroup {
307307
query[kSecAttrAccessGroup as String] = group
@@ -347,7 +347,7 @@ final class HybridSensitiveInfo: HybridSensitiveInfoSpec {
347347
var query = queryBuilder.makeBaseQuery(
348348
key: request.key,
349349
service: service,
350-
synchronizable: request.iosSynchronizable
350+
synchronizable: request.iosSynchronizable ?? false
351351
)
352352
if let group = request.keychainGroup {
353353
query[kSecAttrAccessGroup as String] = group
@@ -387,7 +387,7 @@ final class HybridSensitiveInfo: HybridSensitiveInfoSpec {
387387
var query = queryBuilder.makeBaseQuery(
388388
key: nil,
389389
service: service,
390-
synchronizable: request?.iosSynchronizable
390+
synchronizable: request?.iosSynchronizable ?? false
391391
)
392392
if let group = request?.keychainGroup {
393393
query[kSecAttrAccessGroup as String] = group
@@ -433,7 +433,7 @@ final class HybridSensitiveInfo: HybridSensitiveInfoSpec {
433433
var query = queryBuilder.makeBaseQuery(
434434
key: nil,
435435
service: service,
436-
synchronizable: request?.iosSynchronizable
436+
synchronizable: request?.iosSynchronizable ?? false
437437
)
438438
if let group = request?.keychainGroup {
439439
query[kSecAttrAccessGroup as String] = group
@@ -462,17 +462,17 @@ final class HybridSensitiveInfo: HybridSensitiveInfoSpec {
462462
func initializeKeyRotation(request: InitializeKeyRotationRequest) throws -> Promise<Void> {
463463
Promise.parallel(workQueue) { [self] in
464464
let defaults = UserDefaults.standard
465-
defaults.set(request.enabled ?? true, forKey: "keyRotationEnabled")
466-
defaults.set(request.rotationIntervalMs ?? (30 * 24 * 60 * 60 * 1000), forKey: "rotationIntervalMs")
467-
defaults.set(request.rotateOnBiometricChange ?? true, forKey: "rotateOnBiometricChange")
468-
defaults.set(request.rotateOnCredentialChange ?? true, forKey: "rotateOnCredentialChange")
469-
defaults.set(request.manualRotationEnabled ?? true, forKey: "manualRotationEnabled")
470-
defaults.set(request.maxKeyVersions ?? 2, forKey: "maxKeyVersions")
471-
defaults.set(request.backgroundReEncryption ?? true, forKey: "backgroundReEncryption")
465+
defaults.set(request.enabled, forKey: "keyRotationEnabled")
466+
defaults.set(request.rotationIntervalMs, forKey: "rotationIntervalMs")
467+
defaults.set(request.rotateOnBiometricChange, forKey: "rotateOnBiometricChange")
468+
defaults.set(request.rotateOnCredentialChange, forKey: "rotateOnCredentialChange")
469+
defaults.set(request.manualRotationEnabled, forKey: "manualRotationEnabled")
470+
defaults.set(request.maxKeyVersions, forKey: "maxKeyVersions")
471+
defaults.set(request.backgroundReEncryption, forKey: "backgroundReEncryption")
472472
defaults.synchronize()
473473

474474
// Start periodic rotation check if enabled
475-
if request.enabled ?? true {
475+
if request.enabled {
476476
startPeriodicRotationCheck()
477477
} else {
478478
stopPeriodicRotationCheck()

src/sensitive-info.nitro.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,13 @@ export interface ReEncryptAllItemsResponse {
153153
}
154154

155155
export interface InitializeKeyRotationRequest {
156-
readonly enabled?: boolean;
157-
readonly rotationIntervalMs?: number;
158-
readonly rotateOnBiometricChange?: boolean;
159-
readonly rotateOnCredentialChange?: boolean;
160-
readonly manualRotationEnabled?: boolean;
161-
readonly maxKeyVersions?: number;
162-
readonly backgroundReEncryption?: boolean;
156+
readonly enabled: boolean;
157+
readonly rotationIntervalMs: number;
158+
readonly rotateOnBiometricChange: boolean;
159+
readonly rotateOnCredentialChange: boolean;
160+
readonly manualRotationEnabled: boolean;
161+
readonly maxKeyVersions: number;
162+
readonly backgroundReEncryption: boolean;
163163
}
164164

165165
export interface RotateKeysRequest {

0 commit comments

Comments
 (0)