Recherche des exemples sur les API liées au KeyChain

TofTof Membre
août 2012 modifié dans API AppKit #1
Bonjour,



Je recherches des exemples qui permettent :
  • d'ajouter une donné dans le KeyChain
  • d'enlever une donné dans le KeyChain
  • retrouver la donné par rapport au nom qu'on lui a donné dans le KeyChain


La donné est un NSData et peut contenir n'importe quoi. On doit pouvoir la mettre dans le KeyChain avec un nom et pouvoir y accéder via ce nom. Le code doit pouvoir fonctionner sous Mac OS X Lion et supérieur.



J'ai trouvé des exemples liés aux passwords mais ce n'est pas ce que je recherche. J'ai évidemment consulté la documentation d'Apple sur le sujet. Ils concentrent leur exemples sur les passwords et leur doc est loin d'être clair. D'autre part si on regarde les APIs liés au KeyChain il y a, à  priorie, pas mal d'options disponibles mais aucun exemples pour la plus part de ces options.



Si quelqu'un pouvait m'indiquer quel est la bonne marche à  suivre pour ce dont j'ai besoin...



Merci par avance

Réponses

  • Bonjour,



    peut-être cette classe ?



    https://gist.github.com/3185191
  • TofTof Membre
    'devulder' a écrit:


    Bonjour,



    peut-être cette classe ?



    https://gist.github.com/3185191




    Merci image/smile.png' class='bbc_emoticon' alt=':)' />

    Je dois finir un truc avant mais je vais regarder ça dès que possible...
  • TofTof Membre
    Bon j'ai jeté un coup d'oeil : c'est encore un exemple avec les passwords.



    Dans la documentation d'Apple ici y a beaucoup plus que simplement la gestion des passwords. J'ai essayé de reprendre des exemples qui fonctionnent sur iOS et qui utilisent SecItemCopyMatching, SecItemAdd, SecItemUpdate, SecItemDelete. Sous Lion ça génére des erreurs. Il faut sans doute les utiliser différement mais Apple ne fourni aucun exemple de comment les utiliser correctement sous Lion.
  • TofTof Membre
    Juste pour info



    Il y a une erreur dans la doc d'Apple Keychain Services Reference pour Mac OS X:

    Il parle de l'attribut [font=courier new,courier,monospace]kSecAttrAccessible[/font] celui-ci n'existe pas sous Mac OS X. Si on consulte Attribute Item Keys and Values ce qui s'en rapproche le plus est [font=courier new,courier,monospace]kSecAttrAccess[/font]. [font=courier new,courier,monospace]kSecAttrAccessible[/font] est par contre défini dans la doc pour iOS.



    Par curiosité je suis allé dans le fichier [font=courier new,courier,monospace]MacOSX10.7/Frameworks/Security.framework/SecItem.h[/font] pour aller vérifier les attributs définis pour [font=courier new,courier,monospace]kSecClassKey[/font] (j'ai pas vérifié les autres).



    Dans les commentaires ils indiquent les choses suivantes :


    kSecClassKey item attributes:

    kSecAttrAccess

    kSecAttrKeyClass

    kSecAttrLabel

    kSecAttrApplicationLabel

    kSecAttrIsPermanent

    kSecAttrApplicationTag

    kSecAttrKeyType

    kSecAttrPRF

    kSecAttrSalt

    kSecAttrRounds

    kSecAttrKeySizeInBits

    kSecAttrEffectiveKeySize

    kSecAttrCanEncrypt

    kSecAttrCanDecrypt

    kSecAttrCanDerive

    kSecAttrCanSign

    kSecAttrCanVerify

    kSecAttrCanWrap

    kSecAttrCanUnwrap




    Dans la doc en ligne on a:
    kSecClassKey

    Cryptographic key item.

    The following attribute types (“Attribute Item Keys and Values”) can be used with an item of this type:
    • kSecAttrAccessible
    • kSecAttrAccessGroup
    • kSecAttrKeyClass
    • kSecAttrLabel
    • kSecAttrApplicationLabel
    • kSecAttrIsPermanent
    • kSecAttrApplicationTag
    • kSecAttrKeyType
    • kSecAttrKeySizeInBits
    • kSecAttrEffectiveKeySize
    • kSecAttrCanEncrypt
    • kSecAttrCanDecrypt
    • kSecAttrCanDerive
    • kSecAttrCanSign
    • kSecAttrCanVerify
    • kSecAttrCanWrap
    • kSecAttrCanUnwrap


    Available in OS X v10.7 and later.




    Dans [font=courier new,courier,monospace]SecItem.h[/font] on a bien [font=courier new,courier,monospace]kSecAttrAccess[/font] et pas [font=courier new,courier,monospace]kSecAttrAccessible[/font] de défini. Et on a les attributs [font=courier new,courier,monospace]kSecAttrPRF[/font], [font=courier new,courier,monospace]kSecAttrSalt[/font] et [font=courier new,courier,monospace]kSecAttrRounds[/font] qui sont pas dans la documentation en ligne ! La documentation qui est en ligne est la même que celle que l'on peut avoir avec Xcode.



    À mon avis vaut mieux se fier aux commentaires dans le fichier [font=courier new,courier,monospace]SecItem.h[/font] qu'à  la doc en ligne ou fournie avec Xcode !!!!
Connectez-vous ou Inscrivez-vous pour répondre.