To provide improved security in adjunct program modules such as plug-ins
and dynamic link libraries, a requesting module provides an authorization
interface to the invoked module such that the invoked module can require
a certificate of the requesting module and can also challenge the
authority of the requesting module. The certificate can include one or
more permissions which are prerequisites for processing by the invoked
module. The invoked module can challenge the authority of the requesting
module by sending random test data to the requesting module and receiving
in response a cryptographic signature of the test data. By verifying the
signature of the requesting module using the received certificate, the
invoked module confirms that the requesting module is, in fact, the owner
of the receive certificate.