public static byte[]? PatchTypeSignature(List <byte> sigBuilder, RemappedTypeTokens remappedTypeTokens, RawModuleBytes moduleData, uint blobOffset, uint sigOffset) { try { var patcher = new MDSigPatcher(sigBuilder, remappedTypeTokens, moduleData, blobOffset, sigOffset); patcher.PatchTypeSignature(); return(patcher.GetResult()); } catch (InvalidSignatureException) { } Debug.Fail("Failed to patch type sig"); return(null); }
/// <summary> /// Patches the signature. If it didn't need to be patched or if it was an in-place patch, /// the same signature is returned. /// </summary> uint PatchTypeSignature(Dictionary <uint, uint> typeSigDict, uint sig) { if (typeSigDict.TryGetValue(sig, out var newSig)) { return(newSig); } var data = MDSigPatcher.PatchTypeSignature(sigBuilder, remappedTypeTokens, moduleData, (uint)mdEditor.RealMetadata.BlobStream.StartOffset, sig); if (data != null) { newSig = mdEditor.BlobHeap.Create(data); } else { newSig = sig; } typeSigDict.Add(sig, newSig); return(newSig); }