/// <summary> /// Constructs the QcStatement from <see cref="Psd2CertificateAttributes "/>. /// </summary> /// <param name="type"></param> public Psd2QcStatement(Psd2CertificateAttributes type) : base(new DerAsnType[0]) { var rolesList = new List <DerAsnSequence>(); foreach (var roleName in type.Roles) { var id = new DerAsnObjectIdentifier(DerAsnIdentifiers.Primitive.ObjectIdentifier, Oid2Array(GetPsd2Oid(roleName))); var name = new DerAsnUtf8String(roleName); var role = new DerAsnSequence(new DerAsnType[] { id, name }); rolesList.Add(role); } var rolesOfPSP = new DerAsnSequence(rolesList.ToArray()); //RolesOfPSP ::= SEQUENCE OF RoleOfPSP var ncaName = new DerAsnUtf8String(type.AuthorityName); var ncaId = new DerAsnUtf8String(type.AuthorizationNumber.ToString()); var typeSequence = new DerAsnSequence(new DerAsnType[] { rolesOfPSP, ncaName, ncaId }); var psd2QstatementOid = new DerAsnObjectIdentifier(DerAsnIdentifiers.Primitive.ObjectIdentifier, Oid2Array(Oid_PSD2_QcStatement)); Value = new DerAsnType[] { psd2QstatementOid, typeSequence }; }
/// <summary> /// Constructs the QcStatement from <see cref="Psd2Attributes "/>. /// </summary> /// <param name="psd2"></param> public Psd2QcStatement(Psd2Attributes psd2) : base(Array.Empty <DerAsnType>()) { var rolesList = new List <DerAsnSequence>(); foreach (var roleName in psd2.Roles) { var id = new DerAsnObjectIdentifier(DerAsnIdentifiers.Primitive.ObjectIdentifier, GetPsd2Oid(roleName).OidToArray()); var name = new DerAsnUtf8String(roleName); var role = new DerAsnSequence(new DerAsnType[] { id, name }); rolesList.Add(role); } var rolesOfPSP = new DerAsnSequence(rolesList.ToArray()); //RolesOfPSP ::= SEQUENCE OF RoleOfPSP var ncaName = new DerAsnUtf8String(psd2.AuthorityName); var ncaId = new DerAsnUtf8String(psd2.AuthorizationId.ToString()); var typeSequence = new DerAsnSequence(new DerAsnType[] { rolesOfPSP, ncaName, ncaId }); var psd2QstatementOid = new DerAsnObjectIdentifier(DerAsnIdentifiers.Primitive.ObjectIdentifier, Oid_PSD2_QcStatement.OidToArray()); Value = new DerAsnType[] { psd2QstatementOid, typeSequence }; }