コード例 #1
0
        public byte[] Decrypt(byte[] data, string privateKey)
        {
            using (var reader = new StringReader(privateKey))
            {
                // https://stackoverflow.com/a/60423034
                var pemReader = new Org.BouncyCastle.Utilities.IO.Pem.PemReader(reader);
                var pem       = pemReader.ReadPemObject();

                AsymmetricKeyParameter pk = PrivateKeyFactory.CreateKey(pem.Content);

                var cipher1 = new Pkcs1Encoding(new RsaEngine());
                cipher1.Init(false, (ICipherParameters)pk);

                var decipheredData = cipher1.ProcessBlock(data, 0, data.Length);

                return(decipheredData);
            }
        }
コード例 #2
0
        public byte[] GenerateSignature(byte[] data, string privateKey)
        {
            using (var reader = new StringReader(privateKey))
            {
                // https://stackoverflow.com/a/60423034
                var pemReader = new Org.BouncyCastle.Utilities.IO.Pem.PemReader(reader);
                var pem       = pemReader.ReadPemObject();

                AsymmetricKeyParameter pk = PrivateKeyFactory.CreateKey(pem.Content);

                var signer = SignerUtilities.GetSigner("SHA256WITHRSA");
                signer.Init(true, pk);
                signer.BlockUpdate(data, 0, data.Length);

                var signature = signer.GenerateSignature();
                return(signature);
            }
        }
コード例 #3
0
        public static CertificateInfo GetCertificateInfo(byte[] certificate, TCertificateFormat certificateFormat)
        {
            CertificateInfo          result = null;
            X509CertificateStructure cert   = null;

            switch (certificateFormat)
            {
            case TCertificateFormat.NotSet:
                break;

            case TCertificateFormat.PEM:
                Org.BouncyCastle.Utilities.IO.Pem.PemReader reader = new Org.BouncyCastle.Utilities.IO.Pem.PemReader(new StreamReader(new MemoryStream(certificate)));
                Org.BouncyCastle.Utilities.IO.Pem.PemObject pem    = reader.ReadPemObject();
                while (pem != null)
                {
                    if (pem.Type.EndsWith("CERTIFICATE"))
                    {
                        cert = X509CertificateStructure.GetInstance(pem.Content);
                    }
                    else if (pem.Type.EndsWith("PRIVATE KEY"))
                    {
                        if (result == null)
                        {
                            result = new CertificateInfo();
                        }

                        result.PrivateKey = GetPrivateKeyFromPEM(pem);
                    }
                    pem = reader.ReadPemObject();
                }
                break;

            case TCertificateFormat.PFX:
                break;

            case TCertificateFormat.CER:
                cert = X509CertificateStructure.GetInstance(certificate);
                break;

            default:
                break;
            }
            if (cert != null)
            {
                if (result == null)
                {
                    result = new CertificateInfo();
                }
                result.Subject = new CertificateSubject(cert);
                X509Certificate certX509     = new X509Certificate(cert);
                Asn1OctetString subjectKeyID = certX509.GetExtensionValue(X509Extensions.SubjectKeyIdentifier);
                if (subjectKeyID != null)
                {
                    byte[] encodeKeyID = subjectKeyID.GetOctets();
                    byte[] keyID       = new byte[encodeKeyID[1]];
                    Buffer.BlockCopy(encodeKeyID, 2, keyID, 0, encodeKeyID[1]);
                    result.SubjectKeyID = keyID;
                }
            }
            return(result);
        }
コード例 #4
0
ファイル: Certificates.cs プロジェクト: CreatorDev/DTLS.Net
        public static CertificateInfo GetCertificateInfo(byte[] certificate, TCertificateFormat certificateFormat)
        {
            CertificateInfo result = null;
            X509CertificateStructure cert = null;
            switch (certificateFormat)
            {
                case TCertificateFormat.NotSet:
                    break;
                case TCertificateFormat.PEM:
                    Org.BouncyCastle.Utilities.IO.Pem.PemReader reader = new Org.BouncyCastle.Utilities.IO.Pem.PemReader(new StreamReader(new MemoryStream(certificate)));
                    Org.BouncyCastle.Utilities.IO.Pem.PemObject pem = reader.ReadPemObject();
                    while (pem != null)
                    {
                        if (pem.Type.EndsWith("CERTIFICATE"))
                        {
                            cert = X509CertificateStructure.GetInstance(pem.Content);
                        }
                        else if (pem.Type.EndsWith("PRIVATE KEY"))
                        {
                            if (result == null)
                                result = new CertificateInfo();

                            result.PrivateKey = GetPrivateKeyFromPEM(pem);
                        }
                        pem = reader.ReadPemObject();
                    }
                    break;
                case TCertificateFormat.PFX:
                    break;
                case TCertificateFormat.CER:
                    cert = X509CertificateStructure.GetInstance(certificate);
                    break;
                default:
                    break;
            }
            if (cert != null)
            {
                if (result == null)
                    result = new CertificateInfo();
                result.Subject = new CertificateSubject(cert);
                X509Certificate certX509 = new X509Certificate(cert);
                Asn1OctetString subjectKeyID = certX509.GetExtensionValue(X509Extensions.SubjectKeyIdentifier);
                if (subjectKeyID != null)
                {
                    byte[] encodeKeyID = subjectKeyID.GetOctets();
                    byte[] keyID = new byte[encodeKeyID[1]];
                    Buffer.BlockCopy(encodeKeyID, 2, keyID, 0, encodeKeyID[1]);
                    result.SubjectKeyID = keyID;
                }
            }
            return result;
        }