подсказка пароля обхода ошибки сегмента с gpgme - PullRequest
0 голосов
/ 29 апреля 2020
    def encrypt(content)
      crypto = GPGME::Ctx.new(
        pinentry_mode: GPGME::PINENTRY_MODE_LOOPBACK,
        passphrase_callback: method(:passfunc)
      )
      crypto.encrypt(content, :symmetric => true )
    end

    def passfunc(hook, uid_hint, passphrase_info, prev_was_bad, fd)
      system('stty -echo')
      io = IO.for_fd(fd, 'w')
      io.puts('abcdefg') # a random passphrase
      io.flush
    end

Я пытаюсь обойти запрос пароля при использовании Gpgme. Я прочитал do c, что GnuPG 2.1 имеет функцию обратной связи, которая, кажется, может быть отключена путем передачи обратного вызова парольной фразы. Тем не менее, я получаю ошибку сегмента в gpgme-2.0.20/lib/gpgme/ctx.rb:486 при запуске приведенного выше кода. Любое предложение приветствуется!

gpg --version
gpg (GnuPG) 2.2.4
libgcrypt 1.8.1
...