コード例 #1
0
        public static DSTU4145Params GetInstance(Object obj)
        {
            if (obj is DSTU4145Params)
            {
                return((DSTU4145Params)obj);
            }

            if (obj != null)
            {
                Asn1Sequence   seq = Asn1Sequence.GetInstance(obj);
                DSTU4145Params paramsValue;

                if (seq.GetObjectAt(0) is DerObjectIdentifier)
                {
                    paramsValue = new DSTU4145Params(DerObjectIdentifier.GetInstance(seq.GetObjectAt(0)));
                }
                else
                {
                    paramsValue = new DSTU4145Params(DSTU4145ECBinary.GetInstance(seq.GetObjectAt(0)));
                }

                if (seq.Size == 2)
                {
                    paramsValue.dke = Asn1OctetString.GetInstance(seq.GetObjectAt(1)).GetOctets();
                    if (paramsValue.dke.Length != DSTU4145Params.DEFAULT_DKE.Length)
                    {
                        throw new ArgumentException("object parse error");
                    }
                }

                return(paramsValue);
            }

            throw new ArgumentException("object parse error");
        }
コード例 #2
0
        private DSTU4145ECBinary(Asn1Sequence seq)
        {
            int index = 0;

            if (seq.GetObjectAt(index) is Asn1TaggedObject)
            {
                Asn1TaggedObject taggedVersion = (Asn1TaggedObject)seq.GetObjectAt(index);
                if (taggedVersion.IsExplicit() && 0 == taggedVersion.TagNo)
                {
                    version = DerInteger.GetInstance(taggedVersion.GetObject()).Value;
                    index++;
                }
                else
                {
                    throw new ArgumentException("object parse error");
                }
            }
            f = DSTU4145BinaryField.GetInstance(seq.GetObjectAt(index));
            index++;
            a = DerInteger.GetInstance(seq.GetObjectAt(index));
            index++;
            b = Asn1OctetString.GetInstance(seq.GetObjectAt(index));
            index++;
            n = DerInteger.GetInstance(seq.GetObjectAt(index));
            index++;
            bp = Asn1OctetString.GetInstance(seq.GetObjectAt(index));
        }
コード例 #3
0
        private DSTU4145BinaryField(Asn1Sequence seq)
        {
            m = DerInteger.GetInstance(seq.GetObjectAt(0)).PositiveValue.IntValue;

            if (seq.GetObjectAt(1) is DerInteger)
            {
                k = ((DerInteger)seq.GetObjectAt(1)).PositiveValue.IntValue;
            }
            else if (seq.GetObjectAt(1) is Asn1Sequence)
            {
                Asn1Sequence coefs = Asn1Sequence.GetInstance(seq.GetObjectAt(1));

                k = DerInteger.GetInstance(coefs.GetObjectAt(0)).PositiveValue.IntValue;
                j = DerInteger.GetInstance(coefs.GetObjectAt(1)).PositiveValue.IntValue;
                l = DerInteger.GetInstance(coefs.GetObjectAt(2)).PositiveValue.IntValue;
            }
            else
            {
                throw new ArgumentException("object parse error");
            }
        }