DerOtherInfo
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.X509;
namespace Org.BouncyCastle.Crypto.Utilities
{
public sealed class DerOtherInfo
{
public sealed class Builder
{
private readonly AlgorithmIdentifier m_algorithmID;
private readonly Asn1OctetString m_partyUInfo;
private readonly Asn1OctetString m_partyVInfo;
private Asn1TaggedObject m_suppPubInfo;
private Asn1TaggedObject m_suppPrivInfo;
public Builder(AlgorithmIdentifier algorithmID, byte[] partyUInfo, byte[] partyVInfo)
{
m_algorithmID = algorithmID;
m_partyUInfo = DerUtilities.GetOctetString(partyUInfo);
m_partyVInfo = DerUtilities.GetOctetString(partyVInfo);
}
public Builder WithSuppPubInfo(byte[] suppPubInfo)
{
m_suppPubInfo = new DerTaggedObject(false, 0, DerUtilities.GetOctetString(suppPubInfo));
return this;
}
public Builder WithSuppPrivInfo(byte[] suppPrivInfo)
{
m_suppPrivInfo = new DerTaggedObject(false, 1, DerUtilities.GetOctetString(suppPrivInfo));
return this;
}
public DerOtherInfo Build()
{
Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(5);
asn1EncodableVector.Add(m_algorithmID);
asn1EncodableVector.Add(m_partyUInfo);
asn1EncodableVector.Add(m_partyVInfo);
asn1EncodableVector.AddOptional(m_suppPubInfo);
asn1EncodableVector.AddOptional(m_suppPrivInfo);
return new DerOtherInfo(new DerSequence(asn1EncodableVector));
}
}
private readonly DerSequence m_sequence;
private DerOtherInfo(DerSequence sequence)
{
m_sequence = sequence;
}
public byte[] GetEncoded()
{
return m_sequence.GetEncoded();
}
}
}