public void TestAsymmetricDecryption() { var someBytes = new byte[32]; new Random().NextBytes(someBytes); const string certId = "E96149FC-3B4F-4E0B-ACED-E715D29961FD"; var key = Convert.FromBase64String(DummyKeyStore.GetPublicKeyLocal(certId)); var cert = new X509Certificate2(); cert.Import(key); byte[] encryptedBytes; using (var provider = (RSACryptoServiceProvider)cert.PublicKey.Key) { encryptedBytes = provider.Encrypt(someBytes, true); } var decryptedBytes = AsymmetricDecryptor.Decrypt(encryptedBytes, certId); Assert.IsTrue(someBytes.SequenceEqual(decryptedBytes)); }
static void Main(string[] args) { const string queueSasKey = "https://testfunctionsfo97a4.queue.core.windows.net/notifqueue?st=2019-09-05T23%3A00%3A14Z&se=2019-10-06T20%3A00%3A00Z&sp=rup&sv=2018-03-28&sig=VgevMRmMB0miZbIQzpOgteyrIlLbwGKfsO48dJ%2F2WtQ%3D"; const string blobSasKey = "https://testfunctionsfo97a4.blob.core.windows.net/notificationblobs?st=2019-08-06T22%3A40%3A12Z&se=2019-09-07T18%3A40%3A00Z&sp=rl&sv=2018-03-28&sr=c&sig=kz5ah8ziqBKn6oyX1FoNihfCSM1fVAc1qvvzwsvjA4c%3D"; var authProvider = AuthSettings.isUserAuthentication ? (MyAuthenticationProvider) new UserAuthenticationProvider() : (MyAuthenticationProvider) new AppOnlyAuthenticationProvider(); GraphServiceClient client = GetAuthenticatedClient(authProvider); var token = authProvider.GetAccessTokenAsync().Result; var subManager = new SubscriptionManager(client, NotificationProcessingSettings.notificationUrl, NotificationProcessingSettings.lifecycleNotificationUrl); //var subs = subManager.GetAllSubscriptionsAsync().Result; subManager.DeleteAllSubscriptionsAsync().Wait(); //var createdSub = subManager.CreateSubscriptionAsync("/users", "updated", "bobState").Result; var createdSub = subManager.CreateSubscriptionAsync("/teams/allMessages", "created,updated", TimeSpan.FromMinutes(58), "bobState", DummyKeyStore.GetPublicKeyLocal(NotificationProcessingSettings.encryptionCertificateId), NotificationProcessingSettings.encryptionCertificateId, true).Result; var messenger = new MessageManager(microsoftGraphCanary, "95432da5-e897-4fd4-8141-3df339ca1141", "19:[email protected]"); var ct = new CancellationToken(); var messengerTask = messenger.StartAsync(ct); Console.WriteLine("Subscription created. Waiting for notifications."); var notifications = NotificationDownloader.LoopOverNotificationsFromQueue(queueSasKey, messengerTask); //var notifications = NotificationDownloader.GetNotificationsFromBlobs(blobSasKey, DateTime.Parse("2019-08-04")); var audiences = new[] { AuthSettings.applicationId }; var validator = new JwtTokenValidator(audiences); validator.InitializeOpenIdConnectConfigurationAsync().Wait(); foreach (var notifContent in notifications) { var p = new NotificationProcessor(notifContent); p.ValidateAllTokens(validator); // renew any subscriptions that require re-authorization foreach (var subId in p.GetSubscriptionsToReauthorize()) { subManager.RenewSubscriptionAsync(subId, TimeSpan.FromMinutes(58)).Wait(); } var results = p.DecryptAllNotifications().ToArray(); // print portions of the content to console, just for fun foreach (var notif in results) { PrintContentToConsole(notif); } } return; }