Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  KKPasscodeLock.m  Sprache: unbekannt

 
Spracherkennung für: .m vermutete Sprache: JAVA {JAVA[44] ABAP[34] Python[32]} [Methode: maximale Elemente, drei Dimensionen]

//
// Copyright 2011-2012 Kosher Penguin LLC
// Created by Adar Porat (https://github.com/aporat) on 1/16/2012.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

#import "KKPasscodeLock.h"
#import "KKKeychain.h"
#import "KKPasscodeViewController.h"
#import "ThreemaUtilityObjC.h"
#import "BundleUtil.h"
#import "AppGroup.h"

static KKPasscodeLock *sharedLock = nil;


@implementation KKPasscodeLock

@synthesize eraseOption = _eraseOption;
@synthesize attemptsAllowed = _attemptsAllowed;
@synthesize lastUnlockTime = _lastUnlockTime;

+ (KKPasscodeLock*)sharedLock
{
 @synchronized(self) {
  if (sharedLock == nil) {
   sharedLock = [[self alloc] init];
   sharedLock.eraseOption = YES;
   sharedLock.attemptsAllowed = 5;
            sharedLock.lastUnlockTime = 0;
  }
 }
 return sharedLock;
}

- (BOOL)isPasscodeRequired
{
 return [[KKKeychain getStringForKey:@"passcode_on"] isEqualToString:@"YES"];
}

- (BOOL)isTouchIdOn {
    return [[KKKeychain getStringForKey:@"touch_id_on"] isEqualToString:@"YES"];
}

- (BOOL)isWithinGracePeriod {
    int gracePeriod = [[KKKeychain getStringForKey:@"grace_period"] intValue];
    if (gracePeriod > 0) {
        time_t uptime = [ThreemaUtilityObjC systemUptime];
        if (uptime > 0 && self.lastUnlockTime > 0 && (uptime - self.lastUnlockTime) < gracePeriod)
            return YES;
    }
    
    return NO;
}

- (void)setDefaultSettings
{
 if (![KKKeychain getStringForKey:@"passcode_on"]) {
  [KKKeychain setString:@"NO" forKey:@"passcode_on"];
 }
 
 if (![KKKeychain getStringForKey:@"erase_data_on"]) {
  [KKKeychain setString:@"NO" forKey:@"erase_data_on"];
 }
 
 if (![KKKeychain getStringForKey:@"grace_period"]) {
  [KKKeychain setString:@"0" forKey:@"grace_period"];
    }
    
    if (![KKKeychain getStringForKey:@"touch_id_on"]) {
        [KKKeychain setString:@"NO" forKey:@"touch_id_on"];
    }
}

- (void)upgradeAccessibility {
    [KKKeychain upgradeAccessibilityForKey:@"passcode"];
    [KKKeychain upgradeAccessibilityForKey:@"passcode_on"];
    [KKKeychain upgradeAccessibilityForKey:@"erase_data_on"];
    [KKKeychain upgradeAccessibilityForKey:@"grace_period"];
    [KKKeychain upgradeAccessibilityForKey:@"touch_id_on"];
}

- (void)disablePasscode {
    [KKKeychain setString:@"NO" forKey:@"passcode_on"];
    [KKKeychain setString:@"NO" forKey:@"erase_data_on"];
    [KKKeychain setString:@"0" forKey:@"grace_period"];
    [KKKeychain setString:@"NO" forKey:@"touch_id_on"];
    [[AppGroup userDefaults] setInteger:0 forKey:@"FailedCodeAttempts"];
    [[AppGroup userDefaults] synchronize];
}

- (NSString *)localizedStringForKey:(NSString *)key value:(NSString *)value
{
    static NSBundle *bundle = nil;
    if (bundle == nil)
    {
        NSString *bundlePath = [[BundleUtil frameworkBundle] pathForResource:@"KKPasscodeLock" ofType:@"bundle"];
        bundle = [NSBundle bundleWithPath:bundlePath] ?: [NSBundle mainBundle];
    }
    
    value = [bundle localizedStringForKey:key value:value table:nil];

    return [[BundleUtil mainBundle] localizedStringForKey:key value:value table:nil];
}

- (void)updateLastUnlockTime {
    self.lastUnlockTime = [ThreemaUtilityObjC systemUptime];
}

@end

[Dauer der Verarbeitung: 0.13 Sekunden]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1104845
#Domains=499261