public void TestVerifyPoke() { var vector = "A96E2D8D9B99DBFB934939C097E3AC101C7D48CEC52FCA717B14B19890208592045C430035DD09A31446142E9EA33CF3E6B6E69484B6D2EED500B8389048013491602403DBE7B814EA069667CFADAFE74895217D78037B4A456FAB2CAFD71E69504F4B4509000000000000" .ToByteArray(); var vector2 = "A96E2D8D9B99DBFB934939C097E3AC101C7D48CEC52FCA717B14B19890208592045C430035DD09A31446142E9EA33CF3E6B6E69484B6D2EED500B8389048013491602403DBE7B814EA069667CFADAFE74895217D78037B4A456FAB2CAFD71E690000504F4B4509000000000000" .ToByteArray(); Assert.True(MemeCrypto.VerifyMemePOKE(vector, out var _)); Assert.True(MemeCrypto.VerifyMemePOKE(vector2, out var _)); }
public void TestVerifyMemeBuffer() { var encrypted = "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F4185F2713D5A8BCFFBFF47F86867DF680354913FEFEF08D0D0F1054CB054B508E7DE3AA789AC444D087AB9412CEE965A6D38E45EA010C77FF174F8F8D9993AEAFB9C0616E287B74487E0FF3F1874291B8170C71113971752717F8D188A319EA6" .ToByteArray(); var decrypted = "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7431E10EF7681217C" .ToByteArray(); Assert.True(MemeCrypto.VerifyMemeData(encrypted, out var actual, MemeKeyIndex.PokedexAndSaveFile)); for (var i = 0; i < decrypted.Length; i++) { Assert.Equal(decrypted[i], actual[i]); } }
public static RentalTeam DecryptQRCode(Image QR) { //Read the bytes of the QR code byte[] data = ParseQR(QR); //All data is shifted to the left by 4. Shift the data to the correct location. data = ShiftArray(data); //ZXing has added the header bytes to the raw bytes. These are the first 3, so skip them. var qrue = data.Skip(3).ToArray(); //MEME CRYPTO!!! De-Meme the data if (!MemeCrypto.VerifyMemePOKE(qrue, out var qrt)) { Console.WriteLine("it failed"); return(null); } //unencrypt the data in the plaintext. byte[] qrDec = QR_t(qrt); //build the rental team. return(new RentalTeam(qrDec)); }
public void CanUseMemeCrypto() { Assert.IsTrue(MemeCrypto.CanUseMemeCrypto()); }
public void TestVerifyKnownKeys(MemeKeyIndex keyIndex, byte[] key) { MemeCrypto.VerifyMemeData(key, out _, keyIndex).Should().BeTrue("because they key should be valid"); }