License Service Application Programming Interface (LSAPI) Specification 1.1

Preface

February 14, 1994

Last edited by Lester Waters on January 28, 1993 (rev. 5).

A recent survey by the Software Publishers Association (SPA) asked network administrators what type of software licensing scheme, in a network, they preferred. The responses indicated multiple variations of the lock-out system (concurrent use with counting) as the preferred licensing model. Many software publishers currently license their application software to the individual instead of licensing by concurrent use or by personal use licensing. The advent of software licensing products provides enabling technology releasing software publishers from the technical restrictions on licensing policies. These products make possible a vast array of new licensing models, allowing software publishers to develop licensing policies based on business needs. They also provide policy enforcement as well as facilities to manage licensing resources. As would be expected, the precise details of these features vary widely from one software licensing product to another.

Software licensing is an emerging technology. There are many aspects to software licensing and very few standards exists. Instead of attempting to standardize all aspects of licensing in a single attempt (and thereby eliminate licensing as a product for a few of companies), a more pragmatic approach is being taken. The purpose of this document is to address a small component of the overall puzzle: the API used by software applications that wish to incorporate licensing.

As can be seen from the diagram above, there are many more aspects to be explored in the coming years. And this puzzle diagram does not even include all of the possibilities (such as stand-alone licensing and more). Yet, it is a beginning and the API is a containable problem that can be solved.

This document has been written with the cooperation, input, and support of individuals from a number of companies and associations, including, but not limited to:

Apple Computer, Inc.

Microcomputer Managers Association

Banyan Systems, Inc.

Micrografx, Inc.

Brightwork Development, Inc.

Microsoft, Inc.

Compuserve, Inc.

Netware Masters Group

Digital Equipment Corporation

Novell, Inc.

Funk Software, Inc.

Open Software Foundation

Gradient Technologies, Inc.

Sassafras Software

Hewlett-Packard Company

Software Publishers Association

Highland Software, Inc.

Symantec, Inc.

InterWorks Software, Inc.

Tangram Systems, Inc.

International Business Machines

WordPerfect, Inc.

Lotus Development Corporation

Xtree, Inc.


Comments are encouraged by FAX to (425) 936-7329 [Attn: Developer Relations Group, 4/2]; by e-mail to the following Internet address: lsapi@microsoft.com, or to Dave Berry, Microsoft Developer Relations, 1 Microsoft Way, 4/2, Redmond, WA 98052-6399. This specification is available on CompuServe. Additional information may be available through license system, network, and operating system vendors.

Special thanks to Dr. Robin Alston, Jim Olsen, Marc Gibian, Peter Spooner, Beat Marti, John Nunneley, Lester Waters, Bob Blakely, Phil Rogaway, Craig Fields, and Steve Jackson for their technical and editing efforts on this document.

Revision History:

Changes in v1.10 (since v1.00):

Type definitions are used in place of base type descriptions (e.g., "LS_LONG" is used instead of "UINT32", etc.).

The status codes have been cleaned up a little to be more consistent. The embedded 0x0800 has been eliminated.

The unit based parameters in LSRequest() and LSUpdate() have been changed to be running totals. Carefully review these descriptions. There has been great confusion over the units "reserved" vs. the units "consumed".

The units reserved/granted have been separated into two parameters in LSRequest() and LSUpdate(). Also, there is an improved description of the units granted.

LSQueryLicense() has been renamed to LSQuery() to be more consistent with the other APIs.

The Apple Macintosh service provider section has been completed.

The challenge mechanism has been cleaned up quite a bit. It has been designed to support multiple challenge protocols. However, the "Basic Challenge" protocol (in appendix B) is guaranteed to be supported by all LSAPI-complient license systems. Also, an "out of band" protocol is defined to allow validation external to LSAPI.

Hungarian Notation thought unnecessary and removed

LS_UCHAR modified to LS_STR in Constants and Data Structures section under Application Programming Interface

LS_BAD_ARG added to Status Code Constant table for incorrect argument errors

Additional clarification wording added to most licensing function calls

Addition of LSFreeHandle() to free all licensing context

Microsoft Windows 3.1, Microsoft Windows NT and Microsoft MS-DOS entries of the License System Service Providers section have been revised to reflect current standards

Enhanced source code examples

MD4 updated to reflect RFC1320

This document is furnished for informational purposes only and is subject to change without notice. THE AFOREMENTIONED COMPANIES AND ORGANIZATIONS MAKE NO WARRANTY, EXPRESS OR IMPLIED WITH RESPECT TO THIS DOCUMENT. The information contained in this document represents the current view on the issues discussed as of the date of publication. Because of changing market conditions, it should not be interpreted to represent a commitment on the part of the aforementioned companies and organizations. The accuracy of any information presented cannot be guaranteed after the date of publication.

All product or brand names noted with ™ or ® are the trademarks or registered trademarks of their respective holders.

FlexLM™ is a trademark of Highland Software.
HP/UX™ and Domain/OS™ are trademarks of Hewlett-Packard Company.
Macintosh® is a registered trademark of Apple Computer, Inc.
Microsoft® and MS-DOS® are registered trademarks and Win32™, Windows™, and Windows NT™
are trademarks of Microsoft Corporation.
NetLS™ is a trademark of Hewlett-Packard Company.
NetWare® and DR-DOS® are registered trademarks of Novell, Inc.
OpenVMS™ and ULTRIX™ are trademarks of Digital Equipment Corporation.
PC-DOS® and IBM® are registered trademarks of International Business Machines.
UNIX® is a registered trademark of Unix System Labs.
Vines® is a registered trademark of Banyan Systems.