internal static StrongNameKeys Create(ImmutableArray<byte> publicKey, CommonMessageProvider messageProvider) { Debug.Assert(!publicKey.IsDefaultOrEmpty); if (MetadataHelpers.IsValidPublicKey(publicKey)) { return new StrongNameKeys(default(ImmutableArray<byte>), publicKey, null, null); } else { return new StrongNameKeys(messageProvider.CreateDiagnostic(messageProvider.ERR_BadCompilationOptionValue, Location.None, nameof(CompilationOptions.CryptoPublicKey), BitConverter.ToString(publicKey.ToArray()))); } }
internal static Diagnostic ExceptionToDiagnostic(Exception e, CommonMessageProvider messageProvider, Location location, string display, MetadataImageKind kind) { if (e is BadImageFormatException) { int errorCode = (kind == MetadataImageKind.Assembly) ? messageProvider.ERR_InvalidAssemblyMetadata : messageProvider.ERR_InvalidModuleMetadata; return messageProvider.CreateDiagnostic(errorCode, location, display, e.Message); } var fileNotFound = e as FileNotFoundException; if (fileNotFound != null) { return messageProvider.CreateDiagnostic(messageProvider.ERR_MetadataFileNotFound, location, fileNotFound.FileName ?? string.Empty); } else { int errorCode = (kind == MetadataImageKind.Assembly) ? messageProvider.ERR_ErrorOpeningAssemblyFile : messageProvider.ERR_ErrorOpeningModuleFile; return messageProvider.CreateDiagnostic(errorCode, location, display, e.Message); } }
internal static Diagnostic GetKeyFileError(CommonMessageProvider messageProvider, string path, object message) { return messageProvider.CreateDiagnostic(messageProvider.ERR_PublicKeyFileFailure, Location.None, path, message); }
internal static Diagnostic GetContainerError(CommonMessageProvider messageProvider, string name, object message) { return messageProvider.CreateDiagnostic(messageProvider.ERR_PublicKeyContainerFailure, Location.None, name, message); }
internal void ValidateOptions(ArrayBuilder<Diagnostic> builder, CommonMessageProvider messageProvider) { if (!CryptoPublicKey.IsEmpty) { if (CryptoKeyFile != null) { builder.Add(messageProvider.CreateDiagnostic(messageProvider.ERR_MutuallyExclusiveOptions, Location.None, nameof(CryptoPublicKey), nameof(CryptoKeyFile))); } if (CryptoKeyContainer != null) { builder.Add(messageProvider.CreateDiagnostic(messageProvider.ERR_MutuallyExclusiveOptions, Location.None, nameof(CryptoPublicKey), nameof(CryptoKeyContainer))); } } if (PublicSign) { if (CryptoKeyFile != null && !PathUtilities.IsAbsolute(CryptoKeyFile)) { // TODO(https://github.com/dotnet/roslyn/issues/9153): // Produce better diagnostic message for passing a key file with a relative path builder.Add(messageProvider.CreateDiagnostic(messageProvider.ERR_BadCompilationOptionValue, Location.None, nameof(CryptoKeyFile), CryptoKeyFile)); } if (CryptoKeyContainer != null) { builder.Add(messageProvider.CreateDiagnostic(messageProvider.ERR_MutuallyExclusiveOptions, Location.None, nameof(PublicSign), nameof(CryptoKeyContainer))); } if (DelaySign == true) { builder.Add(messageProvider.CreateDiagnostic(messageProvider.ERR_MutuallyExclusiveOptions, Location.None, nameof(PublicSign), nameof(DelaySign))); } } }
internal void ValidateOptions(ArrayBuilder<Diagnostic> builder, CommonMessageProvider messageProvider) { if (!CryptoPublicKey.IsEmpty) { if (CryptoKeyFile != null) { builder.Add(messageProvider.CreateDiagnostic(messageProvider.ERR_MutuallyExclusiveOptions, Location.None, nameof(CryptoPublicKey), nameof(CryptoKeyFile))); } if (CryptoKeyContainer != null) { builder.Add(messageProvider.CreateDiagnostic(messageProvider.ERR_MutuallyExclusiveOptions, Location.None, nameof(CryptoPublicKey), nameof(CryptoKeyContainer))); } } if (PublicSign) { if (CryptoKeyFile != null && !PathUtilities.IsAbsolute(CryptoKeyFile)) { builder.Add(messageProvider.CreateDiagnostic(messageProvider.ERR_OptionMustBeAbsolutePath, Location.None, nameof(CryptoKeyFile))); } if (CryptoKeyContainer != null) { builder.Add(messageProvider.CreateDiagnostic(messageProvider.ERR_MutuallyExclusiveOptions, Location.None, nameof(PublicSign), nameof(CryptoKeyContainer))); } if (DelaySign == true) { builder.Add(messageProvider.CreateDiagnostic(messageProvider.ERR_MutuallyExclusiveOptions, Location.None, nameof(PublicSign), nameof(DelaySign))); } } }
internal static Diagnostic GetKeyFileError(CommonMessageProvider messageProvider, string path, object message) { return(messageProvider.CreateDiagnostic(messageProvider.ERR_PublicKeyFileFailure, Location.None, path, message)); }
internal static Diagnostic GetContainerError(CommonMessageProvider messageProvider, string name, object message) { return(messageProvider.CreateDiagnostic(messageProvider.ERR_PublicKeyContainerFailure, Location.None, name, message)); }