public KeyedHashAlgorithm(HashAlgorithmNames algorithm)
		{
			switch(algorithm)
			{
				case HashAlgorithmNames.Sha1:
					alg = MacAlgorithmProvider.OpenAlgorithm(MacAlgorithmNames.HmacSha1);
					break;
				case HashAlgorithmNames.Sha256:
					alg = MacAlgorithmProvider.OpenAlgorithm(MacAlgorithmNames.HmacSha256);
					break;
				case HashAlgorithmNames.Sha384:
					alg = MacAlgorithmProvider.OpenAlgorithm(MacAlgorithmNames.HmacSha384);
					break;
				case HashAlgorithmNames.Sha512:
					alg = MacAlgorithmProvider.OpenAlgorithm(MacAlgorithmNames.HmacSha512);
					break;
				case HashAlgorithmNames.Md5:
					alg = MacAlgorithmProvider.OpenAlgorithm(MacAlgorithmNames.HmacMd5);
					break;
				default:
					throw new NotSupportedException();
			}
		}
		public KeyedHashAlgorithm(HashAlgorithmNames algorithm)
		{
			switch (algorithm)
			{
				case HashAlgorithmNames.Sha1:
					alg = new C.HMACSHA1();
					break;
				case HashAlgorithmNames.Sha256:
					alg = new C.HMACSHA256();
                    break;
				case HashAlgorithmNames.Sha384:
					alg = new C.HMACSHA384();
                    break;
				case HashAlgorithmNames.Sha512:
					alg = new C.HMACSHA512();
                    break;
				case HashAlgorithmNames.Md5:
					alg = new C.HMACMD5();
                    break;
				default:
					throw new NotSupportedException();
			}
		}