Method: Keychain::Keychain#import
- Defined in:
- lib/keychain/keychain.rb
#import(input, app_list = []) ⇒ Array <SecKeychainItem>
Imports item from string or file to this keychain
permitted to access imported items each of which may be a SecCertificate, SecKey, or SecIdentity instance
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/keychain/keychain.rb', line 123 def import(input, app_list=[]) input = input.read if input.is_a? IO # Create array of TrustedApplication objects trusted_apps = get_trusted_apps(app_list) # Create an Access object access_buffer = FFI::MemoryPointer.new(:pointer) status = Sec.SecAccessCreate(path.to_cf, trusted_apps, access_buffer) Sec.check_osstatus status access = CF::Base.typecast(access_buffer.read_pointer) key_params = Sec::SecItemImportExportKeyParameters.new key_params[:accessRef] = access # Import item to the keychain cf_data = CF::Data.from_string(input) cf_array = FFI::MemoryPointer.new(:pointer) status = Sec.SecItemImport(cf_data, nil, :kSecFormatUnknown, :kSecItemTypeUnknown, :kSecItemPemArmour, key_params, self, cf_array) access.release Sec.check_osstatus status item_array = CF::Base.typecast(cf_array.read_pointer).release_on_gc item_array.to_ruby end |