Sample code for 30+ languages & platforms
DataFlex

Generate an RSA Key and Export to XML

See more RSA Examples

Demonstrates how to generate an RSA key and export public/private to XML.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoRsa
    Variant vPrivKey
    Handle hoPrivKey
    Variant vPubKey
    Handle hoPubKey
    String sPrivKeyXml
    String sPubKeyXml
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatRsa)) To hoRsa
    If (Not(IsComObjectCreated(hoRsa))) Begin
        Send CreateComObject of hoRsa
    End

    // Generate a 2048-bit key.
    Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
    If (Not(IsComObjectCreated(hoPrivKey))) Begin
        Send CreateComObject of hoPrivKey
    End
    Get pvComObject of hoPrivKey to vPrivKey
    Get ComGenKey Of hoRsa 2048 vPrivKey To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoRsa To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatPublicKey)) To hoPubKey
    If (Not(IsComObjectCreated(hoPubKey))) Begin
        Send CreateComObject of hoPubKey
    End
    Get pvComObject of hoPubKey to vPubKey
    Get ComToPublicKey Of hoPrivKey vPubKey To iSuccess

    Get ComGetXml Of hoPrivKey To sPrivKeyXml
    Showln sPrivKeyXml

    // Sample output:

    // <RSAKeyValue>
    // 	<Modulus>pvxYRzbV8Gru5/NNFQunXkLfhUW9W83/A+LtVD5jhV5oDZ5mv9R3BbfBE88UTqGjA1jZoFegprY3dGpm7Dl0PFqIYSwfE869Tx7OGzg+ocsM3klTBslxVftN4grJzovfWeUbi22JNbOEjuvI9548OmTnIHhYI9yhl54xyIHUIRWCa6nlPNfqqFD/tscmel+2AwWM5hhylse2Q3xg1Y3D3al3BckGGvrBGjKAFoN60+kmD0mnisy0zfHRAiHH8EsqSXASXjqRa6G60jj+tRrdY5AcOrtWe7tsoHE8txGI+xZQ6g3MWelyNM6Dnb324hid8rNxj33lFiqbOkQGPvE9fw==</Modulus>
    // 	<Exponent>AQAB</Exponent>
    // 	<D>fsydqC3+lJpOoblBrhp0VAKJwqSrXpv06pmVx+O8JJkEgFrpAP+wBZp8NbOIYxEgPLlqP/RqXE1/nJnzX6tdFTtV1hvv2VWisQLeVRMHlEogkmaxcjTjJ/w1LtEsXvgdeSCdIunhR/LyVKi8qTLx3xGh5CkeHNU7q2sHuI7Favy0ux5JluKdrx4CSu30DKPhVvIoWTp4rif5lBBMojw7TEj2Gfbrfw8ZoPZRztjpqI8D4ZyxuFKrPEVWBNBt3yTE3TLWnlH1Me/5iwLgctLv+htDNStoKmco7t+xepusgALYachRaRe7bbVahDaQF/hOxKd00CpoetuasPjBP5yMaQ==</D>
    // 	<P>wl6TQ35VGfpR4dk1I+7JeQVXMyD9McAIKrlQ0uGc2U5Ts7MXXaq0l+QI6/VPsf0jtuzRiT4+wmDUgWjaYpNUaBn1KI+F/gRdMgZcmEOOGUDiCCsWUO0hS5tlchyY9l8LoPXFbpdfNFsLEZDtIEeNMyRzBHcZABoXWN/yFqGsaEU=</P>
    // 	<Q>2+74GkV4+1Dkxr/KGNZKfYaKEolaRRmjxeUj8VNLU9vKpaGXEgsi7208esH8KG5He1f8fJOIJtnRfUne/cg8vrqPRQ8nYDGSaNswPNQldji2FhNN2hWmhlQ3hS+ymTS8Dm8h1dqRVn/QQNvH8+WkcztmUNXKk3vtnc2UBakPdPM=</Q>
    // 	<DP>ar3zk9JSPBT7WNOnWldtr5eePsb0JZk3Ivdoipc6QyC/2OUWhOsViIDD4YlzveSt82x02jEj2C3DJlqF7DLK3Oy8dQz04f5Vi/5wZXJcHEREnYXEGKdRbKsneBZ6bnrd8QRn64cX0rHZD0mO3/ZLdfWjcKVTRnoNrlI2KfWZsB0=</DP>
    // 	<DQ>TvJgAuYvQF9QT/umavX5NUfnJjJBwg4rGK1hEo5oushp3Ly9gs+WkcVvcU1S25yCckcqLfmzZObJaSTsM8L98yT6qrp+0uvYd2U+0ocAj4hZ7GCvkHo3FX8Dkv6FKLOiUbgYuDBF/XvR4IZEJ0umlWqcFqY3mmtg50VVPhbqons=</DQ>
    // 	<InverseQ>W7bC5ZD55dv6XqmfHDVuUoI8IZQVnM1M1BtA5+tTFXxPT29ZUov7wOh+5R2nygUqkJfiNAC0s18tPiv7HoQXHxIskI2tXT3XM9yJdZOnAXCzV+xh+zeenBVTD63PvpNpC9Obrxd1rpBi2jTIFESgD0Cn5CKEIUpXIGntaNLLgDI=</InverseQ>
    // </RSAKeyValue>

    Get ComGetXml Of hoPubKey To sPubKeyXml
    Showln sPubKeyXml

    // Sample output:
    // <RSAPublicKey>
    // 	<Modulus>pvxYRzbV8Gru5/NNFQunXkLfhUW9W83/A+LtVD5jhV5oDZ5mv9R3BbfBE88UTqGjA1jZoFegprY3dGpm7Dl0PFqIYSwfE869Tx7OGzg+ocsM3klTBslxVftN4grJzovfWeUbi22JNbOEjuvI9548OmTnIHhYI9yhl54xyIHUIRWCa6nlPNfqqFD/tscmel+2AwWM5hhylse2Q3xg1Y3D3al3BckGGvrBGjKAFoN60+kmD0mnisy0zfHRAiHH8EsqSXASXjqRa6G60jj+tRrdY5AcOrtWe7tsoHE8txGI+xZQ6g3MWelyNM6Dnb324hid8rNxj33lFiqbOkQGPvE9fw==</Modulus>
    // 	<Exponent>AQAB</Exponent>
    // </RSAPublicKey>


End_Procedure