Example #1
0
        public async Task <byte[]> DecryptToBytes(ICipherText cipherText, IPublicKey publicKey, ISecretKey secretKey)
        {
            try
            {
                var cipherTextFile = await LocalHost.WriteFileAsync(cipherText.Value);

                var publicKeyFile = await LocalHost.WriteFileAsync(publicKey.Value);

                var secretKeyFile = await LocalHost.WriteFileAsync(secretKey.Value);

                var messageFile = LocalHost.GetRandomFilename();

                await LocalHost.RunProcessAsync("cpabe-dec", $"-o {messageFile} {publicKeyFile} {secretKeyFile} {cipherTextFile}");

                var messageBytes = await LocalHost.ReadFileAsync(messageFile);

                File.Delete(publicKeyFile);
                File.Delete(secretKeyFile);

                return(messageBytes);
            }
            catch (Exception exception)
            {
                if (exception.Message.Contains("cannot decrypt"))
                {
                    throw new UnathorizedAttributesAccessException();
                }
                throw new ABESchemeException("Error has occured during decryption", exception);
            }
        }
Example #2
0
        public async Task <string> Decrypt(ICipherText cipherText, IPublicKey publicKey, ISecretKey secretKey)
        {
            var res = await DecryptToBytes(cipherText, publicKey, secretKey);

            return(Encoding.UTF8.GetString(res));
        }