Org.BouncyCastle.OpenSsl.PemReader.ReadObject C# (CSharp) Method

ReadObject() public method

public ReadObject ( ) : object
return object
		public object ReadObject()
		{
			string line;
			while ((line = reader.ReadLine()) != null)
			{
				int startPos = line.IndexOf(BeginString);
				if (startPos == -1)
					continue;

				startPos += BeginString.Length;

				int endPos = line.IndexOf('-', startPos);
				if (endPos == -1)
					endPos = line.Length;

				string headerName = line.Substring(startPos, endPos - startPos).Trim();
				//Console.WriteLine("[" + headerName + "]");

				string endMarker = "-----END " + headerName;

				switch (headerName)
				{
					case "PUBLIC KEY":
						return ReadPublicKey(endMarker);
					case "RSA PUBLIC KEY":
						return ReadRsaPublicKey(endMarker);
					case "CERTIFICATE REQUEST":
					case "NEW CERTIFICATE REQUEST":
						return ReadCertificateRequest(endMarker);
					case "CERTIFICATE":
					case "X509 CERTIFICATE":
						return ReadCertificate(endMarker);
					case "PKCS7":
						return ReadPkcs7(endMarker);
					case "X509 CRL":
						return ReadCrl(endMarker);
					case "ATTRIBUTE CERTIFICATE":
						return ReadAttributeCertificate(endMarker);
					case "RSA PRIVATE KEY":
						return ReadKeyPair("RSA", endMarker);
					case "DSA PRIVATE KEY":
						return ReadKeyPair("DSA", endMarker);
					// TODO Add back in when tests done, and return type issue resolved
					//case "EC PARAMETERS":
					//	return ReadECParameters(endMarker);
					case "EC PRIVATE KEY":
						return ReadECPrivateKey(endMarker);
					default:
						// TODO Throw an exception for an unknown header?

						// Ignore contents
						ReadBytes(endMarker);
						break;
				}
			}

			return null;
		}

Usage Example

Exemplo n.º 1
2
        static CmsSignedData ReadPem(String filename)
        {
            StreamReader sR = new StreamReader(filename);
            PemReader pR = new PemReader(sR);

            Org.BouncyCastle.Asn1.Cms.ContentInfo cI = (Org.BouncyCastle.Asn1.Cms.ContentInfo) pR.ReadObject();

            sR.Close();

            CmsSignedData cms = new CmsSignedData(cI);

            return cms;
        }
All Usage Examples Of Org.BouncyCastle.OpenSsl.PemReader::ReadObject