Building: The time is based on the local machine Running: The time is based on the ntp time.google.com
- Generate a random key ENCRYPTION_KEY
- ENCRYPTION_KEY_X = b64Encode(ENCRYPTION_KEY XOR "RDPCloud"))
- ENCRYPTED_{SECRET_VARIABLE} = b64Encode({SECRET_VARIABLE} XOR ENCRYPTION_KEY_X)
- SIGNATURE = b64Encode((concatenate all ENCRYPTED_{SECRET_VARIABLE} + "SIGNATURE") XOR ENCRYPTION_KEY_X)
- Use the key ENCRYPTION_KEY
- ENCRYPTION_KEY_X = b64Encode(ENCRYPTION_KEY XOR "RDPCloud"))
- Verify signature: SIGNATURE == b64Encode((concatenate all ENCRYPTED_{SECRET_VARIABLE} + "SIGNATURE") XOR ENCRYPTION_KEY_X)
- {SECRET_VARIABLE} = b64Decode(ENCRYPTED_{SECRET_VARIABLE}) XOR ENCRYPTION_KEY_X
garble is used for obfuscation
- Different clients/servers accross different languages does not have to be exactly the same. Example: client/go offers a UI (within a webserver) but client/php does not. Features are implemented based on the need and each language can have different flavors with different functionalities