Перейти к содержимому

Bouncycastle crypto dll что это

  • автор:

Что такое » bouncycastle.crypto.ni.dll » ?

В нашей базе содержится 33 разных файлов с именем bouncycastle.crypto.ni.dll . You can also check most distributed file variants with name bouncycastle.crypto.ni.dll. Чаще всего эти файлы принадлежат продукту Bouncy Castle for .NET. Наиболее частый разработчик — компания The Legion of the Bouncy Castle. Самое частое описание этих файлов — BouncyCastle.Crypto. Этот файл — динамически подключаемая библиотека. Такая библиотека может загружаться и выполняться любым работающим процессом.

Подробности о наиболее часто используемом файле с именем «bouncycastle.crypto.ni.dll»

Продукт: Bouncy Castle for .NET Компания: The Legion of the Bouncy Castle Описание: BouncyCastle.Crypto Версия: 1.6.1.15809 MD5: 7bc265dccc349813b8cdee6cfa438f06 SHA1: 4bdc053f3bdadffe7bc1591e9a70e6f7014dfe40 SHA256: 0bdb814b94f5322a99a40eed1c2aeb0b3ca3461145dc62ae28241cd1c07baa7a Размер: 3815424 Папка: C:\Windows\assembly\NativeImages_v2.0.50727_32\BouncyCastle.Crypto\dfccca2993a81021bdc14e90f9ec6c9e ОС: Windows XP Частота: Низкая

Проверьте свой ПК с помощью нашей бесплатной программы

Icon

System Explorer это наша бесплатная, удостоенная наград программа для быстрой проверки всех работающих процессов с помощью нашей базы данных. Эта программа поможет вам держать систему под контролем.

Библиотека «bouncycastle.crypto.ni.dll» безопасная или опасная?

Последний новый вариант файла «bouncycastle.crypto.ni.dll» был обнаружен 4133 дн. назад.

Комментарии пользователей для «bouncycastle.crypto.ni.dll»

У нас пока нет комментариев пользователей к файлам с именем «bouncycastle.crypto.ni.dll».

Добавить комментарий для «bouncycastle.crypto.ni.dll»

Для добавления комментария требуется дополнительная информация об этом файле. Если вам известны размер, контрольные суммы md5/sha1/sha256 или другие атрибуты файла, который вы хотите прокомментировать, то вы можете воспользоваться расширенным поиском на главной странице .

Если подробности о файле вам неизвестны, вы можете быстро проверить этот файл с помощью нашей бесплатной утилиты. Загрузить System Explorer.

Проверьте свой ПК с помощью нашей бесплатной программы

System Explorer это наша бесплатная, удостоенная наград программа для быстрой проверки всех работающих процессов с помощью нашей базы данных. Эта программа поможет вам держать систему под контролем. Программа действительно бесплатная, без рекламы и дополнительных включений, она доступна в виде установщика и как переносное приложение. Её рекомендуют много пользователей.

OpenPGP для C# . Net

Данная заметка первая из планируемого цикла по использованию криптографических стандартов openPGP на платформе . Net. Предполагается, что вы знаете, что это такое и обладаете базовыми знаниями по криптографии.

Первым делом скачайте последнюю версию bccrypto-net, которую предлагает проект « The Legion of the Bouncy Castle» (большое им спасибо).

Для первого примера напишем консольное приложение, которое выводит id всех секретных ключей из хранилища.

Для начала это хранилище нужно создать. Для создания и хранения ключей PGP на ос Windows есть удобная программа с графическим интерфейсом – winPT. Каждый раз после добавления нового ключа программа предлагает сохранить копию хранилища ключей в удобном для вас месте (по умолчанию для хранилища секретных ключей предлагается название secring_bak.gpg). Именно с этой копией мы будем работать.

Не забудьте добавить к проекту консольного приложения BouncyCastle. Crypto.dll.

Стоит отметить, что наше приложение выводит id ключей в десятеричной системе исчисления, а та же winPT в шестнадцатеричном. Вы можете проверить корректность вывода, скажем при помощи стандартного калькулятора windows – переведите число в нужную систему счисления.

