Sample code for 30+ languages & platforms
PowerBuilder

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 PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Cert
oleobject loo_PubKey
oleobject loo_PrivKey

li_Success = 0

loo_Cert = create oleobject
li_rc = loo_Cert.ConnectToNewObject("Chilkat.Cert")
if li_rc < 0 then
    destroy loo_Cert
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// Load a digital certificate.
li_Success = loo_Cert.LoadFromFile("digitalCert.cer")
if li_Success = 0 then
    Write-Debug loo_Cert.LastErrorText
    destroy loo_Cert
    return
end if

// A .cer file does not contain the private key.  It should contain
// the public key...
loo_PubKey = create oleobject
li_rc = loo_PubKey.ConnectToNewObject("Chilkat.PublicKey")

loo_Cert.GetPublicKey(loo_PubKey)

// Let's have a look at it (in XML format).
Write-Debug "Public Key from Certificate:"
Write-Debug loo_PubKey.GetXml()

// 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:
loo_PrivKey = create oleobject
li_rc = loo_PrivKey.ConnectToNewObject("Chilkat.PrivateKey")

li_Success = loo_PrivKey.LoadAnyFormatFile("PrivateKey.key","")
if li_Success <> 1 then
    Write-Debug loo_PrivKey.LastErrorText
    destroy loo_Cert
    destroy loo_PubKey
    destroy loo_PrivKey
    return
end if

// 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...).
Write-Debug "Private Key from DER:"
Write-Debug loo_PrivKey.GetXml()


destroy loo_Cert
destroy loo_PubKey
destroy loo_PrivKey