Files
SuperVPN/output/Libraries/BouncyCastle.Crypto/Org/BouncyCastle/Cms/DefaultSignedAttributeTableGenerator.cs
2025-10-09 09:57:24 +09:00

64 lines
2.0 KiB
C#

using System;
using System.Collections;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Cms;
using Org.BouncyCastle.Utilities;
namespace Org.BouncyCastle.Cms;
public class DefaultSignedAttributeTableGenerator : CmsAttributeTableGenerator
{
private readonly IDictionary table;
public DefaultSignedAttributeTableGenerator()
{
table = Platform.CreateHashtable();
}
public DefaultSignedAttributeTableGenerator(AttributeTable attributeTable)
{
if (attributeTable != null)
{
table = attributeTable.ToDictionary();
}
else
{
table = Platform.CreateHashtable();
}
}
protected virtual Hashtable createStandardAttributeTable(IDictionary parameters)
{
Hashtable hashtable = new Hashtable(table);
DoCreateStandardAttributeTable(parameters, hashtable);
return hashtable;
}
private void DoCreateStandardAttributeTable(IDictionary parameters, IDictionary std)
{
if (parameters.Contains(CmsAttributeTableParameter.ContentType) && !std.Contains(CmsAttributes.ContentType))
{
DerObjectIdentifier obj = (DerObjectIdentifier)parameters[CmsAttributeTableParameter.ContentType];
Org.BouncyCastle.Asn1.Cms.Attribute attribute = new Org.BouncyCastle.Asn1.Cms.Attribute(CmsAttributes.ContentType, new DerSet(obj));
std[attribute.AttrType] = attribute;
}
if (!std.Contains(CmsAttributes.SigningTime))
{
Org.BouncyCastle.Asn1.Cms.Attribute attribute2 = new Org.BouncyCastle.Asn1.Cms.Attribute(CmsAttributes.SigningTime, new DerSet(new Time(DateTime.UtcNow)));
std[attribute2.AttrType] = attribute2;
}
if (!std.Contains(CmsAttributes.MessageDigest))
{
byte[] str = (byte[])parameters[CmsAttributeTableParameter.Digest];
Org.BouncyCastle.Asn1.Cms.Attribute attribute3 = new Org.BouncyCastle.Asn1.Cms.Attribute(CmsAttributes.MessageDigest, new DerSet(new DerOctetString(str)));
std[attribute3.AttrType] = attribute3;
}
}
public virtual AttributeTable GetAttributes(IDictionary parameters)
{
IDictionary attrs = createStandardAttributeTable(parameters);
return new AttributeTable(attrs);
}
}