Удаление (добавление) ключа из хранилища

Вы уже знаете, как можно узнать какие ключи находятся в хранилище из заметки «Просмотр хранилища ключей»

Теперь рассмотрим, как можно удалить и добавить связку ключей в хранилище.

На деле, удаление и добавление связки ключей, очень похожие операции. Поэтому для краткости и упрощения кода будем удалять связку — для добавления нам бы потребовалось в начале создать ключи.

И так, первым делом прочитаем хранилище ключей. Эта операция вам уже знакома.

Теперь получим связку, которую хотим удалить, для этого нужно знать уникальный идентификатор. Обычно он представляется в шестнадцатеричном формате, но здесь он должен быть в десятеричном.

Вот и все, осталось только сохранить изменения. Для этого надо лишь передать методу Encode() объекта хранилища ключей поток и он запишет в него нужную информацию.

Соберем все вместе.

Подписание строки (ЭЦП)

В данной заметке мы выдадим ЭЦП для произвольной строки. Результатом работы нашей программы будет файл, содержащий подпись в формате openPGP, оформленный по всем стандартам.

Как и в первой статье цикла («Просмотр хранилища ключей») будем использовать библиотеку от « The Legion of the Bouncy Castle».

Вы уже знаете как обращаться с хранилищем секретных ключей:

Теперь нужно найти ключ, на котором мы будем подписывать. Напомню, что PGP-ключ состоит из 2-х половинок: секретного и открытого ключей.
Для того чтобы использовать секретную половинку нужно указать пароль доступа. Приведенный ниже код выполняет поиск PGP-ключа и указывает пароль для секретной половинки.

Далее следует создать объект генератора подписи, предварительно выбрав алгоритм хеширования:

На этом подготовительные операции заканчиваются. Определим строку, которую хотим подписать, а также файл для хранения подписи в нужном формате. Корректность подписи из такого файла можно проверить стандартными средствами, например для windows можно использовать winPT.

Собирем весь код вместе:

В итоге у нас получился файл следующего вида:

Что такое » bouncycastle.crypto.dll » ?

В нашей базе содержится 44 разных файлов с именем bouncycastle.crypto.dll . You can also check most distributed file variants with name bouncycastle.crypto.dll. Чаще всего эти файлы принадлежат продукту Bouncy Castle for .NET. Наиболее частый разработчик — компания The Legion of the Bouncy Castle. Самое частое описание этих файлов — BouncyCastle.CryptoExt. Этот файл — динамически подключаемая библиотека. Такая библиотека может загружаться и выполняться любым работающим процессом.

Подробности о наиболее часто используемом файле с именем «bouncycastle.crypto.dll»

Продукт: Bouncy Castle for .NET Компания: The Legion of the Bouncy Castle Описание: BouncyCastle.CryptoExt Версия: 1.7.4137.9283 MD5: 26808ea489648b798a83e9591ca83bba SHA1: 9718d9b875fb7d37bfca1d5a20b41700a6cd941c SHA256: 566eef32e7c4dcb864dc4f7f9b26e84a334e7fda1c6272f6e9acecf04237f494 Размер: 1425408 Папка: D:\Program Files (x86)\UseNeXT ОС: Windows 7 Частота: Высокая

Проверьте свой ПК с помощью нашей бесплатной программы

Icon

System Explorer это наша бесплатная, удостоенная наград программа для быстрой проверки всех работающих процессов с помощью нашей базы данных. Эта программа поможет вам держать систему под контролем.

Библиотека «bouncycastle.crypto.dll» безопасная или опасная?

Последний новый вариант файла «bouncycastle.crypto.dll» был обнаружен 3974 дн. назад. В нашей базе содержится 8 шт. вариантов файла «bouncycastle.crypto.dll» с окончательной оценкой Безопасный и ноль вариантов с окончательной оценкой Опасный . Окончательные оценки основаны на комментариях, дате обнаружения, частоте инцидентов и результатах антивирусных проверок.

