Zaman Damgası Bouncy Castle Kütüphanesi ile Kullanımı
Zaman Damgasının Bouncy Castle Kütüphanesi ile kullanmak için aşağıdaki örnek kodu kullanabilirsiniz.
C#
// using Org.BouncyCastle.Math;
// using Org.BouncyCastle.Tsp;
String zdUrl = "http://zd.imza.at";
String USERNAME = "";
String PASSWORD= "";
byte[] hash = StringToByteArray(“”);
TimeStampRequestGenerator reqGen = new TimeStampRequestGenerator();
reqGen.SetCertReq(true);
TimeStampRequest tsReq;
byte[] tsData;
tsReq = reqGen.Generate(TspAlgorithms.Sha256, hash, BigInteger.ValueOf(100)); // veya SHA512
tsData = tsReq.GetEncoded();
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(zdUrl );
req.Method = "POST";
req.ContentType = "application/timestamp-query";
req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(USERNAME+":"+PASSWORD))); // basic auth
req.ContentLength = tsData.Length;
Stream reqStream = req.GetRequestStream();
reqStream.Write(tsData, 0, tsData.Length);
reqStream.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
if (res == null) {
sonuc = "Cevap Gelmedi";
}
else
{
Stream resStream = new BufferedStream(res.GetResponseStream());
TimeStampResponse tsRes = new TimeStampResponse(resStream); resStream.Close();
try
{
tsRes.Validate(tsReq);
if (null != tsRes.GetFailInfo())
{
sonuc = tsRes.GetStatusString();
} else
{
sonuc = Convert.ToBase64String(tsRes.TimeStampToken.GetEncoded());
}
}
catch (TspException ex)
{
Console.WriteLine(ex.Message);
sonuc = ex.Message;
}
}