IQryptParse lets you transparently make queries to Parse service without explicitly encrypt/decrypt values. You can query encrypted values and get ParseObjects through ParseQuery extension methods that starts with "IQrypt". Following methods are available:

  • IQryptWhereEqualTo
  • IQryptWhereNotEqualTo
  • IQryptWhereGreaterThan
  • IQryptWhereGreaterThanOrEqualTo
  • IQryptWhereLessThan
  • IQryptWhereLessThanOrEqualTo
  • IQryptWhereContainedIn
  • IQryptWhereContainsAll
  • IQryptWhereNotContainedIn

Example:

 ParseQuery<IQryptParseObject> query = new ParseQuery<IQryptParseObject>("Armor")
                                      .IQryptWhereEqualTo("myIntField", 30);
//30 value is encrypted first and then the encrypted value is sent to the Parse service

            var qVal = await query.FindAsync();
            foreach (ParseObject o in qVal )
            {
                Assert.AreEqual(30, o["myIntField"]);
            }

Different encryption schemes allows different query types:

  • OPE - order preserving encryption - lets you do following types of queries:

    • IQryptWhereEqualTo
    • IQryptWhereNotEqualTo
    • IQryptWhereGreaterThan
    • IQryptWhereGreaterThanOrEqualTo
    • IQryptWhereLessThan
    • IQryptWhereLessThanOrEqualTo
    • IQryptWhereContainedIn
    • IQryptWhereContainsAll
    • IQryptWhereNotContainedIn
  • DET - deterministic encryption - lets you do following types of queries:

    • IQryptWhereEqualTo
    • IQryptWhereNotEqualTo
    • IQryptWhereContainedIn
    • IQryptWhereContainsAll
    • IQryptWhereNotContainedIn
  • RND - randomized encryption - does now allow any types of queries.

You can find more information about queries on Parse documentation.