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); }
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)); }