Библиотека с именем «bouncycastle.crypto.dll» может быть безопасным или опасным. Чтобы дать правильную оценку, вы должны определить больше атрибутов файла. Самый простой способ это сделать — воспользоваться нашей бесплатной утилитой для проверки файлов посредством нашей базы данных. Эта утилита содержит множество функций для контролирования вашего ПК и потребляет минимум системных ресурсов.
Щёлкните здесь, чтобы загрузить System Explorer.

Комментарии пользователей для «bouncycastle.crypto.dll»

У нас пока нет комментариев пользователей к файлам с именем «bouncycastle.crypto.dll».

Добавить комментарий для «bouncycastle.crypto.dll»

Для добавления комментария требуется дополнительная информация об этом файле. Если вам известны размер, контрольные суммы md5/sha1/sha256 или другие атрибуты файла, который вы хотите прокомментировать, то вы можете воспользоваться расширенным поиском на главной странице .

Если подробности о файле вам неизвестны, вы можете быстро проверить этот файл с помощью нашей бесплатной утилиты. Загрузить System Explorer.

Проверьте свой ПК с помощью нашей бесплатной программы

System Explorer это наша бесплатная, удостоенная наград программа для быстрой проверки всех работающих процессов с помощью нашей базы данных. Эта программа поможет вам держать систему под контролем. Программа действительно бесплатная, без рекламы и дополнительных включений, она доступна в виде установщика и как переносное приложение. Её рекомендуют много пользователей.

C#. Электронная подпись и библиотека BouncyCastle

Приветствую всех. В этой статье я бы хотел рассказать о работе с электронной подписью средствами библиотеки BouncyCastle на C#.

Весь код указанный здесь находится в репозитории github и доступен в виде nuget пакета.

dotnet add package ElectronicSignature --version 1.0.1

Итак, Bouncy Castle — это криптографическая библиотека на языке Java/C#, которая предоставляет реализации различных криптографических алгоритмов и протоколов, таких как AES, RSA, DSA, Diffie-Hellman, Elliptic Curve Cryptography (ECC), OpenPGP, TLS и многих других. Библиотека также предоставляет инструменты для работы с сертификатами и подписями, а также для генерации случайных чисел и хэш-функций. Bouncy Castle была разработана с открытым исходным кодом и имеет довольно гибкую лицензию, что позволяет использовать ее в коммерческих проектах. Библиотека имеет высокую производительность и может быть использована на различных платформах, включая Android.

Использовать мы будем именно функционал по работе с ключевыми парами RSA и ECDSA, а так же с сертификатами.

Электронная подпись — это цифровой аналог обычной подписи, используемый для подтверждения подлинности и целостности электронных документов, сообщений и транзакций. Электронная подпись создается с помощью криптографических алгоритмов, которые обеспечивают надежную защиту от подделки и изменения документов.

Для создания электронной подписи используется ключевая пара, состоящая из закрытого и открытого ключа. Закрытый ключ используется для создания подписи, а открытый ключ — для ее проверки. Подпись содержит информацию о документе и ключе, используемом для ее создания, и является уникальной для каждого документа.

Проверка электронной подписи позволяет убедиться в том, что документ не был изменен после создания подписи, и что подпись была создана с использованием правильного ключа. Электронная подпись имеет широкое применение в различных областях, включая электронную коммерцию, финансы, правительство и другие сферы деятельности.

Кратко об электронной подписи

Принцип электронной подписи состоит в том что верифицируемая(приватная) сторона создает ключевую пару состоящую из открытого(публичного) и закрытого(приватного) ключа. Приватный ключ хранится только у нее и к нему не должно быть доступа со стороны. Публичный же ключ является общедоступным и предоставляется верифицирующей(публичная) стороне.

Далее, приватная сторона может подписывать сообщения своим приватным ключом и публичная сторона может верифицировать эту подпись публичным ключом. Таким образом публичная сторона может быть уверена в том что сообщения были получены именно от владельца приватного ключа из этой ключевой пары а не от посторонних лиц.

