Sample code for 30+ languages & platforms
DataFlex

About RSA Public/Private Keys

See more RSA Examples

This example provides some additional information for understanding public/private key pairs. In demonstrates how a private key is a superset of the public key. A public key contains the modulus and exponent. The matching private key also contains the modulus and exponent, but also contains the additional private key parts.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoCert
    Variant vPubKey
    Handle hoPubKey
    Handle hoPrivKey
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatCert)) To hoCert
    If (Not(IsComObjectCreated(hoCert))) Begin
        Send CreateComObject of hoCert
    End

    // Load a digital certificate.
    Get ComLoadFromFile Of hoCert "digitalCert.cer" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoCert To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // A .cer file does not contain the private key.  It should contain
    // the public key...
    Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey
    If (Not(IsComObjectCreated(hoPubKey))) Begin
        Send CreateComObject of hoPubKey
    End
    Get pvComObject of hoPubKey to vPubKey
    Get ComGetPublicKey Of hoCert vPubKey To iSuccess

    // Let's have a look at it (in XML format).
    Showln "Public Key from Certificate:"
    Get ComGetXml Of hoPubKey To sTemp1
    Showln sTemp1

    // An RSA public key consists of a modulus and exponent.

    // An RSA private key includes both the modulus and exponent,
    // as well as other "big" numbers: P, Q, D, etc.

    // Let's load an RSA private key from a DER-encoded file:
    Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
    If (Not(IsComObjectCreated(hoPrivKey))) Begin
        Send CreateComObject of hoPrivKey
    End

    Get ComLoadAnyFormatFile Of hoPrivKey "PrivateKey.key" "" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoPrivKey To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // If this private key is the matching half to the public key from
    // the certificate, then the modulus and exponent should
    // be identical.  (Thus, a "private key" really contains both the public part as well as the private parts...).
    Showln "Private Key from DER:"
    Get ComGetXml Of hoPrivKey To sTemp1
    Showln sTemp1


End_Procedure