/**
 * X509CertificateCollection
 * 
 * A class to store and index X509 Certificates by Subject.
 * Copyright (c) 2007 Henri Torgemane
 * 
 * See LICENSE.txt for full license information.
 */
package com.hurlant.crypto.cert {
	
	public class X509CertificateCollection {
		
		private var _map:Object;
		
		public function X509CertificateCollection() {
			_map = {};
		}
		
		/**
		 * Mostly meant for built-in CA loading.
		 * This entry-point allows to index CAs without parsing them.
		 * 
		 * @param name		A friendly name. not currently used
		 * @param subject	base64 DER encoded Subject principal for the Cert
		 * @param pem		PEM encoded certificate data
		 * 
		 */
		public function addPEMCertificate(name:String, subject:String, pem:String):void {
			_map[subject] = new X509Certificate(pem);
		}
		
		/**
		 * Adds a X509 certificate to the collection.
		 * This call will force the certificate to be parsed.
		 * 
		 * @param cert		A X509 certificate
		 * 
		 */
		public function addCertificate(cert:X509Certificate):void {
			var subject:String = cert.getSubjectPrincipal();
			_map[subject] = cert;
		}
		
		/**
		 * Returns a X509 Certificate present in the collection, given
		 * a base64 DER encoded X500 Subject principal
		 * 
		 * @param subject	A Base64 DER-encoded Subject principal
		 * @return 			A matching certificate, or null.
		 * 
		 */
		public function getCertificate(subject:String):X509Certificate {
			return _map[subject];
		}
		
	}
}