private LdsSecurityObject( Asn1Sequence seq) { if (seq == null || seq.Count == 0) throw new ArgumentException("null or empty sequence passed."); IEnumerator e = seq.GetEnumerator(); // version e.MoveNext(); version = DerInteger.GetInstance(e.Current); // digestAlgorithmIdentifier e.MoveNext(); digestAlgorithmIdentifier = AlgorithmIdentifier.GetInstance(e.Current); e.MoveNext(); Asn1Sequence datagroupHashSeq = Asn1Sequence.GetInstance(e.Current); if (version.Value.Equals(BigInteger.One)) { e.MoveNext(); versionInfo = LdsVersionInfo.GetInstance(e.Current); } CheckDatagroupHashSeqSize(datagroupHashSeq.Count); datagroupHash = new DataGroupHash[datagroupHashSeq.Count]; for (int i= 0; i< datagroupHashSeq.Count; i++) { datagroupHash[i] = DataGroupHash.GetInstance(datagroupHashSeq[i]); } }
private LdsSecurityObject(Asn1Sequence seq) { if (seq == null || seq.Count == 0) { throw new ArgumentException("null or empty sequence passed."); } IEnumerator enumerator = seq.GetEnumerator(); enumerator.MoveNext(); version = DerInteger.GetInstance(enumerator.Current); enumerator.MoveNext(); digestAlgorithmIdentifier = AlgorithmIdentifier.GetInstance(enumerator.Current); enumerator.MoveNext(); Asn1Sequence instance = Asn1Sequence.GetInstance(enumerator.Current); if (version.Value.Equals(BigInteger.One)) { enumerator.MoveNext(); versionInfo = LdsVersionInfo.GetInstance(enumerator.Current); } CheckDatagroupHashSeqSize(instance.Count); datagroupHash = new DataGroupHash[instance.Count]; for (int i = 0; i < instance.Count; i++) { datagroupHash[i] = DataGroupHash.GetInstance(instance[i]); } }
public LdsSecurityObject(AlgorithmIdentifier digestAlgorithmIdentifier, DataGroupHash[] datagroupHash, LdsVersionInfo versionInfo) { version = new DerInteger(1); this.digestAlgorithmIdentifier = digestAlgorithmIdentifier; this.datagroupHash = datagroupHash; this.versionInfo = versionInfo; CheckDatagroupHashSeqSize(datagroupHash.Length); }
public LdsSecurityObject( AlgorithmIdentifier digestAlgorithmIdentifier, DataGroupHash[] datagroupHash, LdsVersionInfo versionInfo) { this.version = new DerInteger(1); this.digestAlgorithmIdentifier = digestAlgorithmIdentifier; this.datagroupHash = datagroupHash; this.versionInfo = versionInfo; CheckDatagroupHashSeqSize(datagroupHash.Length); }
private void CheckStatement( LdsSecurityObject so, AlgorithmIdentifier digestAlgorithmIdentifier, DataGroupHash[] datagroupHash, LdsVersionInfo versionInfo) { if (digestAlgorithmIdentifier != null) { if (!so.DigestAlgorithmIdentifier.Equals(digestAlgorithmIdentifier)) { Fail("ids don't match."); } } else if (so.DigestAlgorithmIdentifier != null) { Fail("digest algorithm Id found when none expected."); } if (datagroupHash != null) { DataGroupHash[] datas = so.GetDatagroupHash(); for (int i = 0; i != datas.Length; i++) { if (!datagroupHash[i].Equals(datas[i])) { Fail("name registration authorities don't match."); } } } else if (so.GetDatagroupHash() != null) { Fail("data hash groups found when none expected."); } if (versionInfo != null) { if (!versionInfo.Equals(so.VersionInfo)) { Fail("versionInfo doesn't match"); } } else if (so.VersionInfo != null) { Fail("version info found when none expected."); } }
private void CheckConstruction( LdsSecurityObject so, AlgorithmIdentifier digestAlgorithmIdentifier, DataGroupHash[] datagroupHash, LdsVersionInfo versionInfo) { if (!so.Version.Equals(BigInteger.One)) { Fail("version number not 1"); } CheckStatement(so, digestAlgorithmIdentifier, datagroupHash, versionInfo); so = LdsSecurityObject.GetInstance(so); CheckStatement(so, digestAlgorithmIdentifier, datagroupHash, versionInfo); Asn1Sequence seq = (Asn1Sequence)Asn1Object.FromByteArray( so.ToAsn1Object().GetEncoded()); so = LdsSecurityObject.GetInstance(seq); CheckStatement(so, digestAlgorithmIdentifier, datagroupHash, versionInfo); }
public override void PerformTest() { AlgorithmIdentifier algoId = new AlgorithmIdentifier(OiwObjectIdentifiers.IdSha1); DataGroupHash[] datas = new DataGroupHash[2]; datas[0] = new DataGroupHash(1, new DerOctetString(GenerateHash())); datas[1] = new DataGroupHash(2, new DerOctetString(GenerateHash())); LdsSecurityObject so = new LdsSecurityObject(algoId, datas); CheckConstruction(so, algoId, datas); LdsVersionInfo versionInfo = new LdsVersionInfo("Hello", "world"); so = new LdsSecurityObject(algoId, datas, versionInfo); CheckConstruction(so, algoId, datas, versionInfo); try { LdsSecurityObject.GetInstance(null); } catch (Exception) { Fail("GetInstance() failed to handle null."); } try { LdsSecurityObject.GetInstance(new object()); Fail("GetInstance() failed to detect bad object."); } catch (ArgumentException) { // expected } try { LdsSecurityObject.GetInstance(DerSequence.Empty); Fail("constructor failed to detect empty sequence."); } catch (ArgumentException) { // expected } try { new LdsSecurityObject(algoId, new DataGroupHash[1]); Fail("constructor failed to detect small DataGroupHash array."); } catch (ArgumentException) { // expected } try { new LdsSecurityObject(algoId, new DataGroupHash[LdsSecurityObject.UBDataGroups + 1]); Fail("constructor failed to out of bounds DataGroupHash array."); } catch (ArgumentException) { // expected } }