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.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/VERSION +1 -1
- data/lib/yakg/backend/dbus-secret-service.rb +5 -0
- data/lib/yakg/backend/macos-keychain.rb +5 -4
- data/lib/yakg/backend/win32-dpapi.rb +150 -0
- data/lib/yakg/backend.rb +3 -0
- data/lib/yakg.rb +11 -2
- data/spec/yakg_spec.rb +4 -0
- data/vendor/gems/.gitignore +1 -0
- data/vendor/gems/README.md +49 -0
- data/vendor/gems/installit.sh +63 -35
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/.require_paths +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING.LESSER +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/History.txt +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/LICENSE +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/README.md +0 -0
- data/vendor/gems/ruby/{1.9.1/gems/ffi-1.8.1 → 1.8/gems/ffi-1.9.0}/Rakefile +2 -1
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/ffi.gemspec +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/Rakefile +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/log +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/autopointer.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/buffer.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/callback.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/enum.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/errno.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.iml +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/io.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/library.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/managedstruct.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/memorypointer.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/arm-linux/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-cygwin/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-darwin/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-freebsd/types.conf +0 -0
- 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
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-linux/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-netbsd/types.conf +0 -0
- 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
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-solaris/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-windows/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/ia64-linux/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/mips-linux/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/mipsel-linux/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-aix/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-darwin/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-linux/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/s390-linux/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/s390x-linux/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparc-linux/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparc-solaris/types.conf +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparcv9-solaris/types.conf +0 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/pointer.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct_layout_builder.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/const_generator.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator_task.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/struct_generator.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/types_generator.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/types.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/union.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/variadic.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/ffi-1.9.0/lib/ffi/version.rb +4 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi.rb +0 -0
- data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi_c.bundle +0 -0
- data/vendor/gems/ruby/1.8/specifications/{ffi-1.8.1.gemspec → ffi-1.9.0.gemspec} +4 -4
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING.LESSER +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/History.txt +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/LICENSE +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/README.md +0 -0
- data/vendor/gems/ruby/{2.0.0/gems/ffi-1.8.1 → 1.9.1/gems/ffi-1.9.0}/Rakefile +2 -1
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/ffi.gemspec +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/Rakefile +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/log +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/autopointer.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/buffer.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/callback.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/enum.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/errno.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.iml +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/io.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/library.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/managedstruct.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/memorypointer.rb +0 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.9.0/lib/ffi/platform/i386-openbsd/types.conf +128 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.9.0/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
- 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
- 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
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.9.0/lib/ffi/platform/x86_64-openbsd/types.conf +128 -0
- 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
- 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
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/pointer.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct_layout_builder.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/const_generator.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator_task.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/struct_generator.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/types_generator.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/types.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/union.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/variadic.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.9.0/lib/ffi/version.rb +4 -0
- data/vendor/gems/ruby/1.9.1/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi.rb +0 -0
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.9.0/lib/ffi_c.bundle +0 -0
- data/vendor/gems/ruby/1.9.1/specifications/corefoundation-0.2.0.gemspec +7 -9
- data/vendor/gems/ruby/1.9.1/specifications/ffi-1.9.0.gemspec +42 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/COPYING.LESSER +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/History.txt +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/LICENSE +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/README.md +0 -0
- data/vendor/gems/ruby/{1.8/gems/ffi-1.8.1 → 2.0.0/gems/ffi-1.9.0}/Rakefile +2 -1
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/ffi.gemspec +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/Rakefile +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/gen/log +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/autopointer.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/buffer.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/callback.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/enum.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/errno.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.iml +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/ffi.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/io.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/library.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/managedstruct.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/memorypointer.rb +0 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/platform/i386-openbsd/types.conf +128 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
- 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
- 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
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/platform/x86_64-openbsd/types.conf +128 -0
- 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
- 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
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/pointer.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/struct_layout_builder.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/const_generator.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/generator_task.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/struct_generator.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/tools/types_generator.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/types.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/union.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/variadic.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/version.rb +4 -0
- data/vendor/gems/ruby/2.0.0/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi.rb +0 -0
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi_c.bundle +0 -0
- data/vendor/gems/ruby/2.0.0/specifications/corefoundation-0.2.0.gemspec +1 -1
- data/vendor/gems/ruby/2.0.0/specifications/{ffi-1.8.1.gemspec → ffi-1.9.0.gemspec} +4 -4
- metadata +200 -277
- data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/array_spec.rb +0 -92
- data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/boolean_spec.rb +0 -24
- data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/data_spec.rb +0 -30
- data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/date_spec.rb +0 -25
- data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/dictionary_spec.rb +0 -81
- data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/extensions_spec.rb +0 -127
- data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/null_spec.rb +0 -7
- data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/number_spec.rb +0 -52
- data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/spec_helper.rb +0 -10
- data/vendor/gems/ruby/1.8/gems/corefoundation-0.2.0/spec/string_spec.rb +0 -48
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/lib/ffi/version.rb +0 -4
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/Benchmark.c +0 -52
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/BoolTest.c +0 -31
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/BufferTest.c +0 -31
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/ClosureTest.c +0 -190
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/EnumTest.c +0 -34
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/FunctionTest.c +0 -58
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/GNUmakefile +0 -149
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/GlobalVariable.c +0 -62
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/LastErrorTest.c +0 -21
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/NumberTest.c +0 -132
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/PointerTest.c +0 -63
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/ReferenceTest.c +0 -23
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/StringTest.c +0 -34
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/StructTest.c +0 -240
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/UnionTest.c +0 -43
- data/vendor/gems/ruby/1.8/gems/ffi-1.8.1/libtest/VariadicTest.c +0 -62
- data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/array_spec.rb +0 -92
- data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/boolean_spec.rb +0 -24
- data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/data_spec.rb +0 -30
- data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/date_spec.rb +0 -25
- data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/dictionary_spec.rb +0 -81
- data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/extensions_spec.rb +0 -127
- data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/null_spec.rb +0 -7
- data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/number_spec.rb +0 -52
- data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/spec_helper.rb +0 -10
- data/vendor/gems/ruby/1.9.1/gems/corefoundation-0.2.0/spec/string_spec.rb +0 -48
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/.require_paths +0 -2
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/lib/ffi/platform/x86_64-netbsd/types.conf +0 -126
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/lib/ffi/platform/x86_64-openbsd/types.conf +0 -126
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/lib/ffi/version.rb +0 -4
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/lib/ffi_c.bundle +0 -0
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/Benchmark.c +0 -52
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/BoolTest.c +0 -31
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/BufferTest.c +0 -31
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/ClosureTest.c +0 -190
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/EnumTest.c +0 -34
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/FunctionTest.c +0 -58
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/GNUmakefile +0 -149
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/GlobalVariable.c +0 -62
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/LastErrorTest.c +0 -21
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/NumberTest.c +0 -132
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/PointerTest.c +0 -63
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/ReferenceTest.c +0 -23
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/StringTest.c +0 -34
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/StructTest.c +0 -240
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/UnionTest.c +0 -43
- data/vendor/gems/ruby/1.9.1/gems/ffi-1.8.1/libtest/VariadicTest.c +0 -62
- data/vendor/gems/ruby/1.9.1/specifications/ffi-1.8.1.gemspec +0 -43
- data/vendor/gems/ruby/2.0.0/build_info/corefoundation-0.2.0.info +0 -1
- data/vendor/gems/ruby/2.0.0/build_info/ffi-1.8.1.info +0 -1
- data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/array_spec.rb +0 -92
- data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/boolean_spec.rb +0 -24
- data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/data_spec.rb +0 -30
- data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/date_spec.rb +0 -25
- data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/dictionary_spec.rb +0 -81
- data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/extensions_spec.rb +0 -127
- data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/null_spec.rb +0 -7
- data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/number_spec.rb +0 -52
- data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/spec_helper.rb +0 -10
- data/vendor/gems/ruby/2.0.0/gems/corefoundation-0.2.0/spec/string_spec.rb +0 -48
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi/platform/i386-netbsd/types.conf +0 -126
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi/platform/i386-openbsd/types.conf +0 -126
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi/platform/x86_64-netbsd/types.conf +0 -126
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi/platform/x86_64-openbsd/types.conf +0 -126
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi/version.rb +0 -4
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/lib/ffi_c.bundle +0 -0
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/Benchmark.c +0 -52
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/BoolTest.c +0 -31
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/BufferTest.c +0 -31
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/ClosureTest.c +0 -190
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/EnumTest.c +0 -34
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/FunctionTest.c +0 -58
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/GNUmakefile +0 -149
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/GlobalVariable.c +0 -62
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/LastErrorTest.c +0 -21
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/NumberTest.c +0 -132
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/PointerTest.c +0 -63
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/ReferenceTest.c +0 -23
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/StringTest.c +0 -34
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/StructTest.c +0 -240
- data/vendor/gems/ruby/2.0.0/gems/ffi-1.8.1/libtest/UnionTest.c +0 -43
- 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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f4a3fdb56682bf5c6c5601f5e07d96eba5817530
|
|
4
|
+
data.tar.gz: b95abb3237d99b44d77897ceeb2785a0dd4a0507
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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
|
|
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.
|
|
1
|
+
0.0.9
|
|
@@ -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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
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",
|
|
15
|
+
"..", "vendor", "gems", "ruby", get_abi))
|
|
7
16
|
end
|
|
8
17
|
end
|
|
9
18
|
|
data/spec/yakg_spec.rb
CHANGED
|
@@ -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
|
+
```
|
data/vendor/gems/installit.sh
CHANGED
|
@@ -1,37 +1,65 @@
|
|
|
1
1
|
#!/bin/bash -x
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -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 #{
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/arm-linux/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-cygwin/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-darwin/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-freebsd/types.conf
RENAMED
|
File without changes
|
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-linux/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-netbsd/types.conf
RENAMED
|
File without changes
|
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-solaris/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/i386-windows/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/ia64-linux/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/mips-linux/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/mipsel-linux/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-aix/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-darwin/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/powerpc-linux/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/s390-linux/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/s390x-linux/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparc-linux/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparc-solaris/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/sparcv9-solaris/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-darwin/types.conf
RENAMED
|
File without changes
|
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-linux/types.conf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-solaris/types.conf
RENAMED
|
File without changes
|
data/vendor/gems/ruby/1.8/gems/{ffi-1.8.1 → ffi-1.9.0}/lib/ffi/platform/x86_64-windows/types.conf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
Binary file
|