В свою очередь публичная сторона может шифровать своим публичным ключом сообщение и передать приватной стороне. Данные зашифрованные публичными ключами могут быть расшифрованы только приватным ключом, т.к. алгоритм создания ключевой пары является асинхронным и шифровка и расшифровка является односторонней. Приватный ключ не может шифровать данные т.к. публичный ключ является общедоступным, приватный ключ способен только «подписывать», и публичный ключ может эту подпись только верифицировать. Таким образом публичная сторона может передавать зашифрованные сообщения приватной стороне т.к. только она может их расшифровать.

Для безопасного общения между двумя сторонами необходимо чтобы обе стороны сгенерировали личную ключевую пару и обменялись публичными ключами. В этом случая одна сторона шифрует сообщение при помощи публичного ключа другой стороны и подписывает этот шифр своим приватным ключом. Таким образом вторая сторона может верифицировать подпись этого шифра предоставленным ей первой стороной публичным ключом и далее своим приватным ключом расшифровать сообщение которое было зашифровано публичным ключом из ее собственной ключевой пары.

Работа с средствами Bouncy Castle

Теперь давайте приступим к коду.

Первым делом необходимо создать ключевую пару (RSA или ECDSA):

//RSA key pair var keyGenerationParameters = new KeyGenerationParameters(new SecureRandom(), keySize); var keyPairGenerator = new RsaKeyPairGenerator(); keyPairGenerator.Init(keyGenerationParameters); var rsaKeyPair = keyPairGenerator.GenerateKeyPair(); //ECDSA key pair var curve = ECNamedCurveTable.GetByName("secp256k1"); var domainParameters = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H, curve.GetSeed()); var keyGenerationParameters = new ECKeyGenerationParameters(domainParameters, new SecureRandom()); var generator = new ECKeyPairGenerator(); generator.Init(keyGenerationParameters); var ecdsaKeyPair = generator.GenerateKeyPair();

Для публичного и приватного ключа в файлы формата .pem используем следующий код

using (var privateKeyWriter = new StreamWriter(@"rsaPrivateKey.pem")) < var pemWriter = new PemWriter(privateKeyWriter); pemWriter.WriteObject(rsaKeyPair.Private); >using (var publicKeyWriter = new StreamWriter(@"rsaPublicKey.pem"))

Теперь когда у нас есть ключевая пара давайте создадим сертификаты для удобства.

Сначала можем создать запрос на создание сертификата (CSR). Код ниже взят из тестового консольного проекта в репозитории библиотеки.

var keyPair = keyPairPath.GetKeyPairFromPem(); var csr = Cryptography.GenerateCSR("Test_KG", "Test_Chuy", "Test_Bishkek", "Test_osh", "Test_ITZone", "Test_Name", CryptographyAlgorithm.SHA256withRSA, keyPair); csr.ToPemFile(csrPath);

Вот реализация метода GenerateCSR :

public static Pkcs10CertificationRequest GenerateCSR(string country, string state, string locality, string organization, string organizationalUnit, string commonName, CryptographyAlgorithm algorithm, AsymmetricCipherKeyPair keyPair) < var subject = new X509Name($"C=, ST=, L=, O=, OU=, CN="); var algorithmName = algorithm.ToString(); var isRSA = algorithmName.IsRsaAlgorithm(); var csr = keyPair.Private switch < ECPrivateKeyParameters when !isRSA =>new Pkcs10CertificationRequest(algorithmName, subject, keyPair.Public, null, keyPair.Private), RsaPrivateCrtKeyParameters when isRSA => new Pkcs10CertificationRequest(algorithmName, subject, keyPair.Public, null, keyPair.Private), _ => throw new Exception("Unknown key pair type") >; return csr; >

Далее создадим самоподписанный сертификат

