/// <summary> /// Constructs the QcStatement so it can be added to a certificate. /// </summary> public QcTypeStatement(QcTypeIdentifiers type) : base(Array.Empty <DerAsnType>()) { var oid = new DerAsnObjectIdentifier(DerAsnIdentifiers.Primitive.ObjectIdentifier, Oid_QcType.OidToArray()); var oidType = new DerAsnObjectIdentifier(DerAsnIdentifiers.Primitive.ObjectIdentifier, (Oid_QcType + "." + (int)type).OidToArray()); Value = new DerAsnType[] { oid, new DerAsnSequence(new DerAsnType[] { oidType }) }; }
/// <summary> /// DTO encapsulating all statements found inside a <see cref="QualifiedCertificateStatementsExtension"/> /// </summary> /// <param name="isCompliant"><b>QcCompliant</b>. True is the cert is European Qualified Certificate otherwize false</param> /// <param name="limit"><b>QcLimitValue</b>. Monetary value </param> /// <param name="retentionPeriod"><b>QcRetentionPeriod</b></param> /// <param name="isQSCD"><b>QcSSCD</b></param> /// <param name="pdsLocations"><b>QcPds</b></param> /// <param name="type"><b>QcType</b></param> /// <param name="psd2"><b>PSD2 QcStatement</b></param> public QualifiedCertificateStatements(bool isCompliant, QcMonetaryValue limit, int retentionPeriod, bool isQSCD, IEnumerable <PdsLocation> pdsLocations, QcTypeIdentifiers type, Psd2Attributes psd2) { IsCompliant = isCompliant; LimitValue = limit; RetentionPeriod = retentionPeriod; IsQSCD = isQSCD; PdsLocations = pdsLocations.ToArray(); Type = type; Psd2Type = psd2; }
/// <summary> /// Used to create the extension from typed model /// </summary> /// <param name="isCompliant"><b>QcCompliant</b>. True is the cert is European Qualified Certificate otherwize false</param> /// <param name="limit"><b>QcLimitValue</b>. Monetary value </param> /// <param name="retentionPeriod"><b>QcRetentionPeriod</b></param> /// <param name="isQSCD"><b>QcSSCD</b></param> /// <param name="pdsLocations"><b>QcPds</b></param> /// <param name="type"><b>QcType</b></param> /// <param name="psd2"><b>PSD2 QcStatement</b></param> /// <param name="critical"></param> public QualifiedCertificateStatementsExtension(bool isCompliant, QcMonetaryValue limit, int retentionPeriod, bool isQSCD, IEnumerable <PdsLocation> pdsLocations, QcTypeIdentifiers type, Psd2Attributes psd2, bool critical) { Oid = new Oid(Oid_QC_Statements, "Qualified Certificate Statements"); Critical = critical; var statements = new List <DerAsnSequence>(); if (isCompliant) { statements.Add(new QcComplianceStatement()); } if (retentionPeriod > 0) { statements.Add(new QcRetentionPeriodStatement(retentionPeriod)); } if (limit != null) { statements.Add(new QcLimitValueStatement(limit)); } if (isQSCD) { statements.Add(new QcSSCDStatement()); } statements.Add(new QcTypeStatement(type)); if (pdsLocations?.Any() == true) { statements.Add(new QcPdsStatement(pdsLocations)); } if (psd2 != null) { statements.Add(new Psd2QcStatement(psd2)); } RawData = DerConvert.Encode(new DerAsnSequence(statements.ToArray())).ToArray(); _Statements = new QualifiedCertificateStatements(isCompliant, limit, retentionPeriod, isQSCD, pdsLocations, type, psd2); _decoded = true; }