Contents
Context
A national Gulf carrier wanted an entertainment app for passengers on long journeys, and a news and digital magazine on its website.
Constraints
- Protected content: media encrypted with AES-256 on the device.
- Decrypted media never written to storage, so decryption had to happen as the media played.
- Moderated news: every item checked before it reached the magazine.
Architecture
Components and flows
Components
- Passenger device
- Encrypted media (AES-256)
- In-app local streaming server (decrypts in memory)
- Custom video and audio players
- Android app (Xamarin.Android)
- News and digital magazine
- Fetch
- Moderate
- Publish (ASP.NET MVC, Web API)
- Carrier's website
- Digital magazine
Flows
- Encrypted media to In-app local streaming server
- In-app local streaming server to Custom video and audio players (local URL)
- Custom video and audio players to Android app
- Fetch to Moderate
- Moderate to Publish
- Publish to Digital magazine
- Android app built with Xamarin.Android.
- AES-256 encrypted content.
- In-app local streaming server that decrypts the media and streams it to the custom video and audio players over a local URL; decrypted media is never written to storage.
- A separate news and digital-magazine system for the carrier (ASP.NET MVC and Web API): news fetched, moderated and published to the magazine on the carrier's website, not to the in-flight entertainment system.
Key decisions
-
Decrypt inside the app and stream to the players through a local server, rather than decrypting media to storage.
My role
I was the system architect, team lead and lead developer.
Outcome
A passenger-entertainment app whose media stayed encrypted on the device, and a moderated news and digital magazine on the carrier's website.
Stack
Each links to its entry on the stack page
Ask about this
How did the in-flight entertainment app keep its media protected?
Answers come from the content on this site.
The chat needs JavaScript. Without it, ask through the contact page.