var selfSignedCert = Cryptography.GenerateSelfSignedCert(csrPath.GetCSRPemFile(), keyPairPath.GetPrivateKeyFromPem(), DateTime.UtcNow, DateTime.UtcNow.AddYears(1)); selfSignedCert.ToPemFile(selfSignedCertPath);
public static X509Certificate GenerateSelfSignedCert(Pkcs10CertificationRequest csr, AsymmetricKeyParameter privateKey, DateTime startDate, DateTime endDate, CryptographyAlgorithm algorithm = CryptographyAlgorithm.SHA256withRSA) < // Create a CSR-based self-signed certificate var csrInfo = csr.GetCertificationRequestInfo(); var certGenerator = new X509V3CertificateGenerator(); var randomGenerator = new CryptoApiRandomGenerator(); var random = new SecureRandom(randomGenerator); var serialNumber = BigIntegers.CreateRandomInRange(BigInteger.One, BigInteger.ValueOf(long.MaxValue), random); certGenerator.SetSerialNumber(serialNumber); certGenerator.SetIssuerDN(csrInfo.Subject); certGenerator.SetNotBefore(startDate); certGenerator.SetNotAfter(endDate); certGenerator.SetSubjectDN(csrInfo.Subject); certGenerator.SetPublicKey(csr.GetPublicKey()); // Add the BasicConstraints and SubjectKeyIdentifier extensions certGenerator.AddExtension(X509Extensions.BasicConstraints, true, new BasicConstraints(false)); certGenerator.AddExtension(X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifierStructure(csr.GetPublicKey())); // Create a signature factory for the specified algorithm and private key ISignatureFactory signatureFactory = new Asn1SignatureFactory(algorithm.ToString(), privateKey); // Sign the certificate with the specified signature algorithm return certGenerator.Generate(signatureFactory); >

Теперь создадим приватный PFX сертификат который будет содержать ключевую пару

var certificate = new X509Certificate2(selfSignedCertPath); var keyPair = keyPairPath.GetKeyPairFromPem(); var bcRsaPrivateKey = (RsaPrivateCrtKeyParameters)keyPair.Private; var rsaParameters = DotNetUtilities.ToRSAParameters(bcRsaPrivateKey); var rsaKey = RSA.Create(rsaParameters); // Assuming you have an X509Certificate2 named certificate var exportableCertificate = certificate.CopyWithPrivateKey(rsaKey); // Create password for certificate protection var passwordForCertificateProtection = new SecureString(); foreach (var @char in "1234") passwordForCertificateProtection.AppendChar(@char); // Export certificate to a file. File.WriteAllBytes(privateCertPath, exportableCertificate.Export(X509ContentType.Pfx, passwordForCertificateProtection));

Мы теперь можем создавать публичные сертификаты подписанные нашим приватным сертификатом

var signedCert = Cryptography.GenerateSignedCertificate(csrPath.GetCSRPemFile(), privateCertPath.GetPrivateCert(privateCertPass), privateCertPath, DateTime.UtcNow, DateTime.UtcNow.AddYears(1)); signedCert.ToPemFile(signedCertPath);

Реализация метода GenerateSignedCertificate

public static X509Certificate GenerateSignedCertificate(Pkcs10CertificationRequest csr, X509Certificate2 pfx, string? pfxPassword, DateTime startDate, DateTime endDate, CryptographyAlgorithm algorithm = CryptographyAlgorithm.SHA256withRSA) < AsymmetricKeyParameter pfxPrivateKey; try < pfxPrivateKey = DotNetUtilities.GetKeyPair(pfx.GetRSAPrivateKey()).Private ?? DotNetUtilities.GetKeyPair(pfx.GetECDsaPrivateKey()).Private; >catch (Exception) < pfxPrivateKey = pfx.GetPrivateKeyFromCert(pfxPassword); >var pfxBouncyCastleCertificate = DotNetUtilities.FromX509Certificate(pfx); // Создание сертификата на основе CSR var csrInfo = csr.GetCertificationRequestInfo(); var certGenerator = new X509V3CertificateGenerator(); var randomGenerator = new CryptoApiRandomGenerator(); var random = new SecureRandom(randomGenerator); var serialNumber = BigIntegers.CreateRandomInRange(BigInteger.One, BigInteger.ValueOf(long.MaxValue), random); certGenerator.SetSerialNumber(serialNumber); certGenerator.SetIssuerDN(pfxBouncyCastleCertificate.SubjectDN); certGenerator.SetNotBefore(startDate); certGenerator.SetNotAfter(endDate); certGenerator.SetSubjectDN(csrInfo.Subject); certGenerator.SetPublicKey(csr.GetPublicKey()); // Adding extensions certGenerator.AddExtension(X509Extensions.BasicConstraints.Id, false, new BasicConstraints(false)); certGenerator.AddExtension(X509Extensions.SubjectKeyIdentifier.Id, false, new SubjectKeyIdentifierStructure(csr.GetPublicKey())); // Creating a Signature and Generating a Certificate ISignatureFactory signatureFactory = new Asn1SignatureFactory(algorithm.ToString(), pfxPrivateKey); return certGenerator.Generate(signatureFactory); >

