我按照这个和这个使用 MIP SDK 解密 .msg。以下是我的代码:
class Program
{
private const string clientId = "[test client id here]";
private const string appName = "MIPSDKTestApp";
static void Main(string[] args)
{
Console.WriteLine("Provide path to protected msg file:");
string inputFilePath = Console.ReadLine();
string outputFilePath = Path.Combine(Path.GetDirectoryName(inputFilePath), "Unprotected_" + Path.GetFileName(inputFilePath));
// Initialize Wrapper for File API operations.
MIP.Initialize(MipComponent.File);
// Create ApplicationInfo, setting the clientID from Azure AD App Registration as the ApplicationId.
ApplicationInfo appInfo = new ApplicationInfo()
{
ApplicationId = clientId,
ApplicationName = appName,
ApplicationVersion = "1.0.0"
};
// Instantiate the AuthDelegateImpl object, passing in AppInfo.
AuthDelegateImplementation authDelegate = new AuthDelegateImplementation(appInfo);
MipContext mipContext = MIP.CreateMipContext(appInfo,
"mip_data",
LogLevel.Trace,
null,
null);
// Initialize and instantiate the File Profile.
// Create the FileProfileSettings object.
// Initialize file profile settings to create/use local state.
var profileSettings = new FileProfileSettings(mipContext,
CacheStorageType.OnDiskEncrypted,
new ConsentDelegateImplementation());
// Load the Profile async and wait for the result.
var fileProfile = Task.Run(async () => await MIP.LoadFileProfileAsync(profileSettings)).Result;
// Create a FileEngineSettings object, then use that to add an engine to the profile.
var customSettings = new List<KeyValuePair<string, string>>();
customSettings.Add(new KeyValuePair<string, string>("enable_msg_file_type", "true"));
// Create a FileEngineSettings object, then use that to add an engine to the profile.
var engineSettings = new FileEngineSettings("[user@tenant]", authDelegate, "", CultureInfo.CurrentCulture.Name);
engineSettings.Identity = new Identity("[user@tenant]");
//set custom settings for the engine
engineSettings.CustomSettings = customSettings;
var fileEngine = Task.Run(async () => await fileProfile.AddEngineAsync(engineSettings)).Result; // EXCEPTION THROWN HERE
var handler = Task.Run(async () => await fileEngine.CreateFileHandlerAsync(inputFilePath,
inputFilePath,
true)).Result;
handler.RemoveProtection();
var result = Task.Run(async () => await handler.CommitAsync(outputFilePath)).Result;
// Application Shutdown
handler = null; // This will be used in later quick starts.
fileEngine = null;
fileProfile = null;
mipContext = null;
}
}
但是它会引发以下错误:
NoPolicyException:标签策略不包含数据,CorrelationId=3268dfdf-2ea3-4958-9c72-fe88ae3c6f59,CorrelationId.Description=PolicyProfile,NoPolicyError.Category=SyncFile,NoPolicyError.Category=SyncFile
在
var fileEngine = Task.Run(async () => await fileProfile.AddEngineAsync(engineSettings)).Result;
能不能指出我做错了什么?