Example #1
0
        public async Task <bool> initializeEncryptionVariables()
        {
            string response = await new HttpRequester().RetrieveMessage("/connect");

            JsonSerializerOptions serializerOptions = new JsonSerializerOptions();

            serializerOptions.Converters.Add(new BigIntegerConverter());
            InitialPackageContainer initialPackageContainer = JsonSerializer.Deserialize <InitialPackageContainer>(
                response,
                serializerOptions);

            if (!Verifying.verifyMessage(
                    initialPackageContainer.signature, JsonSerializer.Serialize(
                        initialPackageContainer.initialPackage,
                        serializerOptions
                        ),
                    initialPackageContainer.initialPackage.ServerPuk,
                    initialPackageContainer.initialPackage.EllipticCurve))
            {
                return(false);
            }

            ClientVariables.Puk = KeyGeneration.calculatePublicKey(
                ClientVariables.Prk, initialPackageContainer.initialPackage.EllipticCurve);
            ClientVariables.SharedKey = KeyGeneration.calculateMasterKey(
                ClientVariables.Prk, initialPackageContainer.initialPackage.ServerPuk,
                initialPackageContainer.initialPackage.EllipticCurve);
            ClientVariables.EllipticCurve = initialPackageContainer.initialPackage.EllipticCurve;
            ClientVariables.NiosKey       = initialPackageContainer.initialPackage.NiosKey;
            return(true);
        }
Example #2
0
        private string getInitialPackage()
        {
            InitialPackage        initialPackage    = EncryptionVariables.initialPackage;
            JsonSerializerOptions serializerOptions = new JsonSerializerOptions();

            serializerOptions.Converters.Add(new BigIntegerConverter());
            string initialPackageJson = JsonSerializer.Serialize(initialPackage, serializerOptions);

            Signature signature = Signing.signMessage(initialPackageJson, EncryptionVariables.EllipticCurveForClient,
                                                      EncryptionVariables.PrkcForClient);
            InitialPackageContainer container = new InitialPackageContainer()
            {
                initialPackage = initialPackage, signature = signature
            };

            return(JsonSerializer.Serialize(container, serializerOptions));
        }