yakg 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (301) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +2 -2
  3. data/VERSION +1 -1
  4. data/lib/yakg/backend/dbus-secret-service.rb +5 -0
  5. data/lib/yakg/backend/macos-keychain.rb +5 -4
  6. data/lib/yakg/backend/win32-dpapi.rb +150 -0
  7. data/lib/yakg/backend.rb +3 -0
  8. data/lib/yakg.rb +11 -2
  9. data/spec/yakg_spec.rb +4 -0
  10. data/vendor/gems/.gitignore +1 -0
  11. data/vendor/gems/README.md +49 -0
  12. data/vendor/gems/installit.sh +63 -35
  13. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/.require_paths +0 -0
  14. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING +0 -0
  15. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING.LESSER +0 -0
  16. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/History.txt +0 -0
  17. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/LICENSE +0 -0
  18. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/README.md +0 -0
  19. data/vendor/gems/ruby/{1.9.1/gems/ffi-1.8.1 → 1.8/gems/ffi-1.9.0}/Rakefile +2 -1
  20. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/ffi.gemspec +0 -0
  21. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/Rakefile +0 -0
  22. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/log +0 -0
  23. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/autopointer.rb +0 -0
  24. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/buffer.rb +0 -0
  25. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/callback.rb +0 -0
  26. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/enum.rb +0 -0
  27. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/errno.rb +0 -0
  28. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.iml +0 -0
  29. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.rb +0 -0
  30. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/io.rb +0 -0
  31. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/library.rb +0 -0
  32. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/managedstruct.rb +0 -0
  33. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/memorypointer.rb +0 -0
  34. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/arm-linux/types.conf +0 -0
  35. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-cygwin/types.conf +0 -0
  36. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-darwin/types.conf +0 -0
  37. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-freebsd/types.conf +0 -0
  38. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1/lib/ffi/platform/i486-gnu → ffi-1.9.0/lib/ffi/platform/i386-gnu}/types.conf +0 -0
  39. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-linux/types.conf +0 -0
  40. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-netbsd/types.conf +0 -0
  41. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1/lib/ffi/platform/x86_64-freebsd → ffi-1.9.0/lib/ffi/platform/i386-openbsd}/types.conf +0 -0
  42. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-solaris/types.conf +0 -0
  43. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-windows/types.conf +0 -0
  44. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/ia64-linux/types.conf +0 -0
  45. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/mips-linux/types.conf +0 -0
  46. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/mipsel-linux/types.conf +0 -0
  47. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-aix/types.conf +0 -0
  48. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-darwin/types.conf +0 -0
  49. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-linux/types.conf +0 -0
  50. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/s390-linux/types.conf +0 -0
  51. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/s390x-linux/types.conf +0 -0
  52. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparc-linux/types.conf +0 -0
  53. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparc-solaris/types.conf +0 -0
  54. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparcv9-solaris/types.conf +0 -0
  55. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-darwin/types.conf +0 -0
  56. data/vendor/gems/ruby/{1.9.1/gems/ffi-1.8.1 → 1.8/gems/ffi-1.9.0}/lib/ffi/platform/x86_64-freebsd/types.conf +0 -0
  57. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-linux/types.conf +0 -0
  58. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1/lib/ffi/platform/i386-openbsd → ffi-1.9.0/lib/ffi/platform/x86_64-netbsd}/types.conf +0 -0
  59. data/vendor/gems/ruby/{2.0.0/gems/ffi-1.8.1/lib/ffi/platform/x86_64-freebsd → 1.8/gems/ffi-1.9.0/lib/ffi/platform/x86_64-openbsd}/types.conf +0 -0
  60. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-solaris/types.conf +0 -0
  61. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-windows/types.conf +0 -0
  62. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform.rb +0 -0
  63. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/pointer.rb +0 -0
  64. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct.rb +0 -0
  65. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct_layout_builder.rb +0 -0
  66. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/const_generator.rb +0 -0
  67. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator.rb +0 -0
  68. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator_task.rb +0 -0
  69. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/struct_generator.rb +0 -0
  70. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/types_generator.rb +0 -0
  71. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/types.rb +0 -0
  72. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/union.rb +0 -0
  73. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/variadic.rb +0 -0
  74. data/vendor/gems/ruby/1.8/gems/ffi-1.9.0/lib/ffi/version.rb +4 -0
  75. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi.rb +0 -0
  76. data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi_c.bundle +0 -0
  77. data/vendor/gems/ruby/1.8/specifications/{ffi-1.8.1.gemspec → ffi-1.9.0.gemspec} +4 -4
  78. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING +0 -0
  79. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING.LESSER +0 -0
  80. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/History.txt +0 -0
  81. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/LICENSE +0 -0
  82. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/README.md +0 -0
  83. data/vendor/gems/ruby/{2.0.0/gems/ffi-1.8.1 → 1.9.1/gems/ffi-1.9.0}/Rakefile +2 -1
  84. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/ffi.gemspec +0 -0
  85. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/Rakefile +0 -0
  86. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/log +0 -0
  87. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/autopointer.rb +0 -0
  88. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/buffer.rb +0 -0
  89. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/callback.rb +0 -0
  90. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/enum.rb +0 -0
  91. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/errno.rb +0 -0
  92. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.iml +0 -0
  93. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.rb +0 -0
  94. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/io.rb +0 -0
  95. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/library.rb +0 -0
  96. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/managedstruct.rb +0 -0
  97. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/memorypointer.rb +0 -0
  98. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/arm-linux/types.conf +0 -0
  99. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-cygwin/types.conf +0 -0
  100. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-darwin/types.conf +0 -0
  101. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-freebsd/types.conf +0 -0
  102. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1/lib/ffi/platform/i486-gnu → ffi-1.9.0/lib/ffi/platform/i386-gnu}/types.conf +0 -0
  103. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-linux/types.conf +0 -0
  104. data/vendor/gems/ruby/{1.8/gems/ffi-1.8.1/lib/ffi/platform/x86_64-netbsd → 1.9.1/gems/ffi-1.9.0/lib/ffi/platform/i386-netbsd}/types.conf +0 -0
  105. data/vendor/gems/ruby/1.9.1/gems/ffi-1.9.0/lib/ffi/platform/i386-openbsd/types.conf +128 -0
  106. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-solaris/types.conf +0 -0
  107. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-windows/types.conf +0 -0
  108. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/ia64-linux/types.conf +0 -0
  109. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/mips-linux/types.conf +0 -0
  110. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/mipsel-linux/types.conf +0 -0
  111. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-aix/types.conf +0 -0
  112. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-darwin/types.conf +0 -0
  113. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-linux/types.conf +0 -0
  114. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/s390-linux/types.conf +0 -0
  115. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/s390x-linux/types.conf +0 -0
  116. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparc-linux/types.conf +0 -0
  117. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparc-solaris/types.conf +0 -0
  118. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparcv9-solaris/types.conf +0 -0
  119. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-darwin/types.conf +0 -0
  120. data/vendor/gems/ruby/1.9.1/gems/ffi-1.9.0/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
  121. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-linux/types.conf +0 -0
  122. data/vendor/gems/ruby/{1.8/gems/ffi-1.8.1/lib/ffi/platform/x86_64-openbsd → 1.9.1/gems/ffi-1.9.0/lib/ffi/platform/x86_64-netbsd}/types.conf +0 -0
  123. data/vendor/gems/ruby/1.9.1/gems/ffi-1.9.0/lib/ffi/platform/x86_64-openbsd/types.conf +128 -0
  124. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-solaris/types.conf +0 -0
  125. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-windows/types.conf +0 -0
  126. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform.rb +0 -0
  127. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/pointer.rb +0 -0
  128. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct.rb +0 -0
  129. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct_layout_builder.rb +0 -0
  130. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/const_generator.rb +0 -0
  131. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator.rb +0 -0
  132. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator_task.rb +0 -0
  133. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/struct_generator.rb +0 -0
  134. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/types_generator.rb +0 -0
  135. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/types.rb +0 -0
  136. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/union.rb +0 -0
  137. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/variadic.rb +0 -0
  138. data/vendor/gems/ruby/1.9.1/gems/ffi-1.9.0/lib/ffi/version.rb +4 -0
  139. data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi.rb +0 -0
  140. data/vendor/gems/ruby/1.9.1/gems/ffi-1.9.0/lib/ffi_c.bundle +0 -0
  141. data/vendor/gems/ruby/1.9.1/specifications/corefoundation-0.2.0.gemspec +7 -9
  142. data/vendor/gems/ruby/1.9.1/specifications/ffi-1.9.0.gemspec +42 -0
  143. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING +0 -0
  144. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING.LESSER +0 -0
  145. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/History.txt +0 -0
  146. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/LICENSE +0 -0
  147. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/README.md +0 -0
  148. data/vendor/gems/ruby/{1.8/gems/ffi-1.8.1 → 2.0.0/gems/ffi-1.9.0}/Rakefile +2 -1
  149. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/ffi.gemspec +0 -0
  150. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/Rakefile +0 -0
  151. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/log +0 -0
  152. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/autopointer.rb +0 -0
  153. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/buffer.rb +0 -0
  154. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/callback.rb +0 -0
  155. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/enum.rb +0 -0
  156. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/errno.rb +0 -0
  157. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.iml +0 -0
  158. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.rb +0 -0
  159. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/io.rb +0 -0
  160. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/library.rb +0 -0
  161. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/managedstruct.rb +0 -0
  162. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/memorypointer.rb +0 -0
  163. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/arm-linux/types.conf +0 -0
  164. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-cygwin/types.conf +0 -0
  165. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-darwin/types.conf +0 -0
  166. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-freebsd/types.conf +0 -0
  167. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1/lib/ffi/platform/i486-gnu → ffi-1.9.0/lib/ffi/platform/i386-gnu}/types.conf +0 -0
  168. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-linux/types.conf +0 -0
  169. data/vendor/gems/ruby/{1.9.1/gems/ffi-1.8.1 → 2.0.0/gems/ffi-1.9.0}/lib/ffi/platform/i386-netbsd/types.conf +0 -0
  170. data/vendor/gems/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/platform/i386-openbsd/types.conf +128 -0
  171. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-solaris/types.conf +0 -0
  172. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-windows/types.conf +0 -0
  173. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/ia64-linux/types.conf +0 -0
  174. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/mips-linux/types.conf +0 -0
  175. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/mipsel-linux/types.conf +0 -0
  176. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-aix/types.conf +0 -0
  177. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-darwin/types.conf +0 -0
  178. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-linux/types.conf +0 -0
  179. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/s390-linux/types.conf +0 -0
  180. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/s390x-linux/types.conf +0 -0
  181. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparc-linux/types.conf +0 -0
  182. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparc-solaris/types.conf +0 -0
  183. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparcv9-solaris/types.conf +0 -0
  184. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-darwin/types.conf +0 -0
  185. data/vendor/gems/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
  186. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-linux/types.conf +0 -0
  187. data/vendor/gems/ruby/{1.9.1/gems/ffi-1.8.1/lib/ffi/platform/i386-openbsd → 2.0.0/gems/ffi-1.9.0/lib/ffi/platform/x86_64-netbsd}/types.conf +0 -0
  188. data/vendor/gems/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/platform/x86_64-openbsd/types.conf +128 -0
  189. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-solaris/types.conf +0 -0
  190. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-windows/types.conf +0 -0
  191. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform.rb +0 -0
  192. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/pointer.rb +0 -0
  193. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct.rb +0 -0
  194. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct_layout_builder.rb +0 -0
  195. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/const_generator.rb +0 -0
  196. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator.rb +0 -0
  197. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator_task.rb +0 -0
  198. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/struct_generator.rb +0 -0
  199. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/types_generator.rb +0 -0
  200. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/types.rb +0 -0
  201. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/union.rb +0 -0
  202. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/variadic.rb +0 -0
  203. data/vendor/gems/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/version.rb +4 -0
  204. data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi.rb +0 -0
  205. data/vendor/gems/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi_c.bundle +0 -0
  206. data/vendor/gems/ruby/2.0.0/specifications/corefoundation-0.2.0.gemspec +1 -1
  207. data/vendor/gems/ruby/2.0.0/specifications/{ffi-1.8.1.gemspec → ffi-1.9.0.gemspec} +4 -4
  208. metadata +200 -277
  209. data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/array_spec.rb +0 -92
  210. data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/boolean_spec.rb +0 -24
  211. data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/data_spec.rb +0 -30
  212. data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/date_spec.rb +0 -25
  213. data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/dictionary_spec.rb +0 -81
  214. data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/extensions_spec.rb +0 -127
  215. data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/null_spec.rb +0 -7
  216. data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/number_spec.rb +0 -52
  217. data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/spec_helper.rb +0 -10
  218. data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/string_spec.rb +0 -48
  219. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/lib/ffi/version.rb +0 -4
  220. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/Benchmark.c +0 -52
  221. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/BoolTest.c +0 -31
  222. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/BufferTest.c +0 -31
  223. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/ClosureTest.c +0 -190
  224. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/EnumTest.c +0 -34
  225. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/FunctionTest.c +0 -58
  226. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/GNUmakefile +0 -149
  227. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/GlobalVariable.c +0 -62
  228. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/LastErrorTest.c +0 -21
  229. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/NumberTest.c +0 -132
  230. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/PointerTest.c +0 -63
  231. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/ReferenceTest.c +0 -23
  232. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/StringTest.c +0 -34
  233. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/StructTest.c +0 -240
  234. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/UnionTest.c +0 -43
  235. data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/VariadicTest.c +0 -62
  236. data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/array_spec.rb +0 -92
  237. data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/boolean_spec.rb +0 -24
  238. data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/data_spec.rb +0 -30
  239. data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/date_spec.rb +0 -25
  240. data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/dictionary_spec.rb +0 -81
  241. data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/extensions_spec.rb +0 -127
  242. data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/null_spec.rb +0 -7
  243. data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/number_spec.rb +0 -52
  244. data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/spec_helper.rb +0 -10
  245. data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/string_spec.rb +0 -48
  246. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/.require_paths +0 -2
  247. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/lib/ffi/platform/x86_64-netbsd/types.conf +0 -126
  248. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/lib/ffi/platform/x86_64-openbsd/types.conf +0 -126
  249. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/lib/ffi/version.rb +0 -4
  250. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/lib/ffi_c.bundle +0 -0
  251. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/Benchmark.c +0 -52
  252. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/BoolTest.c +0 -31
  253. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/BufferTest.c +0 -31
  254. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/ClosureTest.c +0 -190
  255. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/EnumTest.c +0 -34
  256. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/FunctionTest.c +0 -58
  257. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/GNUmakefile +0 -149
  258. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/GlobalVariable.c +0 -62
  259. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/LastErrorTest.c +0 -21
  260. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/NumberTest.c +0 -132
  261. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/PointerTest.c +0 -63
  262. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/ReferenceTest.c +0 -23
  263. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/StringTest.c +0 -34
  264. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/StructTest.c +0 -240
  265. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/UnionTest.c +0 -43
  266. data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/VariadicTest.c +0 -62
  267. data/vendor/gems/ruby/1.9.1/specifications/ffi-1.8.1.gemspec +0 -43
  268. data/vendor/gems/ruby/2.0.0/build_info/corefoundation-0.2.0.info +0 -1
  269. data/vendor/gems/ruby/2.0.0/build_info/ffi-1.8.1.info +0 -1
  270. data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/array_spec.rb +0 -92
  271. data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/boolean_spec.rb +0 -24
  272. data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/data_spec.rb +0 -30
  273. data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/date_spec.rb +0 -25
  274. data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/dictionary_spec.rb +0 -81
  275. data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/extensions_spec.rb +0 -127
  276. data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/null_spec.rb +0 -7
  277. data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/number_spec.rb +0 -52
  278. data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/spec_helper.rb +0 -10
  279. data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/string_spec.rb +0 -48
  280. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi/platform/i386-netbsd/types.conf +0 -126
  281. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi/platform/i386-openbsd/types.conf +0 -126
  282. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi/platform/x86_64-netbsd/types.conf +0 -126
  283. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi/platform/x86_64-openbsd/types.conf +0 -126
  284. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi/version.rb +0 -4
  285. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi_c.bundle +0 -0
  286. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/Benchmark.c +0 -52
  287. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/BoolTest.c +0 -31
  288. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/BufferTest.c +0 -31
  289. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/ClosureTest.c +0 -190
  290. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/EnumTest.c +0 -34
  291. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/FunctionTest.c +0 -58
  292. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/GNUmakefile +0 -149
  293. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/GlobalVariable.c +0 -62
  294. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/LastErrorTest.c +0 -21
  295. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/NumberTest.c +0 -132
  296. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/PointerTest.c +0 -63
  297. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/ReferenceTest.c +0 -23
  298. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/StringTest.c +0 -34
  299. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/StructTest.c +0 -240
  300. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/UnionTest.c +0 -43
  301. data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/VariadicTest.c +0 -62
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 127ade833bfbd5de2d5daf072a7f4a7a9c488af8
4
- data.tar.gz: 1579155cc8ad1c017c37622c45a884cf7c06aef8
3
+ metadata.gz: f4a3fdb56682bf5c6c5601f5e07d96eba5817530
4
+ data.tar.gz: b95abb3237d99b44d77897ceeb2785a0dd4a0507
5
5
  SHA512:
