Je me demande comment le Trousseau identifie les applications. Je soupçonne que cela repose sur la signature du code, mais les expériences ne sont pas vraiment cohérentes avec cela :
Il fonctionne pour les exécutables qui ne sont pas du tout signés :
codesign -dv /Library/Frameworks/R.framework/Resources/bin/exec/R
# /Library/Frameworks/R.framework/Resources/bin/exec/R: code object is not signed at all
Mais le processus R est ajouté à l'ACL de ce secret, et il peut l'interroger avec bonheur...
Il n'y a rien non plus dans les attributs étendus de l'exécutable :
xattr -l /usr/bin/security
#
Si je modifie le fichier lui-même, cela fonctionne toujours :
cp /usr/bin/security foobar
echo "\nharmless" >> foobar
./foobar find-generic-password -a 'gaborcsardi' -s foobar -g
# keychain: "/Users/gaborcsardi/Library/Keychains/login.keychain"
# class: "genp"
# attributes:
# 0x00000007 <blob>="foobar"
# 0x00000008 <blob>=<NULL>
# "acct"<blob>="gaborcsardi"
# ...
# password: "secret"
Mais alors comment cela fonctionne-t-il ? Plus précisément, comment le trousseau sait-il que la demande de mot de passe provient de l'adresse de l'utilisateur ? security
que j'ai spécifiquement autorisé l'accès à cette entrée ?