We value your input!
Please participate in Archicad 28 Home Screen and Tooltips/Quick Tutorials survey

Archicad C++ API
About Archicad add-on development using the C++ API.
SOLVED!

Add-On license handling

BenjiDev
Enthusiast

Lets say you have coded an Add-On that you want to sell. In that case you probably need some licensing solution. Does GRAPHISOFT provide any help with this? For example some way to associate your Add-On license with an Archicad license. 

 

One idea that does not involve GRAPHISOFT is having a custom license server that generates license keys for the specific Add-On. When the Add-On is opened the user enters the Add-On license key which is sent (along with some kind of user id provided by the C++ API) back to the license server for validation. The user id could be the serial number of the Archicad license "ACAPI_Licensing_GetSerialNumber", but I am not sure if it is OK to send it to a third-party. 

 

Anyway, does GRAPHISOFT provide any ready-made solution for this? How does paid Add-Ons typically handle it?

 

 

 

 

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Solution
Joel Buehler
Enthusiast

this is a great question. two things to consider:

 

1.  there is a add-on shop on the roadmap. we as developer can hope that there will be some form of payment and licensing.  but we will see

 

2. the technical implemention of a license handling is a challenge, of course 🙂 one developer implemented a very cool system with the serial number. he might will comment on that.

for my plugin, if i decide to go further with it, i will implement a login functionallity in the Plugin itself and a Webpage where you can manage your subscription. Like BIM-Collab. 

 

 

View solution in original post

4 REPLIES 4
Solution
Joel Buehler
Enthusiast

this is a great question. two things to consider:

 

1.  there is a add-on shop on the roadmap. we as developer can hope that there will be some form of payment and licensing.  but we will see

 

2. the technical implemention of a license handling is a challenge, of course 🙂 one developer implemented a very cool system with the serial number. he might will comment on that.

for my plugin, if i decide to go further with it, i will implement a login functionallity in the Plugin itself and a Webpage where you can manage your subscription. Like BIM-Collab. 

 

 

BenjiDev
Enthusiast

Hey Joel,

Alright was not aware an Add-On shop was on the roadmap, that's great! Login system would be cool especially if you have multiple Add-Ons. 

Hi Benji, Hi Joel,

 


@Joel Buehler wrote:

2. the technical implemention of a license handling is a challenge, of course 🙂 one developer implemented a very cool system with the serial number. he might will comment on that

I'm doing it like that, so maybe you were referring to me 😅

 

A rough sketch of how I do it:

  • Write a "license message" with all the information I want (e.g. Key-ID, nr. Seats, time limit etc.)
  • Sign the license message with a private key and write both message and it's signature into a file
  • User copies the file next to Add-On installation
  • Add-On checks for file and reads message + signature
  • Compare signature of message with public key. The public key can be embedded in the Add-On
  • Compare message content with info from running AC instance

For signing and validating the signature I'm using cryptopp.

 

Unfortunately there are a lot of different scenarios for users, especially with software keys. E.g. they have multiple software keys with different IDs or they have one Software Key-ID with multiple seats etc. And also mixing hardware keys and software keys.

I think dealing with the key-id of customers is "safe", since the key-id alone doesn't give you anything. It's just there to identify the key as far as I know. You'll always need either a hardware dongle or a software key itself to be able to use the key.

You could still always send an encrypted version of the key-id to be safer.

 

Hope that helps,
Bernd

Hey Bernd, 

Thanks for the overview.

That is quite nice, no need to ask a server to authorize the user with your scheme.

/Benji