小编mbi*_*nna的帖子

是否可以更新Keychain项目的kSecAttrAccessible值?

是否可以更新kSecAttrAccessibleKeychain中现有项的属性值?项目被添加到钥匙串后似乎无法更改.以下步骤支持我的假设.

将新项添加到钥匙串:

NSData *encodedIdentifier = [@"BUNDLE_IDENTIFIER" 
                             dataUsingEncoding:NSUTF8StringEncoding];
NSData *encodedPassword = [@"PASSWORD"
                           dataUsingEncoding:NSUTF8StringEncoding];

// Construct a Keychain item
NSDictionary *keychainItem = 
    [NSDictionary dictionaryWithObjectsAndKeys:
        kSecClassGenericPassword, kSecClass,
        encodedIdentifier, kSecAttrGeneric,
        encodedIdentifier, kSecAttrService,
        @"USERNAME", kSecAttrAccount,
        kSecAttrAccessibleWhenUnlocked, kSecAttrAccessible,
        encodedPassword, kSecValueData
        nil];

// Add item to Keychain
OSStatus addItemStatus = SecItemAdd((CFDictionaryRef)keychainItem, NULL);
Run Code Online (Sandbox Code Playgroud)

在稍后的时间,该属性改变kSecAttrAccessiblekSecAttrAccessibleWhenUnlockedkSecAttrAccessibleAfterFirstUnlock:

NSData *encodedIdentifier = [@"BUNDLE_IDENTIFIER" 
                             dataUsingEncoding:NSUTF8StringEncoding];

NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
                       kSecClassGenericPassword, kSecClass,
                       encodedIdentifier, kSecAttrGeneric,
                       encodedIdentifier, kSecAttrService,
                       nil];

NSDictionary *updatedAttributes = 
    [NSDictionary dictionaryWithObject:kSecAttrAccessibleAfterFirstUnlock 
                                forKey:kSecAttrAccessible];

OSStatus updateItemStatus = …
Run Code Online (Sandbox Code Playgroud)

security iphone keychain ipad ios

23
推荐指数
1
解决办法
8792
查看次数

iOS上不同的填充类型有什么区别?

在iOS上,Certificate,Key和Trust Services API包含以下填充类型:

  • kSecPaddingNone
  • kSecPaddingPKCS1
  • kSecPaddingPKCS1MD2
  • kSecPaddingPKCS1MD5
  • kSecPaddingPKCS1SHA1

在对用户苹果CDSA邮件列表中称,"kSecPaddingPKCS1 [...]是一样的PKCS#1 1.5".证书,密钥和信任服务参考注释后三种填充类型(kSecPaddingPKCS1MD2,kSecPaddingPKCS1MD5kSecPaddingPKCS1SAH),"标准ASN.1填充将完成,以及底层RSA操作的PKCS1填充".

  1. 有什么区别kSecPaddingPKCS1
  2. kSecPaddingPKCS1仅仅根据RFC 3447的基本RSA运算的原料填充?
  3. 在签署SHA-256,SHA-384或SHA-512摘要时SecKeyRawSign(),开发人员是否需要自己使用kSecPaddingPKCS1并执行ASN.1填充?是否需要ASN.1填充或是否可以省略?

任何暗示我指向正确方向的提示都受到高度赞赏.

security iphone encryption digital-signature ios

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

ios ×2

iphone ×2

security ×2

digital-signature ×1

encryption ×1

ipad ×1

keychain ×1