yakg 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+