Exemple #1
0
        public ITestResult Perform()
        {
            SmimeCapabilityVector caps = new SmimeCapabilityVector();

            caps.AddCapability(SmimeCapability.DesEde3Cbc);
            caps.AddCapability(SmimeCapability.RC2Cbc, 128);
            caps.AddCapability(SmimeCapability.DesCbc);

            SmimeCapabilitiesAttribute attr = new SmimeCapabilitiesAttribute(caps);

            SmimeEncryptionKeyPreferenceAttribute pref = new SmimeEncryptionKeyPreferenceAttribute(
                new RecipientKeyIdentifier(new DerOctetString(new byte[8]),
                                           new DerGeneralizedTime("20070315173729Z"),
                                           null));

            try
            {
                if (!Arrays.AreEqual(attr.GetEncoded(), attrBytes))
                {
                    return(new SimpleTestResult(false, Name + ": Failed attr data check"));
                }

                Asn1Object o = Asn1Object.FromByteArray(attrBytes);
                if (!attr.Equals(o))
                {
                    return(new SimpleTestResult(false, Name + ": Failed equality test for attr"));
                }

                if (!Arrays.AreEqual(pref.GetEncoded(), prefBytes))
                {
                    return(new SimpleTestResult(false, Name + ": Failed attr data check"));
                }

                o = Asn1Object.FromByteArray(prefBytes);
                if (!pref.Equals(o))
                {
                    return(new SimpleTestResult(false, Name + ": Failed equality test for pref"));
                }

                return(new SimpleTestResult(true, Name + ": Okay"));
            }
            catch (Exception e)
            {
                return(new SimpleTestResult(false, Name + ": Failed - exception " + e.ToString(), e));
            }
        }
Exemple #2
0
        internal SmimeCapabilitiesAttribute GetSecureMimeCapabilitiesAttribute()
        {
            var capabilities = new SmimeCapabilityVector();

            foreach (var algorithm in EncryptionAlgorithmRank)
            {
                if (!IsEnabled(algorithm))
                {
                    continue;
                }

                switch (algorithm)
                {
                case EncryptionAlgorithm.Aes128:
                    capabilities.AddCapability(SmimeCapabilities.Aes128Cbc);
                    break;

                case EncryptionAlgorithm.Aes192:
                    capabilities.AddCapability(SmimeCapabilities.Aes192Cbc);
                    break;

                case EncryptionAlgorithm.Aes256:
                    capabilities.AddCapability(SmimeCapabilities.Aes256Cbc);
                    break;

                case EncryptionAlgorithm.Blowfish:
                    capabilities.AddCapability(Blowfish);
                    break;

                case EncryptionAlgorithm.Camellia128:
                    capabilities.AddCapability(NttObjectIdentifiers.IdCamellia128Cbc);
                    break;

                case EncryptionAlgorithm.Camellia192:
                    capabilities.AddCapability(NttObjectIdentifiers.IdCamellia192Cbc);
                    break;

                case EncryptionAlgorithm.Camellia256:
                    capabilities.AddCapability(NttObjectIdentifiers.IdCamellia256Cbc);
                    break;

                case EncryptionAlgorithm.Cast5:
                    capabilities.AddCapability(SmimeCapabilities.Cast5Cbc);
                    break;

                case EncryptionAlgorithm.Des:
                    capabilities.AddCapability(SmimeCapabilities.DesCbc);
                    break;

                case EncryptionAlgorithm.Idea:
                    capabilities.AddCapability(SmimeCapabilities.IdeaCbc);
                    break;

                case EncryptionAlgorithm.RC240:
                    capabilities.AddCapability(SmimeCapabilities.RC2Cbc, 40);
                    break;

                case EncryptionAlgorithm.RC264:
                    capabilities.AddCapability(SmimeCapabilities.RC2Cbc, 64);
                    break;

                case EncryptionAlgorithm.RC2128:
                    capabilities.AddCapability(SmimeCapabilities.RC2Cbc, 128);
                    break;

                case EncryptionAlgorithm.Seed:
                    capabilities.AddCapability(KisaObjectIdentifiers.IdSeedCbc);
                    break;

                case EncryptionAlgorithm.TripleDes:
                    capabilities.AddCapability(SmimeCapabilities.DesEde3Cbc);
                    break;
                    //case EncryptionAlgorithm.Twofish:
                    //	capabilities.AddCapability (Twofish);
                    //	break;
                }
            }

            return(new SmimeCapabilitiesAttribute(capabilities));
        }
	public SmimeCapabilitiesAttribute(SmimeCapabilityVector capabilities)
		: base(SmimeAttributes.SmimeCapabilities, new DerSet(new DerSequence(capabilities.ToAsn1EncodableVector())))
	{
	}