using System.Security.Cryptography.X509Certificates;
namespace sat_ws
{
class Signer
{
string path, password;
public Signer(string path, string password)
{
this.path = path;
this.password = password;
}
public Requester.SignatureType Signature()
{
X509Certificate2 cert = new X509Certificate2(path, password, X509KeyStorageFlags.DefaultKeySet);
Requester.SignatureType signature = new Requester.SignatureType();
signature.SignedInfo = new Requester.SignedInfoType();
signature.SignedInfo.CanonicalizationMethod = new Requester.CanonicalizationMethodType();
signature.SignedInfo.CanonicalizationMethod.Algorithm = "Algorithm";
signature.SignedInfo.SignatureMethod = new Requester.SignatureMethodType();
signature.SignedInfo.SignatureMethod.Algorithm = "Algorithm";
signature.SignedInfo.Reference = new Requester.ReferenceType
{
DigestMethod = new Requester.DigestMethodType
{ Algorithm = "Algorithm" },
DigestValue = cert.GetCertHash()
};
signature.SignatureValue = cert.GetPublicKey();
signature.KeyInfo = new Requester.KeyInfoType
{
X509Data = new Requester.X509DataType
{
X509IssuerSerial = new Requester.X509IssuerSerialType
{
X509IssuerName = cert.IssuerName.Name,
X509SerialNumber = cert.GetSerialNumberString()
},
X509Certificate = cert.RawData
}
};
return signature;
}
public Verifier.SignatureType SignatureVerifier()
{
X509Certificate2 cert = new X509Certificate2(path, password, X509KeyStorageFlags.DefaultKeySet);
Verifier.SignatureType signature = new Verifier.SignatureType();
signature.SignedInfo = new Verifier.SignedInfoType();
signature.SignedInfo.CanonicalizationMethod = new Verifier.CanonicalizationMethodType();
signature.SignedInfo.CanonicalizationMethod.Algorithm = "Algorithm";
signature.SignedInfo.SignatureMethod = new Verifier.SignatureMethodType();
signature.SignedInfo.SignatureMethod.Algorithm = "Algorithm";
signature.SignedInfo.Reference = new Verifier.ReferenceType
{
DigestMethod = new Verifier.DigestMethodType
{ Algorithm = "Algorithm" },
DigestValue = cert.GetCertHash()
};
signature.SignatureValue = cert.GetPublicKey();
signature.KeyInfo = new Verifier.KeyInfoType
{
X509Data = new Verifier.X509DataType
{
X509IssuerSerial = new Verifier.X509IssuerSerialType
{
X509IssuerName = cert.IssuerName.Name,
X509SerialNumber = cert.GetSerialNumberString()
},
X509Certificate = cert.RawData
}
};
return signature;
}
public Downloader.SignatureType SignatureDownloader() {
X509Certificate2 cert = new X509Certificate2(path, password, X509KeyStorageFlags.DefaultKeySet);
Downloader.SignatureType signature = new Downloader.SignatureType();
signature.SignedInfo = new Downloader.SignedInfoType();
signature.SignedInfo.CanonicalizationMethod = new Downloader.CanonicalizationMethodType();
signature.SignedInfo.CanonicalizationMethod.Algorithm = "Algorithm";
signature.SignedInfo.SignatureMethod = new Downloader.SignatureMethodType();
signature.SignedInfo.SignatureMethod.Algorithm = "Algorithm";
signature.SignedInfo.Reference = new Downloader.ReferenceType
{
DigestMethod = new Downloader.DigestMethodType
{ Algorithm = "Algorithm" },
DigestValue = cert.GetCertHash()
};
signature.SignatureValue = cert.GetPublicKey();
signature.KeyInfo = new Downloader.KeyInfoType
{
X509Data = new Downloader.X509DataType
{
X509IssuerSerial = new Downloader.X509IssuerSerialType
{
X509IssuerName = cert.IssuerName.Name,
X509SerialNumber = cert.GetSerialNumberString()
},
X509Certificate = cert.RawData
}
};
return signature;
}
}
}