Exemple #1
0
        /// <summary>
        /// Deserializes the raw data into the concrete class <see cref="Psd2Attributes"/>.
        /// </summary>
        /// <returns>Deserilized contents</returns>
        public Psd2Attributes Extract()
        {
            var attributes   = new Psd2Attributes();
            var typeSequence = Value.Where(x => x is DerAsnSequence).FirstOrDefault() as DerAsnSequence;
            var roleSequence = typeSequence?.Value.Where(x => x is DerAsnSequence).FirstOrDefault() as DerAsnSequence;
            var ncaName      = typeSequence?.Value[1] as DerAsnUtf8String;
            var ncaId        = typeSequence?.Value[2] as DerAsnUtf8String;

            attributes.AuthorityName   = ncaName.Value;
            attributes.AuthorizationId = NCAId.Parse(ncaId.Value, false);
            foreach (var item in roleSequence.Value)
            {
                if (!(item is DerAsnSequence))
                {
                    continue;
                }
                var role          = item as DerAsnSequence;
                var roleOid       = role.Value[0] as DerAsnObjectIdentifier;
                var roleOidString = string.Join(".", roleOid.Value);
                switch (roleOidString)
                {
                case Oid_PSD2_Roles_PSP_AS: attributes.HasAccountServicing = true; break;

                case Oid_PSD2_Roles_PSP_PI: attributes.HasPaymentInitiation = true; break;

                case Oid_PSD2_Roles_PSP_AI: attributes.HasAccountInformation = true; break;

                case Oid_PSD2_Roles_PSP_IC: attributes.HasIssuingOfCardBasedPaymentInstruments = true; break;
                }
            }
            return(attributes);
        }
Exemple #2
0
        /// <summary>
        /// Supply conversion from <see cref="string"/> to <seealso cref="NCAId"/> otherwise use default implementation
        /// </summary>
        /// <param name="context"></param>
        /// <param name="culture"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            if (value is string)
            {
                return(NCAId.Parse((string)value));
            }

            return(base.ConvertFrom(context, culture, value));
        }
Exemple #3
0
 /// <summary>
 /// Try parse the given <paramref name="text"/> into a <paramref name="ncaId"/>. In case of exception it handles it and returns false
 /// </summary>
 /// <param name="text"></param>
 /// <param name="ncaId"></param>
 /// <returns>true in case of success</returns>
 public static bool TryParse(string text, out NCAId ncaId)
 {
     ncaId = default(NCAId);
     try {
         ncaId = Parse(text);
         return(true);
     } catch {
         return(false);
     }
 }
Exemple #4
0
 /// <summary>
 /// Create the cab forum by providing the NCAId (as defined in PSD2)
 /// </summary>
 /// <param name="identifier"></param>
 public CABForumOrganizationIdentifier(NCAId identifier)
 {
     SchemeIdentifier = identifier.Prefix;
     Country          = identifier.CountryCode;
     Reference        = string.Join('-', new[] { identifier.SupervisionAuthority, identifier.AuthorizationNumber }.Where(x => !string.IsNullOrEmpty(x)));
 }