benaadams / System.Ben

Who says you can't be super fast and super secure
MIT License
142 stars 23 forks source link

Needs to be factored correctly #25

Open davkean opened 7 years ago

davkean commented 7 years ago

I've noticed that you have a single binary System.Ben.dll. As it stands, this won't work across the breadth of platforms that run .NET; phones, desktops, nano servers, fridges and Phony's new Toastmaster 3000.

I'd recommend factoring this out into multiple assemblies:

Assembly Description
System.Ben.dll Type-forwarding facade that forwards onto the other dlls for compatibility
System.Ben.Core.dll Core API containing exchange types that runs everywhere
System.Ben.Core.Extensions.dll Core API containing extension types that runs everywhere
System.Ben.Devices.dll API containing types for devices that are smaller enough to fit in a pants pocket
System.Ben.Extensions.dll API containing extensions types for devices that that are larger than a box of cereal
System.Ben.Kitchen.dll API containing types for devices that live permanently in a kitchen
System.Ben.FireGuard.dll API containing types for devices that have a history of catching on fire, or catching things on fire
System.Ben.SecureString.dll Extensions for devices that ship with SecureString
System.Ben.Extensions.Abstractions.Interfaces.IBen Contains the IBen (coming in v2) interface separated out for sharing between unrelated open source libraries

@terrajobst to setup an architecture review, @blowdart for the security side of things.

NickCraver commented 7 years ago

Can you define "permanently"? Sometimes our Optigrill leaves our kitchen for another kitchen, but it's always in a kitchen, where does this fall in the distribution list? Also, which of these is best for running my botnet?

alexwiese commented 7 years ago

This code is too secure to run on any IoT device.

davkean commented 7 years ago

Forgot about the IBen assembly, added it.

@NickCraver Good point, I'll bring this up in the next Framework Design Core meeting. My feeling is that we'll support System.Ben.Kitchen.dll on it. We're also considering adding support for System.Ben.Kitchen on phones, as turns out 43% of people charge their phone in their kitchen.

blowdart commented 7 years ago

I believe you need a System.Ben.RolledMyOwnCrypto library, plus appropriate interface project.