X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/80e2389990082500d76eb566d4946be3e786c3ef..d8f41ccd20de16f8ebe2ccc84d47bf1cb2b26bbb:/certificates/ota_cert_tool/Scripts/File.rb diff --git a/certificates/ota_cert_tool/Scripts/File.rb b/certificates/ota_cert_tool/Scripts/File.rb new file mode 100644 index 00000000..8132f895 --- /dev/null +++ b/certificates/ota_cert_tool/Scripts/File.rb @@ -0,0 +1,141 @@ +# +# File.rb +# ios_ota_cert_tool +# +# Copyright 2012 Apple Inc. All rights reserved. +# + +require 'FileUtils' + +class BuildPKIAsset + attr_reader :ios_SDK_path + attr_reader :base_path + attr_reader :output_directory + attr_reader :asset_directory + attr_reader :asset_top_directory + attr_reader :asset_data_directory + attr_reader :staging_directory + attr :verbose + + def validate_path(path, isDir = true) + return false if path.nil? || path.empty? + return false if !FileTest.exists?(path) + return false if isDir != FileTest.directory?(path) + true + end + + def ensure_directory(path) + if !FileTest.exists?(path) + FileUtils.mkdir_p(path) + end + end + + def initialize(input_dir, output_directory, staging_directory = "/tmp/staging") + + @verbose = true + + puts "In BuildPKIAsset.initialize" if @verbose + puts "input_dir = #{input_dir}" if @verbose + puts "output_directory = #{output_directory}" if @verbose + puts "staging_directory = #{staging_directory}" if @verbose + + # Check the input parameter + if !validate_path(input_dir) + puts "Invalid base directory given: #{input_dir}" + exit + end + + @base_path = File.expand_path(input_dir) + + if output_directory.nil? || output_directory.empty? + puts "No output directory was given" + exit + end + + exit if `xcodebuild -sdk iphoneos.internal -find assettool`.nil? + + @output_directory = File.expand_path(output_directory) + + @asset_directory = File.join(@output_directory, "Assets") + ensure_directory(@asset_directory) + + @asset_top_directory = File.join(@asset_directory, "SecurityCertificatesAssets") + ensure_directory(@asset_top_directory) + + @asset_data_directory = File.join(@asset_top_directory, "AssetData/PKITrustData") + ensure_directory(@asset_data_directory) + + @staging_directory = File.expand_path(staging_directory) + ensure_directory(@staging_directory) + + + puts "@base_path = #{@base_path }" if @verbose + puts "@output_directory = #{@output_directory }" if @verbose + puts "@asset_directory = #{@asset_directory }" if @verbose + puts "@asset_top_directory = #{@asset_top_directory }" if @verbose + puts "@asset_data_directory = #{@asset_data_directory }" if @verbose + puts "@staging_directory = #{@staging_directory }" if @verbose + + puts "Done with BuildPKIAsset.initialize" if @verbose + + end + + def stage + + puts "In BuildPKIAsset.stage" if @verbose + + #copy over the files into the asset directory + input_plist_file_path = File.join(@base_path, "Info.plist") + if !FileTest.exists?(input_plist_file_path) + puts "The asset data Info.plist file is missing #{input_plist_file_path}" + exit + end + + puts "input_plist_file_path = #{input_plist_file_path}" if @verbose + + FileUtils.cp(input_plist_file_path, @asset_top_directory) + + puts "About to copy over the plist files" if @verbose + + # copy all of the necessary files into the asset data directory + file_list = %w(EVRoots.plist certs.plist revoked.plist Manifest.plist distrusted.plist roots.plist) + file_list.each do |file| + file_path = File.join(@base_path, file) + if !FileTest.exists?(file_path) + puts "#{file_path} is missing in the base directory" + exit + end + FileUtils.cp(file_path, @asset_data_directory) + end + + puts "Completed copying over the plist files" if @verbose + + puts "About to call assettool stage" if @verbose + `xcrun -sdk iphoneos.internal assettool stage -p #{@asset_directory} -s #{@staging_directory}` + puts "Completed call to assettool stage" if @verbose + + puts "Done with BuildPKIAsset.stage" if @verbose + end + + def sign + puts "In BuildPKIAsset.sign" if @verbose + puts "About to call assettool sign" if @verbose + `xcrun -sdk iphoneos.internal assettool sign -s #{@staging_directory}` + puts "Completed call to assettool sign" if @verbose + puts "Done with BuildPKIAsset.sign" if @verbose + end + +end + +=begin + The following code is here ONLY for testing +=end + +#b = BuildPKIAsset.new(File.expand_path("~/cert_out"), File.expand_path("~/bobby_cert")) +#b.stage +#b.sign +#puts "That's all folks@" + + + +