@@ -187,10 +187,18 @@ protected virtual void ReadBundle(ZipArchive zip)
187187 {
188188 ZipArchiveEntry entry ;
189189 if ( ( entry = zip . GetEntry ( ".manifest.ec" ) ) != null )
190+ #if NET6_0_OR_GREATER
191+ Manifest = JsonSerializer . Deserialize ( entry . Open ( ) , typeof ( Manifest ) , SourceGenerationManifestContext . Default ) as Manifest ;
192+ #else
190193 Manifest = JsonSerializer . Deserialize < Manifest > ( entry . Open ( ) , SerializerOptions ) ;
194+ #endif
191195
192196 if ( ( entry = zip . GetEntry ( ".signatures.ec" ) ) != null )
197+ #if NET6_0_OR_GREATER
198+ Signatures = JsonSerializer . Deserialize ( entry . Open ( ) , typeof ( Signatures ) , SourceGenerationSignaturesContext . Default ) as Signatures ;
199+ #else
193200 Signatures = JsonSerializer . Deserialize < Signatures > ( entry . Open ( ) , SerializerOptions ) ;
201+ #endif
194202 }
195203
196204 /// <summary>
@@ -237,7 +245,13 @@ public void Sign(X509Certificate2 certificate, RSA privateKey)
237245 {
238246 EnsureWritable ( ) ;
239247
240- var signature = privateKey . SignData ( Export ( Manifest ) , HashAlgorithmName . SHA512 , RSASignaturePadding . Pkcs1 ) ;
248+ #if NET6_0_OR_GREATER
249+ var manifestData = Export ( Manifest , SourceGenerationManifestContext . Default ) ;
250+ #else
251+ var manifestData = Export ( Manifest ) ;
252+ #endif
253+
254+ var signature = privateKey . SignData ( manifestData , HashAlgorithmName . SHA512 , RSASignaturePadding . Pkcs1 ) ;
241255 var cert = Convert . ToBase64String ( certificate . Export ( X509ContentType . Cert ) ) ;
242256 var name = certificate . GetCertHashString ( ) ;
243257
@@ -285,7 +299,13 @@ public bool VerifySignature(string certificateHash)
285299 X509Certificate2 certificate = GetCertificate ( certificateHash ) ;
286300 var pubKey = certificate . GetRSAPublicKey ( ) ;
287301
288- return pubKey . VerifyData ( Export ( Manifest ) , Signatures . Entries [ certificateHash ] , HashAlgorithmName . SHA512 , RSASignaturePadding . Pkcs1 ) ;
302+ #if NET6_0_OR_GREATER
303+ var manifestData = Export ( Manifest , SourceGenerationManifestContext . Default ) ;
304+ #else
305+ var manifestData = Export ( Manifest ) ;
306+ #endif
307+
308+ return pubKey . VerifyData ( manifestData , Signatures . Entries [ certificateHash ] , HashAlgorithmName . SHA512 , RSASignaturePadding . Pkcs1 ) ;
289309 }
290310
291311 /// <summary>
@@ -375,6 +395,19 @@ public byte[] GetFileBytes(string entryName)
375395 }
376396 }
377397
398+ #if NET6_0_OR_GREATER
399+ /// <summary>
400+ /// Exports the specified structured data to a byte array.
401+ /// </summary>
402+ /// <param name="structuredData">The structured data to export.</param>
403+ /// <param name="jsonSerializerContext">A metadata provider for serializable types.</param>
404+ /// <returns>A byte array containing the exported data.</returns>
405+ protected byte [ ] Export ( object structuredData , JsonSerializerContext jsonSerializerContext )
406+ {
407+ var data = JsonSerializer . Serialize ( structuredData , structuredData . GetType ( ) , jsonSerializerContext ) ;
408+ return Encoding . UTF8 . GetBytes ( data ) ;
409+ }
410+ #else
378411 /// <summary>
379412 /// Exports the specified structured data to a byte array.
380413 /// </summary>
@@ -385,6 +418,7 @@ protected byte[] Export(object structuredData)
385418 var data = JsonSerializer . Serialize ( structuredData , SerializerOptions ) ;
386419 return Encoding . UTF8 . GetBytes ( data ) ;
387420 }
421+ #endif
388422
389423 /// <summary>
390424 /// Writes changes to the bundle file.
@@ -397,8 +431,21 @@ public void Update()
397431 {
398432 OnUpdating ? . Invoke ( zip ) ;
399433
400- WriteEntry ( zip , ".manifest.ec" , Export ( Manifest ) ) ;
401- WriteEntry ( zip , ".signatures.ec" , Export ( Signatures ) ) ;
434+ #if NET6_0_OR_GREATER
435+ var manifestData = Export ( Manifest , SourceGenerationManifestContext . Default ) ;
436+ #else
437+ var manifestData = Export ( Manifest ) ;
438+ #endif
439+
440+ WriteEntry ( zip , ".manifest.ec" , manifestData ) ;
441+
442+ #if NET6_0_OR_GREATER
443+ var signatureData = Export ( Signatures , SourceGenerationSignaturesContext . Default ) ;
444+ #else
445+ var signatureData = Export ( Signatures ) ;
446+ #endif
447+
448+ WriteEntry ( zip , ".signatures.ec" , signatureData ) ;
402449
403450 foreach ( var newFile in newEmbeddedFiles )
404451 {
0 commit comments