I am writing a closed-source Java Card applet. But as a part of the functionality, I call a static RIPEMD160 method licenced under AGPL. The static method can be compiled separately and loaded onto the Java Card as a library. I can then use the .exp file from the compiled library, in order to call this compiled library function within my applet. The .exp file provides the information about the interface of whatever just got compiled. Name of the function, where in memory it lives, etc.

Could I distribute the AGPL-licenced function library and my applet under different licences alongside each other, so that my applet code remains closed source? Or would the fact that I'm calling the function from an interface of an AGPL piece of code force my code to also be GPL-compatible?

I have an intuition that I can keep my applet code closed source because what I'm doing is akin to system calls. So technically all software that is written for Linux and makes use of Linux system calls should be open-source now? I don't think that's true.

But I could be missing something here.

  • Relevant: Linux has a special exception for system calls. It's unclear whether they actually needed to write that exception down, or if it was already implied by the structure of the software and the text of the GPL.
    – Kevin
    Oct 26, 2022 at 22:49
  • The function you are talking about, RIPEMD-160 has been implented elsewhere with more liberal licenses. For example, OpenSSL and for a Java API that is MIT licensed, I found one by searching for the algorithm keyword. Maybe it's interesting for your Java project: bouncycastle.org/licence.html
    – Brandin
    Oct 27, 2022 at 10:09
  • The comment about Linux syscalls is answered in the comment and also has been dicussed a few other times on this site. For example see this theoretical question: Can Microsoft legally release a version of Windows with the Linux kernel as a proprietary operating system?
    – Brandin
    Oct 27, 2022 at 10:11
  • I read something about an arms-length requirement or something for linking/api calls. At this point, I'm just calling a function called hash32 and the implementation on the library end could be anything. It happens to be the library's implementation that is compiled and standalone in the Java Card memory. Is that arms-length? What does that mean Oct 27, 2022 at 12:10
  • If you could void AGPL by this it would be a useless license because it would be equivalent to GPL... The whole purpose of AGPL is to prevent companies to build SaaS from open source.
    – GACy20
    Nov 2, 2022 at 14:40

1 Answer 1


No. If your software makes API calls to that AGPLv3-licensed software, your software too becomes licensed under AGPLv3 due to the license's copyleft effects.

The README file gives the answer:

All applet code is provided under the GNU Affero General Public License v3 - for any question or commercial licensing, reach us at (email address)

That software is dual licensed under AGPLv3 and a commercial license.

So, if you want to close your source code, you need to buy a commercial license.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.