public static void ReferansEkle(this ParafOzeti parafOzeti,
                                        PaketVersiyonTuru paketVersiyon,
                                        OzetAlgoritmaTuru ozetAlgoritma,
                                        byte[] ozetDegeri,
                                        Uri uri,
                                        byte[] ozetDegeriSha512 = null,
                                        bool hariciBilesenMi    = false)
        {
            if (ozetAlgoritma == OzetAlgoritmaTuru.YOK)
            {
                throw new ArgumentException(
                          nameof(ozetAlgoritma) + " değeri " + nameof(OzetAlgoritmaTuru.YOK) + " olmamalıdır.",
                          nameof(ozetAlgoritma));
            }
            if (ozetAlgoritma == OzetAlgoritmaTuru.SHA384 && paketVersiyon == PaketVersiyonTuru.Versiyon1X)
            {
                throw new ArgumentException(
                          nameof(OzetAlgoritmaTuru.SHA384) +
                          " özet algoritması yalnızca e-Yazışma API 2.X versiyonlarında kullanılabilir.",
                          nameof(ozetAlgoritma));
            }

            if (parafOzeti.Referanslar != null && parafOzeti.Referanslar.Count > 0)
            {
                var oncekiReferans = parafOzeti.Referanslar.Find(p =>
                                                                 string.Compare(p.URI, uri.ToString(), StringComparison.InvariantCultureIgnoreCase) == 0);
                if (oncekiReferans != default(Referans))
                {
                    parafOzeti.Referanslar.Remove(oncekiReferans);
                }
            }
            else
            {
                parafOzeti.Referanslar = new List <Referans>();
            }

            var yeniReferans = new Referans
            {
                Ozet = Ozet.Kilavuz.OzetAlgoritmasiAta(OzetAlgoritmasi.Kilavuz.AlgoritmaAta(ozetAlgoritma).Olustur())
                       .OzetDegeriAta(ozetDegeri).Olustur(),
                URI  = uri.ToString(),
                Type = hariciBilesenMi
                    ? Constants.HARICI_PAKET_BILESENI_REFERANS_TIPI
                    : Constants.DAHILI_PAKET_BILESENI_REFERANS_TIPI
            };

            if (paketVersiyon == PaketVersiyonTuru.Versiyon2X)
            {
                yeniReferans.Ozet1 = Ozet.Kilavuz
                                     .OzetAlgoritmasiAta(OzetAlgoritmasi.Kilavuz.AlgoritmaAta(OzetAlgoritmaTuru.SHA512).Olustur())
                                     .OzetDegeriAta(ozetDegeriSha512).Olustur();
            }

            parafOzeti.Referanslar.Add(yeniReferans);
        }
Ejemplo n.º 2
0
 public static void GenerateParafOzeti(this Package package, ParafOzeti parafOzeti)
 {
     if (parafOzeti != null && parafOzeti.Referanslar != null && parafOzeti.Referanslar.Count > 0)
     {
         var partParafOzeti = package.CreatePart(Constants.URI_PARAFOZETI, Constants.MIME_XML,
                                                 CompressionOption.Maximum);
         package.CreateRelationship(partParafOzeti.Uri, TargetMode.Internal, Constants.RELATION_TYPE_PARAFOZETI,
                                    Constants.ID_PARAFOZETI);
         var xmlSerializer = new XmlSerializer(typeof(CT_ParafOzeti));
         using (var xmlTextWriter = new XmlTextWriter(partParafOzeti.GetStream(), Encoding.UTF8)
         {
             Formatting = Formatting.Indented
         })
         {
             xmlSerializer.Serialize(xmlTextWriter, parafOzeti.ToV2XCT_ParafOzeti());
         }
     }
 }