• API Overview
  • EBICS API
  • FinTS API
  • XS2A API
  • SEPA API
Search Results for

    Class EbicsFileSpoolerAccessControlList

    Inheritance
    System.Object
    EbicsElement
    EbicsFileSpoolerAccessControlList
    Implements
    System.Collections.Generic.IEnumerable<EbicsFileSpoolerAccessControlEntry>
    System.Collections.IEnumerable
    Inherited Members
    EbicsElement.BuildXmlDocument(EbicsVersion)
    EbicsElement.Load(Stream, EbicsVersion)
    EbicsElement.Load(String, EbicsVersion)
    EbicsElement.Save(Stream, EbicsVersion)
    EbicsElement.Save(String, EbicsVersion)
    EbicsElement.FromBuffer(EbicsDataBuffer, EbicsVersion)
    EbicsElement.ToBuffer(EbicsVersion)
    System.Object.Equals(System.Object)
    System.Object.Equals(System.Object, System.Object)
    System.Object.GetHashCode()
    System.Object.GetType()
    System.Object.MemberwiseClone()
    System.Object.ReferenceEquals(System.Object, System.Object)
    System.Object.ToString()
    Namespace: Subsembly.EBICS
    Assembly: Subsembly.EBICS.Core.dll
    Syntax
    public class EbicsFileSpoolerAccessControlList : EbicsElement, IEnumerable<EbicsFileSpoolerAccessControlEntry>, IEnumerable
    Remarks

    All files stored in the EbicsFileSpooler folder and all its sub-folders may be optionally encrypted and protected by individual user passwords. Only the entire folder tree with all its files can be protected, or none at all. It is not possible to protect some folders only.

    If the storage folders are protected, then a ".access" (Access Control List) file exists at the root folder, and optionally at one or more sub-folders. A ".access" file contains entries for all users that have access to this folder, and implicitly also to all sub-folders of this folder. Hence, all users listed in the root ".access" file have access to the complete file spooler folder tree.

    The root ".access" file must contain at least one entry for the "root" user. The "root" user has always access to the entire folder tree and is responsible for managing the other users access control list entries. The name of the root user is hard coded as "root" and cannot be changed. The access control list entry of the root user holds the root master key for encryption.

    At the time when file protection is set up for the file spooler, the initial password of the "root" user is set and a master encryption key is created. Then all files that are already existing in the folder tree are encrypted with this master key. After that set up process is completed, it is no longer possible to access any files contained in the spooler folders without presenting valid user credentials.

    IMPLEMENTATION NOTES

    The root master key is used to derive individual folder encryption keys, based on the individual folder path and name. A folder key is computed from the parent folder key and the folder name using a one-way hash function:

    folder_key = hash(parent_folder_key, folder_name)
    That way, every folder has its own individual encryption key. Still all folder keys can be derived from the root master key. As a one-way hash function is employed, it is not possible to derive a parent folder key from a folder key.

    For each user in the user access control list the following tuple is stored.

    {user_name, hash(user_password), enc(folder-key, user_password)}
    So the actual folder key is stored separately for every user, encrypted by the users password. Only when presenting the correct user name and corresponding password, the folder key can be decrypted and used to decrypt the files in this folder. Note that the folder key may also be used to derive any sub-folder keys. Hence, a user implicitly has access to all sub-folders, too.

    ISSUES

    Technically a user could create other users with the same privileges. Would be better if only the "root" user could create/manage other users.

    Currently there are no sub-folders below the Partner-ID folder. Maybe it would be better to have additional sub-folders per account IBAN.

    Maybe there should be a separate ".root" file that solely holds the root users credentials.

    Properties

    Count

    Declaration
    public int Count { get; }
    Property Value
    Type Description
    System.Int32

    Methods

    AddAccessControlEntry(EbicsFileSpoolerAccessControlEntry)

    Declaration
    public void AddAccessControlEntry(EbicsFileSpoolerAccessControlEntry aACE)
    Parameters
    Type Name Description
    EbicsFileSpoolerAccessControlEntry aACE

    BuildXml(XmlDocument, EbicsVersion)

    Declaration
    public override XmlElement BuildXml(XmlDocument xmlDocument, EbicsVersion nVersion)
    Parameters
    Type Name Description
    System.Xml.XmlDocument xmlDocument
    EbicsVersion nVersion
    Returns
    Type Description
    System.Xml.XmlElement
    Overrides
    EbicsElement.BuildXml(XmlDocument, EbicsVersion)

    DeleteUser(String)

    Declaration
    public bool DeleteUser(string sUserName)
    Parameters
    Type Name Description
    System.String sUserName
    Returns
    Type Description
    System.Boolean

    FindUser(String)

    Declaration
    public EbicsFileSpoolerAccessControlEntry FindUser(string sUserName)
    Parameters
    Type Name Description
    System.String sUserName
    Returns
    Type Description
    EbicsFileSpoolerAccessControlEntry

    GetEnumerator()

    Declaration
    public IEnumerator<EbicsFileSpoolerAccessControlEntry> GetEnumerator()
    Returns
    Type Description
    System.Collections.Generic.IEnumerator<EbicsFileSpoolerAccessControlEntry>

    ParseXml(XmlElement, EbicsVersion)

    Declaration
    public override void ParseXml(XmlElement xmlElement, EbicsVersion nVersion)
    Parameters
    Type Name Description
    System.Xml.XmlElement xmlElement
    EbicsVersion nVersion
    Overrides
    EbicsElement.ParseXml(XmlElement, EbicsVersion)

    Explicit Interface Implementations

    IEnumerable.GetEnumerator()

    Declaration
    IEnumerator IEnumerable.GetEnumerator()
    Returns
    Type Description
    System.Collections.IEnumerator

    Implements

    System.Collections.Generic.IEnumerable<T>
    System.Collections.IEnumerable
    In This Article
    Back to top Copyright 2009-2025 Subsembly GmbH