summary refs log tree commit diff
path: root/crypto/src/asn1/cms/KemRecipientInfo.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/asn1/cms/KemRecipientInfo.cs')
-rw-r--r--crypto/src/asn1/cms/KemRecipientInfo.cs28
1 files changed, 13 insertions, 15 deletions
diff --git a/crypto/src/asn1/cms/KemRecipientInfo.cs b/crypto/src/asn1/cms/KemRecipientInfo.cs
index 4f771784a..ccfae719c 100644
--- a/crypto/src/asn1/cms/KemRecipientInfo.cs
+++ b/crypto/src/asn1/cms/KemRecipientInfo.cs
@@ -62,27 +62,25 @@ namespace Org.BouncyCastle.Asn1.Cms
 
         private KemRecipientInfo(Asn1Sequence seq)
         {
-            int count = seq.Count;
+            int count = seq.Count, pos = 0;
             if (count < 8 || count > 9)
                 throw new ArgumentException("Bad sequence size: " + count, nameof(seq));
 
-            int index = 0;
+            m_cmsVersion = DerInteger.GetInstance(seq[pos++]);
+            m_rid = RecipientIdentifier.GetInstance(seq[pos++]);
+            m_kem = AlgorithmIdentifier.GetInstance(seq[pos++]);
+            m_kemct = Asn1OctetString.GetInstance(seq[pos++]);
+            m_kdf = AlgorithmIdentifier.GetInstance(seq[pos++]);
+            m_kekLength = DerInteger.GetInstance(seq[pos++]);
+            m_ukm = Asn1Utilities.ReadOptionalContextTagged(seq, ref pos, 0, true, Asn1OctetString.GetInstance);
+            m_wrap = AlgorithmIdentifier.GetInstance(seq[pos++]);
+            m_encryptedKey = Asn1OctetString.GetInstance(seq[pos++]);
+
+            if (pos != count)
+                throw new ArgumentException("Unexpected elements in sequence", nameof(seq));
 
-            m_cmsVersion = DerInteger.GetInstance(seq[index++]);
             if (!m_cmsVersion.HasValue(0))
                 throw new ArgumentException("Unsupported version (hex): " + m_cmsVersion.Value.ToString(16));
-
-            m_rid = RecipientIdentifier.GetInstance(seq[index++]);
-            m_kem = AlgorithmIdentifier.GetInstance(seq[index++]);
-            m_kemct = Asn1OctetString.GetInstance(seq[index++]);
-            m_kdf = AlgorithmIdentifier.GetInstance(seq[index++]);
-            m_kekLength = DerInteger.GetInstance(seq[index++]);
-            m_ukm = Asn1Utilities.ReadOptionalContextTagged(seq, ref index, 0, true, Asn1OctetString.GetInstance);
-            m_wrap = AlgorithmIdentifier.GetInstance(seq[index++]);
-            m_encryptedKey = Asn1OctetString.GetInstance(seq[index++]);
-
-            if (index != count)
-                throw new ArgumentException("Unexpected elements in sequence", nameof(seq));
         }
 
         public RecipientIdentifier RecipientIdentifier => m_rid;