Explorar o código

[WeChatPay.V3] 修正平台证书 加密敏感信息

Roc hai 11 meses
pai
achega
aa3e3f6386

+ 4 - 1
src/Essensoft.Paylink.WeChatPay/V3/WeChatPayPlatformCertificateManager.cs

@@ -112,13 +112,16 @@ namespace Essensoft.Paylink.WeChatPay.V3
                                 {
                                     var certStr = AEAD_AES_256_GCM.Decrypt(certificate.EncryptCertificate.Nonce, certificate.EncryptCertificate.Ciphertext, certificate.EncryptCertificate.AssociatedData, options.APIv3Key);
 
+                                    var x509cert = new X509Certificate2(Encoding.ASCII.GetBytes(certStr), string.Empty, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
+
                                     var cert = new WeChatPayPlatformCertificate
                                     {
                                         MchId = options.MchId,
                                         SerialNo = certificate.SerialNo,
                                         EffectiveTime = DateTime.Parse(certificate.EffectiveTime),
                                         ExpireTime = DateTime.Parse(certificate.ExpireTime),
-                                        Certificate = new X509Certificate2(Encoding.ASCII.GetBytes(certStr), string.Empty, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable)
+                                        Certificate = x509cert,
+                                        PublicKey = Convert.ToBase64String(x509cert.GetRSAPublicKey().ExportSubjectPublicKeyInfo())
                                     };
 
                                     _certs.TryAdd(certificate.SerialNo, cert);