License generator - Technical Specification

This project is currently in the informational stage. Ideas presented here are subject to change or delete.

Key Manager

License Data

The content of the license depend of the version used

Version 1

This license is a text file - we will count number of jump line (\n)

Content	Line
Owner	1
Max NetWeaver	2
Ip	3
Expiration Date (dd/MM/YYYY)	4
Edit/Dev Mode	5
Perpetual License	6
Max Hana Connector	7

Version 2

This license is a text file - we will count number of jump line (\n)

Content	Line
Owner	1
Max System	2
Ip	3
Expiration Date (dd/MM/YYYY)	4
License Type	5
Perpetual License	6

Version 3

This license is Json with hashed Key

Main table
Key	Value type	Description
uId	long	ClientID used internaly on Key Generator
devMode	int	Special flag for dev Mode
licenseList	JSON	Every license packed
This is the content of eatch licenseList
Key	Value type	Description
productId	long	ProductID ( NETWEAVER / HANA / BUSINESSOBJECTS / AGENT / DATADOG )
trustIp	string	List of ip allowed to use can be list or mask
licenseType	int	Type of License used (Trial/Perpetual/Expiration/OnUseBilling)
internalMode	int	Special flag for internal Mode
endTime	LocalDate	Expiration Date (dd-MM-YYYY)
postCount	int	Number of system/users/agent allowed to run

License Security

Only Private key distribued (License v1/v2)

Version Management

New Version will be started by special symbol who not exist in base64

V1 : None V2 : None V3 : $
Caption	Effect
Invalid	Error showed to user as invalid Key
Error	Error showed to user as typing error
Step by Step	Valid	Error
Check if empty	next	return 01
Trim Space (In start and in end)	next	NaN
Check Length correct	next	return 02

→ Version 1/2 (sKey.Length % 4)

Step by Step v1/2	Valid	Error
Check v3+ header	Goto V3	next
Decrypt License Probe	Valid	Invalid

→ Version 3+

Step by Step v3+	Valid	Error
Check Valid header	next	return 03
Remove header	next	NaN
Decrypt License NG	Valid	Invalid

Decrypt License Probe

Step by Step	Valid	Error
Base64 to char	next	Invalid 001
Use RSA/ECB/PKCS1Padding	next	Invalid 002
Extract hash(Sha-256)	next	Invalid 003
Extract seed	next	NaN
Create Hash from data	next	Invalid 004
Compare Hash to DataHash	next	Invalid 005
Count number of line (More than 6)	next	Invalid 006
Parse License - ASCII	Valid	Invalid 007

Decrypt License NG

Step by Step	Valid	Error
Base64 to char	next	Invalid 001
Extract Key decrypt-key	next	Invalid 008
Decrypt key RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING	next	Invalid 009
Use key AES/GCM/NoPadding for decrypt Data	next	Invalid 010
Check Valid Json Data	next	Invalid 010
Check valid Key exist (HashedName)	next	Invalid 012
Parse License - JSON	next	Invalid 013

WIP