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)); } }
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()))) { }