diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2024-07-01 20:31:14 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2024-07-01 20:31:14 +0700 |
commit | 192a98faa4536772b03a5cd59b6e4ab4a2ec2461 (patch) | |
tree | 9a254e2c0d7ca92b7e8108c554c2c8dbc547f79d /crypto/src/asn1/DerSequence.cs | |
parent | Refactoring in Asn1.X500 (diff) | |
download | BouncyCastle.NET-ed25519-192a98faa4536772b03a5cd59b6e4ab4a2ec2461.tar.xz |
Asn1Sequence subclass static methods
Diffstat (limited to 'crypto/src/asn1/DerSequence.cs')
-rw-r--r-- | crypto/src/asn1/DerSequence.cs | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/crypto/src/asn1/DerSequence.cs b/crypto/src/asn1/DerSequence.cs index 4a4aee434..a6ecb3ffa 100644 --- a/crypto/src/asn1/DerSequence.cs +++ b/crypto/src/asn1/DerSequence.cs @@ -19,13 +19,24 @@ namespace Org.BouncyCastle.Asn1 case 1: return FromSequence(sequences[0]); default: - return FromElements(ConcatenateElements(sequences)); + return WithElements(ConcatenateElements(sequences)); } } - internal static DerSequence FromElements(Asn1Encodable[] elements) + public static DerSequence FromElements(Asn1Encodable[] elements) { - return elements.Length < 1 ? Empty : new DerSequence(elements, clone: false); + if (elements == null) + throw new ArgumentNullException(nameof(elements)); + + return elements.Length < 1 ? Empty : new DerSequence(elements); + } + + public static DerSequence FromElementsOptional(Asn1Encodable[] elements) + { + if (elements == null) + return null; + + return elements.Length < 1 ? Empty : new DerSequence(elements); } public static DerSequence FromSequence(Asn1Sequence sequence) @@ -33,7 +44,7 @@ namespace Org.BouncyCastle.Asn1 if (sequence is DerSequence derSequence) return derSequence; - return FromElements(sequence.m_elements); + return WithElements(sequence.m_elements); } public static DerSequence FromVector(Asn1EncodableVector elementVector) @@ -41,6 +52,16 @@ namespace Org.BouncyCastle.Asn1 return elementVector.Count < 1 ? Empty : new DerSequence(elementVector); } + public static DerSequence Map(Asn1Sequence sequence, Func<Asn1Encodable, Asn1Encodable> func) + { + return sequence.Count < 1 ? Empty : new DerSequence(sequence.MapElements(func), clone: false); + } + + internal static DerSequence WithElements(Asn1Encodable[] elements) + { + return elements.Length < 1 ? Empty : new DerSequence(elements, clone: false); + } + /** * create an empty sequence */ |