Sha256: e8fe73787234e2eba4ff9a8ec87b823be68d79b4ccd4d20372b2440d1931a327
Contents?: true
Size: 1.85 KB
Versions: 1
Compression:
Stored size: 1.85 KB
Contents
#!/usr/bin/env ruby require 'optparse' require_relative '../../lib/rnp' options = {armored: false, keys_armored: false} parser = OptionParser.new do |opts| opts.banner = "Usage: #{$0} [options] <pubkey>" opts.on('-k', '--keys-armored', 'Seckey is ASCII armored') do options[:keys_armored] = true end opts.on('-a', '--armored', 'Output will be ASCII armored') do options[:armored] = true end opts.on('-h', '--help', 'Print this help') do puts opts exit end end parser.parse! if ARGV.length != 1 parser.display exit end pubkey_filename = ARGV.shift # Load keys/keyring keyring_mem = LibC::calloc(1, LibRNP::PGPKeyring.size) keyring = LibRNP::PGPKeyring.new(keyring_mem) if 1 != LibRNP::pgp_keyring_fileread(keyring, options[:keys_armored] ? 1 : 0, pubkey_filename) puts 'Errors encountered while loading keyring.' exit 1 end # Find first pubkey keycount = LibRNP::dynarray_count(keyring, 'key') pubkey = nil (0..keycount - 1).each {|keyn| key = LibRNP::dynarray_get_item(keyring, 'key', LibRNP::PGPKey, keyn) pubkey = key if LibRNP::pgp_is_key_secret(key) == 0 break if pubkey != nil } if pubkey == nil puts 'No pubkey found' exit 1 end pgpio = LibRNP::PGPIO.new stdout_fp = LibC::fdopen($stdout.to_i, 'w') stderr_fp = LibC::fdopen($stderr.to_i, 'w') pgpio[:outs] = stdout_fp pgpio[:errs] = stderr_fp pgpio[:res] = stdout_fp armored = options[:armored] ? 1 : 0 # see pgp_str_to_cipher cipher = 'cast5' $stdin.binmode data = $stdin.read data_buf = FFI::MemoryPointer.new(:uint8, data.bytesize) data_buf.put_bytes(0, data) memory_ptr = LibRNP::pgp_encrypt_buf(pgpio, data_buf, data_buf.size, pubkey, armored, cipher) memory = LibRNP::PGPMemory.new(memory_ptr) $stdout.binmode $stdout.puts memory[:buf].read_bytes(memory[:length]) LibRNP::pgp_memory_free(memory) if not memory.null? $stderr.puts 'Success' else $stderr.puts 'Failed!' end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rnp-0.2.0 | examples/lowlevel/encrypt_mem.rb |