adorsys/datasafe

View on GitHub
docs/diagrams/generic_view.puml

Summary

Maintainability
Test Coverage
@startuml
cloud "Lookup service" {
  package "Lookup DFS" {
  left to right direction
    frame "Data for user 1" {

      frame "Private store \n (encrypted with password)" as privateStoreUser1 {
        [DFS private files storage paths] as mapPrivate1
        [DFS access keys] as privateAccessKey1
      }

      frame "Sharing store \n (encrypted with \n **<&key>system secret + public key**)" as sharingStoreUser1 {
        [Inbox path] as mapInbox1
        [Inbox access key] as publicAccessKey1
      }
    }

    frame "Data for user 2" {

      frame "Private store" as privateStoreUser2 {
        [DFS private files storage paths] as mapPrivate2
        [DFS access keys] as privateAccessKey2
      }

      frame "Sharing store" as sharingStoreUser2 {
        [Inbox path] as mapInbox2
        [Inbox access key] as publicAccessKey2
      }
    }

    frame "Public key storage" {
      left to right direction
      [User 1 public key] as user1publicKey
      [User 2 public key] as user2publicKey
    }
  }
}

actor User1 as user1
actor User2 as user2

card "Datasafe library functionality" {
  package {
    card "User 1 data" as User1data {
      node inboxUsr1 [
        .keystore
        INBOX
      ]
      node filesUsr1 [
        .keystore
        Private files
      ]
    }

    card "User 2 data" as User2data {
      node inboxUsr2 [
        .keystore
        INBOX
      ]
      node filesUsr2 [
        .keystore
        Private files
      ]
    }
  }


  node user1privateFilesAccess [
  <&key> AWS key/secret
  <&folder> s3 data path
  ]

  user1 ==^ privateStoreUser1 : "Read my private files" **<&key>login/password**
  mapPrivate1 --> user1privateFilesAccess
  privateAccessKey1 --> user1privateFilesAccess
  user1privateFilesAccess --> filesUsr1 :  **<&key>login/password**

  node user2shareFilesAccess [
  <&key> AWS key/secret
  <&folder> s3 data path
  ]

  user2 ==^ user1publicKey : Share **<&file>file** with user 1
  user1publicKey --> sharingStoreUser1 : Read storage using User 1 \n **<&key>system secret + public key**
  mapInbox1 --> user2shareFilesAccess
  publicAccessKey1 --> user2shareFilesAccess
  user2shareFilesAccess --> inboxUsr1 : <&file> encrypt with \n **<&key>User 1 public key**
}
@enduml