SvRooij.ContentPrep.xml

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>SvRooij.ContentPrep</name>
    </assembly>
    <members>
        <member name="T:SvRooij.ContentPrep.Encryptor">
            <summary>
            Encryptor class to encrypt and decrypt files
            </summary>
        </member>
        <member name="M:SvRooij.ContentPrep.Encryptor.EncryptFileAsync(System.String,System.Threading.CancellationToken)">
            <summary>
            Encrypt a file in place and return the encryption information
            </summary>
            <param name="file">Input path</param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:SvRooij.ContentPrep.Encryptor.EncryptStreamToStreamAsync(System.IO.Stream,System.IO.Stream,System.Threading.CancellationToken)">
            <summary>
            Encrypt a stream to a stream and return the encryption information
            </summary>
            <param name="inputStream"><see cref="T:System.IO.Stream"/> that will be read from (requires Read and Seek), <see cref="T:System.IO.MemoryStream"/> is advised</param>
            <param name="outputStream"><see cref="T:System.IO.Stream"/> that will be written to (requires Read, Write and Seek), <see cref="T:System.IO.MemoryStream"/> is advised</param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:SvRooij.ContentPrep.Encryptor.EncryptStreamWithIVAsync(System.IO.Stream,System.IO.Stream,System.Byte[],System.Byte[],System.Byte[],System.Threading.CancellationToken)">
            <summary>
            Input stream will be encrypted and written to the target stream. The target stream will contain the hash (32 bytes) (of the IV and the encrypted data), the IV (16 bytes) and the encrypted data
            </summary>
            <param name="sourceStream">Input stream, needs Seek and Read</param>
            <param name="targetStream">Output stream, needs seek and Read and Write</param>
            <param name="encryptionKey">AES Encryption key</param>
            <param name="hmacKey">Some random data to compute an unique hash and validate the input afterwards</param>
            <param name="initializationVector">AES initialization vector</param>
            <param name="cancellationToken"></param>
            <returns></returns>
            <remarks>If the output stream is not 48 bytes bigger then the input stream, something is wrong</remarks>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException"></exception>
        </member>
        <member name="M:SvRooij.ContentPrep.Encryptor.DecryptStreamAsync(System.IO.Stream,System.String,System.String,System.Threading.CancellationToken)">
            <summary>
            Validate and decrypt a stream using the encryptionKey and hmacKey
            </summary>
            <param name="inputStream"></param>
            <param name="encryptionKey">Base64 representation of the encryption key</param>
            <param name="hmacKey">Base64 encoded representation of the hmacKey</param>
            <param name="cancellationToken"></param>
            <returns></returns>
            <exception cref="T:System.IO.InvalidDataException">If the hash does not match it will throw an error</exception>
        </member>
        <member name="T:SvRooij.ContentPrep.Models.ApplicationDetails">
            <summary>
            Application details.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.ApplicationDetails.Name">
            <summary>
            Application name.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.ApplicationDetails.SetupFile">
            <summary>
            Relative path to the setup file or script
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.ApplicationDetails.MsiInfo">
            <summary>
            (optional) Msi info.
            </summary>
        </member>
        <member name="T:SvRooij.ContentPrep.Models.ApplicationInfo">
            <summary>
            Application information for xml serialization
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.ApplicationInfo.ToolVersion">
            <summary>
            Version of the tool that will be used to create the package (copied from original tool)
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.ApplicationInfo.Name">
            <summary>
            Gets or sets the application name.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.ApplicationInfo.Description">
            <summary>
            Gets or sets the application description.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.ApplicationInfo.UnencryptedContentSize">
            <summary>
            Gets or sets the unencrypted content size.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.ApplicationInfo.FileName">
            <summary>
            Gets or sets the filename inside the package.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.ApplicationInfo.SetupFile">
            <summary>
            Gets or sets the setup file.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.ApplicationInfo.EncryptionInfo">
            <summary>
            Gets or sets the encryption info or the package.
            </summary>
        </member>
        <member name="M:SvRooij.ContentPrep.Models.ApplicationInfo.ToXml">
            <summary>
            Writes the application info to xml.
            </summary>
            <returns>serialized output</returns>
        </member>
        <member name="T:SvRooij.ContentPrep.Models.ExecutionContext">
            <summary>
            The execution context of an installer.
            </summary>
        </member>
        <member name="F:SvRooij.ContentPrep.Models.ExecutionContext.System">
            <summary>
            Runs in the system context.
            </summary>
        </member>
        <member name="F:SvRooij.ContentPrep.Models.ExecutionContext.User">
            <summary>
            Runs in the user context.
            </summary>
        </member>
        <member name="F:SvRooij.ContentPrep.Models.ExecutionContext.Any">
            <summary>
            Runs in any context.
            </summary>
        </member>
        <member name="T:SvRooij.ContentPrep.Models.FileEncryptionInfo">
            <summary>
            File encryption info.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.FileEncryptionInfo.EncryptionKey">
            <summary>
            Gets or sets the encryption key.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.FileEncryptionInfo.MacKey">
            <summary>
            Gets or sets the mac key.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.FileEncryptionInfo.InitializationVector">
            <summary>
            Gets or sets the initialization vector.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.FileEncryptionInfo.Mac">
            <summary>
            Gets or sets the mac.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.FileEncryptionInfo.ProfileIdentifier">
            <summary>
            Gets or sets the profile identifier.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.FileEncryptionInfo.FileDigest">
            <summary>
            Gets or sets the file digest.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.FileEncryptionInfo.FileDigestAlgorithm">
            <summary>
            Gets or sets the file digest algorithm.
            </summary>
        </member>
        <member name="T:SvRooij.ContentPrep.Models.MsiApplicationInfo">
            <summary>
            Application information with MSI info for xml serialization
            </summary>
        </member>
        <member name="M:SvRooij.ContentPrep.Models.MsiApplicationInfo.#ctor">
            <summary>
            Msi Application Info constructor
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiApplicationInfo.MsiInfo">
            <summary>
            Gets or sets the MSI info
            </summary>
        </member>
        <member name="T:SvRooij.ContentPrep.Models.MsiInfo">
            <summary>
            MSI information for xml serialization
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiProductCode">
            <summary>
            Gets or sets the MSI product code.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiProductVersion">
            <summary>
            Gets or sets the MSI product version.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiPackageCode">
            <summary>
            Gets or sets the MSI package code.
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiPublisher">
            <summary>
            Gets or sets the MSI publisher
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiUpgradeCode">
            <summary>
            Gets or sets the MSI upgrade code
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiExecutionContext">
            <summary>
            Gets or sets the MSI MsiExecutionContext
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiRequiresLogon">
            <summary>
            Gets or sets the MSI RequiresLogon
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiRequiresReboot">
            <summary>
            Gets or sets the MSI RequiresReboot
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiIsMachineInstall">
            <summary>
            Gets or sets the MSI IsMachineInstall
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiIsUserInstall">
            <summary>
            Gets or sets the MSI IsUserInstall
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiIncludesServices">
            <summary>
            Gets or sets the MSI IncludesServices
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiIncludesODBCDataSource">
            <summary>
            Gets or sets the MSI IncludesODBCDataSource
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiContainsSystemRegistryKeys">
            <summary>
            Gets or sets the MSI ContainsSystemRegistryKeys
            </summary>
        </member>
        <member name="P:SvRooij.ContentPrep.Models.MsiInfo.MsiContainsSystemFolders">
            <summary>
            Gets or sets the MSI ContainsSystemFolders
            </summary>
        </member>
        <member name="T:SvRooij.ContentPrep.Packager">
            <summary>
            Main entry point for the ContentPrep library
            </summary>
        </member>
        <member name="M:SvRooij.ContentPrep.Packager.#ctor(Microsoft.Extensions.Logging.ILogger{SvRooij.ContentPrep.Packager})">
            <summary>
            Creates a new instance of the Packager class
            </summary>
            <param name="logger">Supply an optional ILogger, or register by DI off course.</param>
        </member>
        <member name="M:SvRooij.ContentPrep.Packager.CreatePackage(System.String,System.String,System.String,SvRooij.ContentPrep.Models.ApplicationDetails,System.Threading.CancellationToken)">
            <summary>
            Creates a package from a setup file
            </summary>
            <param name="folder">Full path of source folder</param>
            <param name="setupFile">Full path of main setup file, in source folder</param>
            <param name="outputFolder">Output path to publish the package</param>
            <param name="applicationDetails">(optional) Application details, this code does not load this data from the MSI file.</param>
            <param name="cancellationToken">(optiona) Cancellation token</param>
            <returns><see cref="T:SvRooij.ContentPrep.Models.ApplicationInfo"/> of the created package</returns>
        </member>
        <member name="M:SvRooij.ContentPrep.Packager.CreateUploadablePackage(System.IO.Stream,System.IO.Stream,SvRooij.ContentPrep.Models.ApplicationDetails,System.Threading.CancellationToken)">
            <summary>
            Encrypt a zip file to be uploaded to Intune programmatically, without zipping the result with the `MetaData\detections.xml` file. The output stream should be exactly 48 bytes larger than the input stream. Because it will have the hash (32 bytes) and the iv (16 bytes) prefixed.
            </summary>
            <param name="streamWithZippedSetupFiles"><see cref="T:System.IO.Stream"/> with the zipped setup files</param>
            <param name="outputStream"><see cref="T:System.IO.Stream"/> to write the encrypted package to</param>
            <param name="applicationDetails">Specify the information about the package. `SetupFile` and `Name` are mandatory.</param>
            <param name="cancellationToken"></param>
            <returns></returns>
            <remarks>Normally you would use the <see cref="M:SvRooij.ContentPrep.Packager.CreatePackage(System.String,System.String,System.String,SvRooij.ContentPrep.Models.ApplicationDetails,System.Threading.CancellationToken)"/> method, but if you want to upload that to Intune, you'll have to extract it anyway. <see href="https://svrooij.io/2023/08/31/publish-apps-to-intune/#extracting-the-intunewin-file">this blog</see></remarks>
        </member>
        <member name="M:SvRooij.ContentPrep.Packager.Unpack(System.String,System.String,System.Threading.CancellationToken)">
            <summary>
            Decrypt an intunewin file to a folder
            </summary>
            <param name="packageFile">Full path of intunewin file</param>
            <param name="outputFolder">Output folder</param>
            <param name="cancellationToken">(optional) Cancellation token</param>
            <returns><see cref="T:SvRooij.ContentPrep.Models.ApplicationInfo"/> contained in the package</returns>
        </member>
        <member name="M:SvRooij.ContentPrep.Packager.DecryptAndUnpackStreamToFolder(System.IO.Stream,System.String,SvRooij.ContentPrep.Models.FileEncryptionInfo,System.Threading.CancellationToken)">
            <summary>
            Decrypt and unpack a stream to a folder
            </summary>
            <param name="encryptedStream">Encrypted file stream, needs CanRead and CanSeek. Hash (32 bytes) + IV (16 bytes) + encrypted data</param>
            <param name="outputFolder">Folder to extract the contents to</param>
            <param name="encryptionInfo">Encryption info as generated upon encrypting. Only the `EncryptionKey` and the `MacKey` are required.</param>
            <param name="cancellationToken">Cancellation token if your want to be able to cancel this request.</param>
            <returns></returns>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException"></exception>
            <exception cref="T:System.IO.InvalidDataException"></exception>
        </member>
    </members>
</doc>