6
- metadata.gz: 0be512de5dd7492963caa1b8b965c27bc3057ba17340602c6cdc27cd743a9bbb3f88589b18e43ec0178c8ba82b28b4833d88ca3575f3737c387acc2b7106572b
7
- data.tar.gz: 7cb52fcd6fc187058e0fa9f2f0dac21534fa239b69d84f5171bcb51eecaafe6b847e720ff82e153c5c8e390ca68cd06ef254a944c4c869c67e02ba1b0a9c55b2
6
+ metadata.gz: 4aab0652ab2e61d982212f0b8fdf5678126e6d682c952af25492492708571de403d96335c607a074e0dd16ace2bc930dd5e5e29839682754107cb7566586f211
7
+ data.tar.gz: 88cc7d0dd9bd48d7d8457d5a27923b5984f1a6ba2d875e202402438734573799e5e6c6e60229fd0ff505cc2f00833964798d21b71f05cc4a01d83db9fd09b7e6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yakg (0.0.8)
4
+ yakg (0.0.9)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -13,7 +13,7 @@ GEM
13
13
  ffi (1.8.1)
14
14
  highline (1.6.18)
15
15
  netrc (0.7.7)
16
- rake (10.0.4)
16
+ rake (10.1.0)
17
17
  rspec (2.13.0)
