rsa_util_sign,
    rsa_util_verify,
    rsa_util_verify_priv — RSA
    digital signature routines
PDEL Library (libpdel, -lpdel)
#include
    <sys/types.h>
  
  #include
    <pdel/util/rsa_util.h>
int
  
  rsa_util_sign(const
    char *privkeyfile, const
    u_char *md5, u_char
    *sig, size_t
    siglen);
int
  
  rsa_util_verify(const
    char *pubkeyfile, const
    u_char *md5, const u_char
    *sig, size_t
    siglen);
int
  
  rsa_util_verify_priv(const
    char *privkeyfile, const
    u_char *md5, const u_char
    *sig, size_t
    siglen);
These routines are convenience wrappers around the OpenSSL crypto
    library for creating and verifying RSA digital signatures. They use the
    md5(3)
    hash of the original document for the actual signing operation.
rsa_util_sign()
    creates a digital signature. privkeyfile is the
    pathname of the private key file (which must be unencrypted).
    md5 is the hash of the document to be signed.
    sig points to a buffer of at least 128 bytes.
    siglen is the size of the buffer.
    rsa_util_sign() returns the length of the resulting
    signature, or -1 (with errno set) if there was an
    error.
rsa_util_verify()
    verifies a digital signature. pubkeyfile is the
    pathname of the public key file. md5 is the hash of
    the document to be signed. sig points to the signature
    to verify, having length siglen.
    rsa_util_verify() returns 1 if the signature is
    valid, otherwise 0.
rsa_util_verify_priv()
    functions exactly like rsa_util_verify() except that
    the private key file (which also contains the public key) is passed as the
    first argument.
To create a new RSA private key:
openssl genrsa -rand /dev/random -out mykey.key 1024
 
To view the contents of an RSA private key file:
openssl rsa -in mykey.key -text -noout
 
To extract the RSA public key from an RSA private key file:
openssl rsa -in mykey.key -pubout -out mykey.pub
 
To view the contents of an RSA public key file:
openssl rsa -pubin -in mykey.pub -text -noout
 
The PDEL library was developed at Packet Design, LLC.
    http://www.packetdesign.com/
Archie Cobbs
    ⟨archie@freebsd.org⟩