示例#1
0
        /**
         * Returns the encoded form of this certification path, using
         * the specified encoding.
         *
         * @param encoding the name of the encoding to use
         * @return the encoded bytes
         * @exception CertificateEncodingException if an encoding error
         * occurs or the encoding requested is not supported
         *
         */
        public virtual byte[] GetEncoded(
            string encoding)
        {
            if (Platform.EqualsIgnoreCase(encoding, "PkiPath"))
            {
                Asn1EncodableVector v = new Asn1EncodableVector();

                for (int i = certificates.Count - 1; i >= 0; i--)
                {
                    v.Add(ToAsn1Object((X509Certificate)certificates[i]));
                }

                return(ToDerEncoded(new DerSequence(v)));
            }
            else if (Platform.EqualsIgnoreCase(encoding, "PKCS7"))
            {
                Asn1.Pkcs.ContentInfo encInfo = new Asn1.Pkcs.ContentInfo(
                    PkcsObjectIdentifiers.Data, null);

                Asn1EncodableVector v = new Asn1EncodableVector();
                for (int i = 0; i != certificates.Count; i++)
                {
                    v.Add(ToAsn1Object((X509Certificate)certificates[i]));
                }

                Asn1.Pkcs.SignedData sd = new Asn1.Pkcs.SignedData(
                    new DerInteger(1),
                    new DerSet(),
                    encInfo,
                    new DerSet(v),
                    null,
                    new DerSet());

                return(ToDerEncoded(new Asn1.Pkcs.ContentInfo(PkcsObjectIdentifiers.SignedData, sd)));
            }
            else if (Platform.EqualsIgnoreCase(encoding, "PEM"))
            {
                MemoryStream bOut = new MemoryStream();
                PemWriter    pWrt = new PemWriter(new StreamWriter(bOut));

                try
                {
                    for (int i = 0; i != certificates.Count; i++)
                    {
                        pWrt.WriteObject(certificates[i]);
                    }

                    Platform.Dispose(pWrt.Writer);
                }
                catch (Exception)
                {
                    throw new CertificateEncodingException("can't encode certificate for PEM encoded path");
                }

                return(bOut.ToArray());
            }
            else
            {
                throw new CertificateEncodingException("unsupported encoding: " + encoding);
            }
        }
示例#2
0
		/**
		 * Returns the encoded form of this certification path, using
		 * the specified encoding.
		 *
		 * @param encoding the name of the encoding to use
		 * @return the encoded bytes
		 * @exception CertificateEncodingException if an encoding error
		 * occurs or the encoding requested is not supported
		 *
		 */
		public virtual byte[] GetEncoded(
			string encoding)
		{
			if (Platform.CompareIgnoreCase(encoding, "PkiPath") == 0)
			{
				Asn1EncodableVector v = new Asn1EncodableVector();

				for (int i = certificates.Count - 1; i >= 0; i--)
				{
					v.Add(ToAsn1Object((X509Certificate) certificates[i]));
				}

				return ToDerEncoded(new DerSequence(v));
			}
            else if (Platform.CompareIgnoreCase(encoding, "PKCS7") == 0)
			{
				Asn1.Pkcs.ContentInfo encInfo = new Asn1.Pkcs.ContentInfo(
					PkcsObjectIdentifiers.Data, null);

				Asn1EncodableVector v = new Asn1EncodableVector();
				for (int i = 0; i != certificates.Count; i++)
				{
					v.Add(ToAsn1Object((X509Certificate)certificates[i]));
				}

				Asn1.Pkcs.SignedData sd = new Asn1.Pkcs.SignedData(
					new DerInteger(1),
					new DerSet(),
					encInfo,
					new DerSet(v),
					null,
					new DerSet());

				return ToDerEncoded(new Asn1.Pkcs.ContentInfo(PkcsObjectIdentifiers.SignedData, sd));
			}
            else if (Platform.CompareIgnoreCase(encoding, "PEM") == 0)
			{
				MemoryStream bOut = new MemoryStream();
				PemWriter pWrt = new PemWriter(new StreamWriter(bOut));

				try
				{
					for (int i = 0; i != certificates.Count; i++)
					{
						pWrt.WriteObject(certificates[i]);
					}

					pWrt.Writer.Close();
				}
				catch (Exception)
				{
					throw new CertificateEncodingException("can't encode certificate for PEM encoded path");
				}

				return bOut.ToArray();
			}
			else
			{
				throw new CertificateEncodingException("unsupported encoding: " + encoding);
			}
		}