AElga / GhostPeerShareApp

0 stars 0 forks source link

Session Manager UML Design #19

Open jeffmur opened 5 months ago

jeffmur commented 5 months ago

classDiagram
    class SessionManager {
        -Strategy strategy
        -KeyExchangeManager manager
        startSession(strategy) : void
        endSession() : void

    }
    class Session { 
        <<Abstract>>
        encrypt(plaintext, key) : void
        decrypt(plaintext, key) : void
        receiveEncryptedMessage() : String
        sendEncryptedMessage(message) : String
    }
    class Strategy {
        <<Enumeration>>
        +DH
        +RSA
        +AES
    }

    class RSASession {
        -RSAPublicKey publicKey
        -RSAPrivateKey privateKey
        encrypt(plaintext, key) : ciphertext
        decrypt(plaintext, key) : plaintext
    }

    class DHSession {
        -DHPublicKey publicKey
        -DHPrivateKey privateKey
        encrypt(plaintext, key) : ciphertext
        decrypt(plaintext, key) : plaintext
    }

    class AESSession {
        -AESPublicKey publicKey
        -AESPrivateKey privateKey
        encrypt(plaintext, key) : ciphertext
        decrypt(plaintext, key) : plaintext
    }

    SessionManager <|-- Session
    SessionManager <|-- Strategy
    Session <|-- RSASession
    Session <|-- DHSession
    Session <|-- AESSession