18
18
  rspec-core (~> 2.13.0)
19
19
  rspec-expectations (~> 2.13.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.8
1
+ 0.0.9
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'dbus'
4
+
5
+ bus = DBus::SystemBus.instance
@@ -68,10 +68,11 @@ class Yakg
68
68
  pw_length = FFI::MemoryPointer.new :uint32
69
69
  pw_val = FFI::MemoryPointer.new :pointer
70
70
  item_ref = FFI::MemoryPointer.new :pointer
71
- raise_error? SecKeychainFindGenericPassword(NULL, svc.length, svc,
72
- acct.length, acct,
73
- pw_length, pw_val,
74
- item_ref)
71
+ retval = SecKeychainFindGenericPassword(NULL, svc.length, svc,
72
+ acct.length, acct,
73
+ pw_length, pw_val,
74
+ item_ref)
75
+ return nil unless 0 == retval
75
76
  raise_error? SecKeychainItemFreeContent(NULL, pw_val.read_pointer)
76
77
  raise_error? SecKeychainItemDelete(item_ref.read_pointer)
77
78
  CFRelease item_ref.read_pointer
@@ -0,0 +1,150 @@
1
+ require "ffi"
2
+ require "win32/registry"
3
+
4
+ class Yakg
5
+ module Backend
6
+ module Win32DPAPI
7
+
8
+ REG_KEY_PREFIX="Software\\Yakg\\"
9
+
10
+ def set acct, value, svc
11
+ Win32::Registry::HKEY_CURRENT_USER.create("#{REG_KEY_PREFIX}\\#{svc}") do |reg|
12
+ reg.write_bin acct, DPAPI.encrypt(value).data
13
+ end
14
+ end
15
+
16
+ def get acct, svc
17
+ Win32::Registry::HKEY_CURRENT_USER.open("#{REG_KEY_PREFIX}\\#{svc}") do |reg|
18
+ DPAPI.decrypt(reg.read_bin acct)
19
+ end
20
+ end
21
+
22
+ def unset acct, svc
23
+ Win32::Registry::HKEY_CURRENT_USER.delete_key "#{REG_KEY_PREFIX}\\#{svc}\\#{acct}"
24
+ end
25
+
26
+ def list svc
27
+ Win32::Registry::HKEY_CURRENT_USER.open("#{REG_KEY_PREFIX}\\#{svc}").keys
28
+ end
29
+
30
+
31
+ # Minimal wrapper around Microsoft's DPAPI
32
+ #
33
+ # struct & function definitions cribbed from...
34
+ # http://msdn.microsoft.com/en-us/library/ms995355.aspx
35
+ module DPAPI
36
+ extend FFI::Library
37
+ ffi_lib 'crypt32'
38
+
39
+ class EncryptError < StandardError; end
40
+ class DecryptError < StandardError; end
41
+
42
+ =begin
43
+ typedef struct _CRYPTOAPI_BLOB {
44
+ DWORD cbData;
45
+ BYTE *pbData;
46
+ } DATA_BLOB;
47
+ =end
48
+
49
+ class DataBlob < FFI::Struct
50
+ layout :cbData, :uint32,
51
+ :pbData, :pointer
52
+
53
+ def initialize blob=nil
54
+ super nil
55
+ self.data = blob unless blob.nil?
56
+ end
57
+
58
+ def data
59
+ self[:pbData].get_bytes(0, self[:cbData])
60
+ end
61
+
62
+ def data= blob
63
+ self[:pbData] = FFI::MemoryPointer.from_string blob
64
+ self[:cbData] = blob.bytesize
65
+ end
66
+
67
+ end
68
+
69
+ # http://www.pinvoke.net/default.aspx/Enums/CryptProtectFlags.html
70
+ # dwFlags is a bitvector with the following values...
71
+ UI_FORBIDDEN = 0x1
72
+ LOCAL_MACHINE = 0x4
73
+ CRED_SYNC = 0x8
74
+ AUDIT = 0x10
75
+ NO_RECOVERY = 0x20
76
+ VERIFY_PROTECTION = 0x40
77
+
78
+ =begin
79
+ BOOL WINAPI CryptProtectData(
80
+ _In_ DATA_BLOB *pDataIn,
81
+ _In_ LPCWSTR szDataDescr,
82
+ _In_ DATA_BLOB *pOptionalEntropy,
83
+ _In_ PVOID pvReserved,
84
+ _In_opt_ CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct,
85
+ _In_ DWORD dwFlags,
86
+ _Out_ DATA_BLOB *pDataOut
87
+ );
88
+ =end
89
+
90
+ attach_function :CryptProtectData,
91
+ [:pointer, :string, :pointer, :pointer, :pointer, :uint32, :pointer],
92
+ :int32
93
+
94
+ def encrypt plaintext, entropy=nil, flags = []
95
+ ciphertext_blob = DataBlob.new
96
+
97
+ desc = nil
98
+ if(plaintext.class == "String") and plaintext.respond_to? "encoding"
99
+ desc = FFI::MemoryPointer.from_string(plaintext.encoding.to_s)
100
+ end
101
+
102
+ CryptProtectData(DataBlob.new plaintext,
103
+ desc,
104
+ entropy.nil? ? nil : DataBlob.new(entropy),
105
+ nil,
106
+ nil,
107
+ flags.reduce(0, :|)
108
+ ciphertext_blob) or
109
+ raise EncryptErorr
110
+
111
+ ciphertext_blob.data
112
+ end
113
+
114
+ =begin
115
+ BOOL WINAPI CryptUnprotectData(
116
+ _In_ DATA_BLOB *pDataIn,
117
+ _Out_opt_ LPWSTR *ppszDataDescr,
118
+ _In_opt_ DATA_BLOB *pOptionalEntropy,
119
+ _Reserved_ PVOID pvReserved,
120
+ _In_opt_ CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct,
121
+ _In_ DWORD dwFlags,
122
+ _Out_ DATA_BLOB *pDataOut
123
+ );
124
+ =end
125
+ attach_function :CryptUnprotectData,
126
+ [:pointer, :pointer, :pointer, :pointer, :pointer, :uint32, :pointer],
127
+ :int32
128
+
129
+ def decrypt ciphertext, entropy=nil, flags=[]
130
+ plaintext_blob = DataBlob.new
131
+ desc = FFI::MemoryPointer.new(:pointer, 256)
132
+
133
+ CryptUnprotectData(DataBlob.new ciphertext,
134
+ desc,
135
+ DataBlob.new entropy,
136
+ nil,
137
+ nil,
138
+ flags.reduce(0, :|),
139
+ plaintext_blob) or
140
+ raise DecryptError
141
+
142
+ encoding = desc.read_pointer.nil? ? 'BINARY' : desc.read_pointer.read_string
143
+
144
+ plaintext_blob.data.force_encoding encoding
145
+ end
146
+
147
+ end
148
+ end
149
+ end
150
+ end
data/lib/yakg/backend.rb CHANGED
@@ -3,6 +3,9 @@ class Yakg
3
3
  if RUBY_PLATFORM.match("-darwin")
4
4
  require "yakg/backend/macos-keychain"
5
5
  extend Yakg::Backend::MacosKeychain
6
+ elsif RUBY_PLATFORM.match("win32")
7
+ require "yakg/backend/win32-dpapi"
8
+ extend Yakg::Backend::Win32DPAPI
6
9
  else
7
10
  require "yakg/backend/netrc-fallback"
8
11
  extend Yakg::Backend::NetrcFallback
data/lib/yakg.rb CHANGED
@@ -1,9 +1,18 @@
1
1
  class Yakg
2
2
  module Misc
3
- rv = RUBY_VERSION.match(/^1.8/) ? "1.8" : "1.9.1"
3
+ def self.get_abi
4
+ if RUBY_VERSION.match /^1.8/
5
+ "1.8"
6
+ elsif RUBY_VERSION.match /^1.9/
7
+ "1.9.1"
8
+ elsif RUBY_VERSION.match /^2.0/
9
+ "2.0.0"
10
+ end
11
+ end
12
+
4
13
  VENDOR_GEM_DIR =
5
14
  File.expand_path(File.join(File.dirname(__FILE__),
6
- "..", "vendor", "gems", "ruby", rv))
15
+ "..", "vendor", "gems", "ruby", get_abi))
7
16
  end
