init commit

This commit is contained in:
2025-10-09 09:57:24 +09:00
commit 4d551bd74f
6636 changed files with 1218703 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
using System;
using Org.BouncyCastle.Utilities;
namespace Org.BouncyCastle.Asn1.Cms;
public class RecipientInfo : Asn1Encodable, IAsn1Choice
{
internal Asn1Encodable info;
public DerInteger Version
{
get
{
if (info is Asn1TaggedObject)
{
Asn1TaggedObject asn1TaggedObject = (Asn1TaggedObject)info;
return asn1TaggedObject.TagNo switch
{
1 => KeyAgreeRecipientInfo.GetInstance(asn1TaggedObject, explicitly: false).Version,
2 => GetKekInfo(asn1TaggedObject).Version,
3 => PasswordRecipientInfo.GetInstance(asn1TaggedObject, explicitly: false).Version,
4 => new DerInteger(0),
_ => throw new InvalidOperationException("unknown tag"),
};
}
return KeyTransRecipientInfo.GetInstance(info).Version;
}
}
public bool IsTagged => info is Asn1TaggedObject;
public Asn1Encodable Info
{
get
{
if (info is Asn1TaggedObject)
{
Asn1TaggedObject asn1TaggedObject = (Asn1TaggedObject)info;
return asn1TaggedObject.TagNo switch
{
1 => KeyAgreeRecipientInfo.GetInstance(asn1TaggedObject, explicitly: false),
2 => GetKekInfo(asn1TaggedObject),
3 => PasswordRecipientInfo.GetInstance(asn1TaggedObject, explicitly: false),
4 => OtherRecipientInfo.GetInstance(asn1TaggedObject, explicitly: false),
_ => throw new InvalidOperationException("unknown tag"),
};
}
return KeyTransRecipientInfo.GetInstance(info);
}
}
public RecipientInfo(KeyTransRecipientInfo info)
{
this.info = info;
}
public RecipientInfo(KeyAgreeRecipientInfo info)
{
this.info = new DerTaggedObject(explicitly: false, 1, info);
}
public RecipientInfo(KekRecipientInfo info)
{
this.info = new DerTaggedObject(explicitly: false, 2, info);
}
public RecipientInfo(PasswordRecipientInfo info)
{
this.info = new DerTaggedObject(explicitly: false, 3, info);
}
public RecipientInfo(OtherRecipientInfo info)
{
this.info = new DerTaggedObject(explicitly: false, 4, info);
}
public RecipientInfo(Asn1Object info)
{
this.info = info;
}
public static RecipientInfo GetInstance(object o)
{
if (o == null || o is RecipientInfo)
{
return (RecipientInfo)o;
}
if (o is Asn1Sequence)
{
return new RecipientInfo((Asn1Sequence)o);
}
if (o is Asn1TaggedObject)
{
return new RecipientInfo((Asn1TaggedObject)o);
}
throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(o));
}
private KekRecipientInfo GetKekInfo(Asn1TaggedObject o)
{
return KekRecipientInfo.GetInstance(o, o.IsExplicit());
}
public override Asn1Object ToAsn1Object()
{
return info.ToAsn1Object();
}
}