/// <summary> /// Возвращает открытый ключ сертификата /// </summary> /// <param name="certificateData">данные сертификата</param> /// <returns></returns> public static byte[] GetCertificatePublicKey(byte[] certificateData) { using (var container = new KeyContainer()) { container.AcquireContext(null, ProviderName, ProviderType, Constants.CryptVerifycontext); using (KeyContext keyContext = container.ImportSertificate(certificateData)) { return(keyContext.ExportPublicKey()); } } }
/// <summary> /// Проверка подписи. /// </summary> /// <param name="signature">Подпись.</param> /// <param name="data">Данные.</param> /// <param name="certificateData">Сертификат.</param> /// <returns>True - провека прошла успешно, иначе False.</returns> public static bool VerifyCertificate(byte[] signature, byte[] data, byte[] certificateData) { using (var container = new KeyContainer()) { container.AcquireContext(null, ProviderName, ProviderType, Constants.CryptVerifycontext); using (KeyContext keyContext = container.ImportSertificate(certificateData)) { using (HashContext hashContext = container.CreateHash(null, Constants.CpcspHashId, 0)) { hashContext.AddData(data, 0); return(keyContext.VerifySignature(signature, hashContext, 0)); } } } }
/// <summary> /// Проверка подписи. /// </summary> /// <param name="signature">Подпись.</param> /// <param name="data">Данные.</param> /// <param name="certificateData">Сертификат.</param> /// <returns>True - провека прошла успешно, иначе False.</returns> public static bool VerifyCertificate(byte[] signature, byte[] data, byte[] certificateData) { using (var container = new KeyContainer()) { container.AcquireContext(null, ProviderName, ProviderType, Constants.CryptVerifycontext); using (KeyContext keyContext = container.ImportSertificate(certificateData)) { using (HashContext hashContext = container.CreateHash(null, Constants.CpcspHashId, 0)) { hashContext.AddData(data, 0); return keyContext.VerifySignature(signature, hashContext, 0); } } } }
/// <summary> /// Возвращает открытый ключ сертификата /// </summary> /// <param name="certificateData">данные сертификата</param> /// <returns></returns> public static byte[] GetCertificatePublicKey(byte[] certificateData) { using (var container = new KeyContainer()) { container.AcquireContext(null, ProviderName, ProviderType, Constants.CryptVerifycontext); using (KeyContext keyContext = container.ImportSertificate(certificateData)) { return keyContext.ExportPublicKey(); } } }