Rash thoughts about .NET, C#, F# and Dynamics NAV.

"Every solution will only lead to new problems."

Wednesday, 6. March 2013

License all the things with Portable.Licensing 1.0

Filed under: C#,F# — Steffen Forkmann at 10:20 Uhr

"Portable.Licensing is a cross platform open source software licensing framework which allows you to implement licensing into your application or library.

It is targeting the Portable Class Library and thus runs on nearly every .NET/Mono profile including Silverlight, Windows Phone, Windows Store App, Xamarin.iOS, Xamarin.Android, Xamarin.Mac and XBox 360. Use it for your Desktop- (WinForms, WPF, etc.), Console-, Service-, Web- (ASP.NET, MVC, etc.), Mobile (Xamarin.iOS, Xamarin.Android) or even LightSwitch applications."

[Project site]

Yep, you read this correct. This project gives you a free licensing tool for all .NET/mono platforms including stuff like Android and iOS. It’s hosted on github and already on nuget and the Xamarin store, so it’s pretty easy to use – even from F#.

Create a license

There is a really good documentation on the github project page (and there is even a sample implementation for a License Manager app), but just to give you a small glimpse:

Make sure to keep the private key private and distribute the public key with your app.

Validate a license

So try it out and don’t forget to thank Daniel Nauck for this awesome new tool.

Tags: , , ,


  1. […] License all the things with Portable.Licensing 1.0 – Steffen Forkmann highlights Portable.Licensing a cross platform open source software licensing solution, and looks at how easily it can be used, exploring its use from F# […]

    Pingback by The Morning Brew - Chris Alcock » The Morning Brew #1310 — Thursday, 7. March 2013 um 9:33 Uhr

  2. I was thinking about using PPK for licences and have a signed license to make it more secure. Cool to see that there is already a framework for it.

    HOWEVER – it’s “quite easy” (always a question of value for the effort) to use a fake license, even you need to have it signed. Just replace the Public Key in the application with your own. You could even sign all the necessary certificates, as the original key is, by just faking those as well and exchanging them for those in your local certificate store. Any idea how well the Validate function can deal with this?


    Comment by Peter — Thursday, 7. March 2013 um 9:55 Uhr

  3. Hello Peter,

    you can’t stop people from cracking your software! You simply can’t.

    Here is a nice article on why it does not make sense to worry about:


    And here about obfuscation:


    If you still want to check if your assembly was compromised, sign it and add the signature as “AdditionalAttribute” to the license and validate it.

    If you’ve further questions i’m happy to invite you to discuss this in our forums:

    Kind regards,

    Comment by Daniel Nauck — Thursday, 7. March 2013 um 11:32 Uhr

  4. […] The current version of FAKE contains two tasks for Xamarins xpkg format. These are already used in Daniel Nauck’s Portable.Licensing project (read more about this project). […]

    Pingback by New tasks for building Xamarin Components in FAKE – F# Make » Rash thoughts about .NET, C#, F# and Dynamics NAV. — Thursday, 7. March 2013 um 12:53 Uhr

  5. […] Steffen Forkmann shared “License all the things with Portable.Licensing 1.0“. […]

    Pingback by F# Weekly #10, 2013 | Sergey Tihon's Blog — Sunday, 10. March 2013 um 21:04 Uhr

  6. […] to time I have my doubts. My friend Daniel Nauck created a wonderful open source licensing project (my blog post) and now we had to see […]

    Pingback by Don’t be that guy » Rash thoughts about .NET, C#, F# and Dynamics NAV. — Tuesday, 16. April 2013 um 9:21 Uhr

  7. Thanks for sharing your findings. I am using this library now 🙂

    Comment by Quinton — Monday, 10. June 2013 um 12:14 Uhr

RSS feed for comments on this post. | TrackBack URI

Leave a comment

XHTML ( You can use these tags): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> .