8
17
  end
9
18
 
data/spec/yakg_spec.rb CHANGED
@@ -34,5 +34,9 @@ describe Yakg do
34
34
  Yakg.unset(pw_name).should be_true
35
35
  Yakg.get(pw_name).should be_nil
36
36
  end
37
+
38
+ it "has unset return nil for nonexistent keys" do
39
+ Yakg.unset(SecureRandom.hex(8)).should be_nil
40
+ end
37
41
 
38
42
  end
@@ -0,0 +1 @@
1
+ openssl
@@ -0,0 +1,49 @@
1
+ Yo dog, I hear you like vendoring...
2
+ ====================================
3
+
4
+ While yakg itself is pure Ruby, it does rely on ffi (a native gem) to
5
+ call into Apple Keychain and Microsoft's DPAPI & Registry. Heroku
6
+ Toolkit for Windows vendors in ffi, but we don't for MacOS X doesn't,
7
+ and it's kinda sucky to require people to install XCode/gcc just for
8
+ one gem. The corefoundation gem is also included, because it has an
9
+ explicit ffi dependency.
10
+
11
+ Consequently, yakg itself vendors in ffi, including the ffi_c.bundle
12
+ shared object. Versions are included for Ruby ABIs 1.8, 1.9.1
13
+ (includes 1.9.2 & 1.9.3), and 2.0.0. All are compiled as universal
14
+ binaries. `installit.sh` is the helper script, but only does them one
15
+ at a time. Given how long each ruby compile takes, and how everyone's
16
+ rbenv & homebrew installs are their own beautiful unique snowflake,
17
+ I'm reluctant to script this out too much, but my notes are at the
18
+ bottom.
19
+
20
+ If you already have a compiler and ffi installed, the gem load path
21
+ evil that I do in `lib/yakg.rb` should be using that instead.
22
+
23
+ Doing the same thing for Windows is left as an exercise to the reader.
24
+
25
+ ffi_c.bundle recompilation notes
26
+ ================================
27
+
28
+ ```
29
+ $ rbenv global system
30
+ $ ./installit.sh
31
+ $ CC="xcrun cc" CPP="xcrun cc -E" \
32
+ RUBY_CONFIGURE_OPTS="--with-arch=x86_64,i386" \
33
+ rbenv install 1.9.3-p392
34
+ ... stuff happens ...
35
+ $ rbenv global 1.9.3-p392
36
+ $ ./installit.sh
37
+ # this sucks - Mountain Lion ships with openssl 0.9.8, which is both
38
+ # old and doesn't work with ruby 2.0.0
39
+ $ brew install openssl
40
+ # and then we have to recompile it as a fat binary to make
41
+ # 2.0.0 compile-able as a fat binary...
42
+ $ ./build_openssl_dylib.sh
43
+ $ CC="xcrun cc" CPP="xcrun cc -E" \
44
+ RUBY_CONFIGURE_OPTS="--with-arch=x86_64,i386 --with-openssl-dir=/usr/local/opt/openssl" \
45
+ rbenv install 2.0.0-p0
46
+ ... stuff happens ...
47
+ $ rbenv global 2.0.0-p0
48
+ $ ./installit.sh
49
+ ```
@@ -1,37 +1,65 @@
1
1
  #!/bin/bash -x
