From 731e6ebc30adc61ba6002db75f29f2efa843d867 Mon Sep 17 00:00:00 2001 From: John Barnette Date: Wed, 13 Feb 2013 16:10:48 -0800 Subject: [PATCH] Add a miniscule password retriever This primarily exists so the user gets a helpful prompt when Security Services asks them to grant keychain access. --- .gitignore | 1 + script/Boxen | Bin 0 -> 9140 bytes script/build-keychain-helper | 6 ++++++ src/keychain-helper.c | 27 +++++++++++++++++++++++++++ 4 files changed, 34 insertions(+) create mode 100755 script/Boxen create mode 100755 script/build-keychain-helper create mode 100644 src/keychain-helper.c diff --git a/.gitignore b/.gitignore index 73508c5..e7b18e0 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ /boxen-*.gem /log /puppet +/script/Boxen.dSYM diff --git a/script/Boxen b/script/Boxen new file mode 100755 index 0000000000000000000000000000000000000000..4267f23442f6bc3abbcbc94f71a75e01caadfdbd GIT binary patch literal 9140 zcmeHNUu+ab7@uqTb3%bD@u3FPgS4h1+_peSLy+{4!d4C}v_)f#!~NOot-aozyL+W2 zF{#0toR@0fG{y&CedodWfar_7Nqo^LL0&Ld!I)^G5fjeeZ*R8UI|@FT_^@9(`+dKe zZ+)y~FymkbL|t$g7vjrko>1jLN{vfMYnwCz}C zVL~~y@;$Hko>c9`ere)HgOugMd9#p_W+7X2ar5^u6(7Gjh4^72rIC|aD>-E}yjth? zsp1<{B*a*24-~GG0enCykH*L1J~ym~rgh@27vDM|ug5KAAusLOsZ=p9OOEwGK97d$ z&Fjli`8~PrJdtvu=v#L8@kP*|^9!pE#I1Z>%brM?Pd;pZU5c+)bs+Zhk;@y4E-U*q zF?{O8(9vOUk40PJ228o6$jIZy)vXm`Cw>p~(T+Cw!_Y2f9b_OX#5w2>pjprL)rF$( z5MnFzMgYPdRn zU9Y}z^D>aA#qj8_*LIMsdO%-z_H|f&S8Cg#K6gEMny>ft!mju1a-X~1XUu)};h9)? z{4Y4gN9#RH(2F@d#L`dodOgP@*V1)bdue?`YmnAeTBm4ThBa;{Cyay99y@x-Hmqqg zZ5)msN~Y7ra=|&g0Y^I_I3bE(^Ki+-=YD9G+v*@nn`iV6^o+Q@g-C|lNke(Gp+xAy z84;R^gd!d5!;5I-d6)Dv_b?@h_jj;}Z;rg(_S~j*!xz`SyXHN0`d1{Ys4n$)+fJo- zD}6xeL8Vve8dL=l2qF+fAc#N^fgl1w1cC?z5eOm>L?DPj5P={9|FZ~m?(7=pl(r5^ zrouDDvQrYLt;pgalWT5rT&9pOMlyS@*0@rr*F%fK>gpVn$atMFX4AQ(SvUrt<3_=- z%=AdowvqkH2zW)oYs{Dq?Oxc~^T?1HM14RdB(|L_(Et$g+88FmrsG+H}&=vc){si>;M1TCP7knV;x?t^dOGzR7&aK448`CUevK z`ydkqZA@#S*wbIinx%ZKD5SgEI82KRMv<$m&W8WL?F`>uYitj1V|ZJ_+YI+@LI&&~ Dsv^{T literal 0 HcmV?d00001 diff --git a/script/build-keychain-helper b/script/build-keychain-helper new file mode 100755 index 0000000..0eb297c --- /dev/null +++ b/script/build-keychain-helper @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +cd $(dirname "$0")/.. +cc -g -O2 -Wall -framework Security -o script/Boxen src/keychain-helper.c diff --git a/src/keychain-helper.c b/src/keychain-helper.c new file mode 100644 index 0000000..4e72702 --- /dev/null +++ b/src/keychain-helper.c @@ -0,0 +1,27 @@ +#include +#include +#include + +int main(int argc, char **argv) { + const char *service = argv[1]; + const char *login = argv[2]; + + if (!(argv[1] && argv[2])) { + printf("Usage: %s \n", argv[0]); + exit(1); + } + + void *buf; + UInt32 len; + SecKeychainItemRef item; + + int ret = SecKeychainFindGenericPassword( + NULL, strlen(service), service, strlen(login), login, &len, &buf, &item); + + if (ret) { + exit(1); + } + + fwrite(buf, 1, len, stdout); + exit(0); +}