yakg 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|