2
2
 
3
- if [ "x$1" = "appleruby" ]; then
4
- export PATH="/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin:/usr/local/sbin"
5
- fi
6
- DIR="$( cd "$( dirname "$0" )" && pwd )" ; cd $DIR
7
-
8
- if ! [ -r `basename $0 2>/dev/null` ]; then
9
- echo "FAIL! can't cd to the parent of $0"
10
- exit 1
11
- fi
12
-
13
- export RUBY_VERSION=`ruby --version | cut -d \ -f 2 | cut -d . -f 1-2`
14
- ruby --version
15
-
16
- if [ "x${RUBY_VERSION}" = "x" ]; then
17
- echo "FAIL! can't figure out ruby version"
18
- exit 2
19
- fi
20
-
21
- rm -rf Gemfile.lock "ruby/${RUBY_VERSION}"
22
- bundle install --path `pwd`
23
-
24
- FFI_C=`find ruby -type f -name ffi_c.bundle | head -n 1`
25
- if [ "x${FFI_C}" = "x" ]; then
26
- echo "FAIL! Couldn't install ffi"
27
- exit 3
28
- fi
29
-
30
- CFRB=`find ruby -type f -name corefoundation.rb | head -n 1`
31
- if [ "x${CFRB}" = "x" ]; then
32
- echo "FAIL! Couldn't install corefoundation"
33
- exit 4
34
- fi
35
-
36
- rm -rf ./ruby/*/gems/ffi-*/{ext,spec}
37
- rm -rf ./ruby/*/cache
3
+ export R18="system"
4
+ export R191="1.9.3-p448"
5
+ export R200="2.0.0-p195"
6
+
7
+ export FFI_VER="1.9.0"
8
+
9
+ export GEM_CMD="gem install --no-ri --no-rdoc ffi corefoundation"
10
+
11
+ cd ${HOME}/heroku/yakg/vendor/gems/ruby && rm -rf *
12
+ mkdir -p 1.8 x86_64/1.9.1 x86_64/2.0.0 i386/1.9.1 1.8 i386/2.0.0
13
+
14
+ pushd ${HOME}/.rbenv/versions
15
+ rm ${R191} ${R200}
16
+ ln -sf x86_64-${R191} ${R191}
17
+ ln -sf x86_64-${R200} ${R200}
18
+ popd
19
+
20
+ echo ${R18} > ${HOME}/.rbenv/version
21
+ ${GEM_CMD} -i ./1.8
22
+
23
+ pushd x86_64
24
+
25
+ echo ${R191} > ${HOME}/.rbenv/version
26
+ ${GEM_CMD} -i ./1.9.1
27
+
28
+ echo ${R200} > ${HOME}/.rbenv/version
29
+ ${GEM_CMD} -i ./2.0.0
30
+
31
+ popd
32
+
33
+ pushd ${HOME}/.rbenv/versions
34
+ rm ${R191} ${R200}
35
+ ln -sf i386-${R191} ${R191}
36
+ ln -sf i386-${R200} ${R200}
37
+ popd
38
+
39
+ pushd i386
40
+
41
+ echo ${R191} > ${HOME}/.rbenv/version
42
+ ${GEM_CMD} -i ./1.9.1
43
+
44
+ echo ${R200} > ${HOME}/.rbenv/version
45
+ ${GEM_CMD} -i ./2.0.0
46
+
47
+ popd
48
+
49
+ mv x86_64/{2.0.0,1.9.1} .
50
+
51
+ lipo i386/1.9.1/gems/ffi-*/lib/ffi_c.bundle 1.9.1/gems/ffi-*/lib/ffi_c.bundle \
52
+ -create -output 1.9.1/gems/ffi-${FFI_VER}/lib/ffi_c_universal.bundle
53
+ lipo i386/2.0.0/gems/ffi-*/lib/ffi_c.bundle 2.0.0/gems/ffi-*/lib/ffi_c.bundle \
54
+ -create -output 2.0.0/gems/ffi-${FFI_VER}/lib/ffi_c_universal.bundle
55
+
56
+ rm {2.0.0,1.9.1}/gems/ffi-*/lib/ffi_c.bundle
57
+
58
+ pushd 2.0.0/gems/ffi-*/lib
59
+ mv ffi_c_universal.bundle ffi_c.bundle
60
+ popd
61
+ pushd 1.9.1/gems/ffi-*/lib
62
+ mv ffi_c_universal.bundle ffi_c.bundle
63
+ popd
64
+
65
+ rm -rf i386 x86_64 */{cache,doc} */gems/*/{spec,ext,libtest}
@@ -2,6 +2,7 @@ require 'rubygems'
2
2
  require 'rubygems/package_task'
3
3
  require 'rubygems/tasks'
4
4
  require 'rbconfig'
5
+ require 'rake/clean'
5
6
 
6
7
  USE_RAKE_COMPILER = (RUBY_PLATFORM =~ /java/) ? false : true
7
8
  if USE_RAKE_COMPILER
@@ -197,7 +198,7 @@ if USE_RAKE_COMPILER
197
198
 
198
199
  task "copy:ffi_c:x64-mingw32:#{ruby_version}" do |t|
199
200
  if File.exists?("#{BUILD_DIR}/x64-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so")
200
- sh "x86_64-w64-mingw32-strip -S #{dir}/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so"
201
+ sh "x86_64-w64-mingw32-strip -S #{BUILD_DIR}/x64-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/ffi_c.so"
201
202
  end
202
203
  end
203
204
  end
@@ -0,0 +1,4 @@
1
+ module FFI
2
+ VERSION = '1.9.0'
3
+ end
4
+