Теперь уже мы можем при помощи публичного сертификата шифровать данные и дешифровать приватным PFX сертификатом

var message = "Hello world"; var encoded = Cryptography.EncryptDataByPublicCert(message, signedCertPath.GetPublicCert()); var data = Cryptography.DecryptDataWithPrivateCert(encoded, privateCertPath.GetPrivateCert(privateCertPass), privateCertPass); Console.WriteLine(Encoding.UTF8.GetString(data));

Метод для шифрования публичным ключом

public static byte[] EncryptDataByPublicCert(byte[] data, X509Certificate2 publicCert)

Метод для дешифрования приватным ключом

public static byte[] DecryptDataWithPrivateCert(byte[] encryptedData, X509Certificate2 privateCert, string ? password) < AsymmetricKeyParameter key; try < key = DotNetUtilities.GetKeyPair(privateCert.GetRSAPrivateKey()).Private ?? DotNetUtilities.GetKeyPair(privateCert.GetECDsaPrivateKey()).Private; >catch (Exception) < key = privateCert.GetPrivateKeyFromCert(password); >var x509Certificate = DotNetUtilities.FromX509Certificate(privateCert); var recipientInfos = new CmsEnvelopedData(encryptedData).GetRecipientInfos(); RecipientInformation? firstRecipient = null; foreach (var recipientInfo in recipientInfos.GetRecipients()) < if(recipientInfo.RecipientID.Issuer.Equivalent(x509Certificate.IssuerDN) || recipientInfo.RecipientID.SerialNumber.Equals(x509Certificate.SerialNumber)) firstRecipient = recipientInfo; >return firstRecipient!.GetContent(key); >

В тестовом консольном проекте также предоставлены примеры шифровки и дешифровки при помощи самих ключей.

public static void TestDecryptWithKey()

Извлечение данных из подписи(сигнатуры) приватного ключа

var message = "Hello world"; var signature = Cryptography.SignDataByPrivateCert(message, privateCertPath.GetPrivateCert(privateCertPass)); var data = Cryptography.ExtractSignedData(signature); Console.WriteLine(Encoding.UTF8.GetString(data));

Можно подписать сообщение самим приватным ключом а не сертификатом и проверить подпись публичным ключом

var message = "Hello world"; var signature = Cryptography.SignDataByPrivateKey(message, privateKeyPath.GetPrivateKeyFromPem()); if(Cryptography.VerifySignedByPublicKey(message, signature, publicKeyPath.GetPublicKeyFromPem())) Console.WriteLine("True"); else Console.WriteLine("False");

Верифицировать подпись что она была сделана именно тем приватным сертификатом которым был подписан наш публичный подписанный сертификат.

var message = "Hello world"; var signature = Cryptography.SignDataByPrivateCert(message, privateCertPath.GetPrivateCert(privateCertPass)); if(Cryptography.VerifySignedDataByCertIssuer(signature, signedCertPath.GetPublicCert(), out var data)) < if (data != null) Console.WriteLine(Encoding.UTF8.GetString(data)); >else

