Skip to content

Commit 16e637d

Browse files
committed
Improve non-AOT compatibility
1 parent 2bbb117 commit 16e637d

File tree

3 files changed

+10
-34
lines changed

3 files changed

+10
-34
lines changed

src/EasySign/Bundle.cs

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Concurrent;
33
using System.Collections.Generic;
4+
using System.Diagnostics.CodeAnalysis;
45
using System.IO;
56
using System.IO.Compression;
67
using System.Linq;
@@ -189,18 +190,10 @@ protected virtual void ReadBundle(ZipArchive zip)
189190
{
190191
ZipArchiveEntry? entry;
191192
if ((entry = zip.GetEntry(".manifest.ec")) != null)
192-
#if NET6_0_OR_GREATER
193193
Manifest = JsonSerializer.Deserialize(entry.Open(), typeof(Manifest), SourceGenerationManifestContext.Default) as Manifest ?? new Manifest();
194-
#else
195-
Manifest = JsonSerializer.Deserialize<Manifest>(entry.Open(), SerializerOptions) ?? new Manifest();;
196-
#endif
197194

198195
if ((entry = zip.GetEntry(".signatures.ec")) != null)
199-
#if NET6_0_OR_GREATER
200196
Signatures = JsonSerializer.Deserialize(entry.Open(), typeof(Signatures), SourceGenerationSignaturesContext.Default) as Signatures ?? new Signatures();
201-
#else
202-
Signatures = JsonSerializer.Deserialize<Signatures>(entry.Open(), SerializerOptions) ?? new Signatures();
203-
#endif
204197
}
205198

206199
/// <summary>
@@ -247,12 +240,7 @@ public void Sign(X509Certificate2 certificate, RSA privateKey)
247240
{
248241
EnsureWritable();
249242

250-
#if NET6_0_OR_GREATER
251243
var manifestData = Export(Manifest, SourceGenerationManifestContext.Default);
252-
#else
253-
var manifestData = Export(Manifest);
254-
#endif
255-
256244
var signature = privateKey.SignData(manifestData, HashAlgorithmName.SHA512, RSASignaturePadding.Pkcs1);
257245
var cert = Convert.ToBase64String(certificate.Export(X509ContentType.Cert));
258246
var name = certificate.GetCertHashString();
@@ -303,11 +291,7 @@ public bool VerifySignature(string certificateHash)
303291

304292
if (pubKey == null) return false;
305293

306-
#if NET6_0_OR_GREATER
307294
var manifestData = Export(Manifest, SourceGenerationManifestContext.Default);
308-
#else
309-
var manifestData = Export(Manifest);
310-
#endif
311295

312296
return pubKey.VerifyData(manifestData, Signatures.Entries[certificateHash], HashAlgorithmName.SHA512, RSASignaturePadding.Pkcs1);
313297
}
@@ -422,7 +406,6 @@ public byte[] GetFileBytes(string entryName)
422406
}
423407
}
424408

425-
#if NET6_0_OR_GREATER
426409
/// <summary>
427410
/// Exports the specified structured data to a byte array.
428411
/// </summary>
@@ -434,18 +417,23 @@ protected byte[] Export(object structuredData, JsonSerializerContext jsonSeriali
434417
var data = JsonSerializer.Serialize(structuredData, structuredData.GetType(), jsonSerializerContext);
435418
return Encoding.UTF8.GetBytes(data);
436419
}
437-
#else
420+
438421
/// <summary>
439422
/// Exports the specified structured data to a byte array.
440423
/// </summary>
441424
/// <param name="structuredData">The structured data to export.</param>
442425
/// <returns>A byte array containing the exported data.</returns>
426+
#if NET6_0_OR_GREATER
427+
[RequiresUnreferencedCode("This method is not compatible with AOT.")]
428+
#endif
429+
#if NET8_0_OR_GREATER
430+
[RequiresDynamicCode("This method is not compatible with AOT.")]
431+
#endif
443432
protected byte[] Export(object structuredData)
444433
{
445434
var data = JsonSerializer.Serialize(structuredData, SerializerOptions);
446435
return Encoding.UTF8.GetBytes(data);
447436
}
448-
#endif
449437

450438
/// <summary>
451439
/// Writes changes to the bundle file.
@@ -458,20 +446,10 @@ public void Update()
458446
{
459447
OnUpdating?.Invoke(zip);
460448

461-
#if NET6_0_OR_GREATER
462449
var manifestData = Export(Manifest, SourceGenerationManifestContext.Default);
463-
#else
464-
var manifestData = Export(Manifest);
465-
#endif
466-
467450
WriteEntry(zip, ".manifest.ec", manifestData);
468451

469-
#if NET6_0_OR_GREATER
470452
var signatureData = Export(Signatures, SourceGenerationSignaturesContext.Default);
471-
#else
472-
var signatureData = Export(Signatures);
473-
#endif
474-
475453
WriteEntry(zip, ".signatures.ec", signatureData);
476454

477455
foreach (var newFile in newEmbeddedFiles)

src/EasySign/Manifest.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,10 @@ public void AddEntry(string entryName, byte[] hash)
6565
}
6666
}
6767

68-
#if NET6_0_OR_GREATER
6968
[JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Metadata, WriteIndented = false, DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault)]
7069
[JsonSerializable(typeof(Manifest))]
7170
internal partial class SourceGenerationManifestContext : JsonSerializerContext
7271
{
72+
7373
}
74-
#endif
7574
}

src/EasySign/Signatures.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@ public class Signatures
1919
public Dictionary<string, byte[]> Entries { get; set; } = new();
2020
}
2121

22-
#if NET6_0_OR_GREATER
2322
[JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Metadata, WriteIndented = false, DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault)]
2423
[JsonSerializable(typeof(Signatures))]
2524
internal partial class SourceGenerationSignaturesContext : JsonSerializerContext
2625
{
26+
2727
}
28-
#endif
2928
}

0 commit comments

Comments
 (0)