Верифицировать подпись что она была сделана приватным сертификатом которыму мы доверяем.

public static void TestVerifySignedDataRootCertAndTrustCommunication() < var message = "Hello world"; var signature = Cryptography.SignDataByPrivateCert(message, privateCertPath.GetPrivateCert(privateCertPass)); if(Cryptography.VerifySignedDataRootCertAndTrustCommunication(signature, privateCertPath.GetPrivateCert(privateCertPass), out var data)) < if (data != null) Console.WriteLine(Encoding.UTF8.GetString(data)); >else < Console.WriteLine("False"); >>

Верифицировать подпись что она была сделана именно тем же самым сертификатом которым мы проверяем подпись.

public static void TestVerifySignedDataBySameCert() < var message = "Hello world"; var signature = Cryptography.SignDataByPrivateCert(message, privateCertPath.GetPrivateCert(privateCertPass)); if(Cryptography.VerifySignedDataBySameCert(signature, privateCertPath.GetPrivateCert(privateCertPass), out var data)) < if (data != null) Console.WriteLine(Encoding.UTF8.GetString(data)); >else < Console.WriteLine("False"); >>

Вот полный стек вызовов рассмотренных методов.

//The given code appears to be a sequence of function calls to various tests related to digital certificates, cryptography, and security. //Let's break down each of these functions and their potential purpose. //This test function could be generating a public-private key pair using the RSA encryption algorithm. //This is a commonly used algorithm for generating secure keys and is often used for secure communication. Tests.TestGenerateRSAKeyPair(); //This test function may be writing a key-pair to a file or creating a private and public keys. //Private keys are used in asymmetric encryption, where one key is used for encryption and another key is used for decryption. Tests.TestWriteKeyPairInPemFile(); //This test function may be generating a Certificate Signing Request (CSR), which is a message sent to a certificate authority to request a digital certificate. Tests.TestGenerateCSR(); //This test function may be generating a self-signed certificate. //Self-signed certificates are digital certificates that are signed by the same entity that issues the certificate. Tests.TestGenerateSelfSignedCert(); //This test function could be creating a PFX file, which is a file format used to store private keys and certificates in a secure manner. Tests.CreatePfx(); //This test function may be generating a signed certificate. //A signed certificate is a digital certificate that has been signed by a trusted third-party, known as a certificate authority. Tests.TestGenerateSignedCert(); //This test function may be decrypting data using a certificate. //In asymmetric encryption, the public key is used for encryption and the private key is used for decryption. Tests.TestDecryptWithCert(); //This test function may be decrypting data using a private key. Tests.TestDecryptWithKey(); //This test function may be extracting a signed certificate from a private certificate. Tests.TestExtractSignedByPrivateCert(); //This test function may be verifying that a certificate has been signed by a private key. Tests.TestVerifySignedByPrivateKey(); //This test function may be verifying that the public key and the private key are a match. Tests.TestVerifyMatchBetweenPublicAndPrivateKeys(); //This test function may be verifying that a certificate has been signed by a private certificate. //ATTENTION. When this method is called, the result will be "false" if any of the certificates under test are not in the trust store; Tests.TestVerifySignedByPrivateCert(); //This test function may be verifying that signed data can be trusted using a root certificate. //ATTENTION. When this method is called, the result will be "false" if any of the certificates under test are not in the trust store; Tests.TestVerifySignedDataRootCertAndTrustCommunication(); //This test function may be verifying that signed data can be trusted using the same certificate. //ATTENTION. When this method is called, the result will be "false" if any of the certificates under test are not in the trust store; Tests.TestVerifySignedDataBySameCert();

В данной версии библиотеки реализована работа с алгоритмами RSA и ECDSA. В будущем я добавлю функционал и по другим алгоритмам.

В репозитории предоставлен полный исходный код библиотеки с подробной документацией и тестовый консольный проект который можно запускать сразу из «коробки».

Благодарю за внимание. Буду рад и признателен если дадите фидбек по найденным недоработкам, ошибкам или советам по улучшению кода и функционала.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *