Sample code for 30+ languages & platforms
Go

RSA Sign Binary Data and Verify (Recover the Original Data)

See more RSA Examples

Demonstrates how to RSA sign binary data and then verify/recover the original data.

Note: This example uses methods introduced in Chilkat v9.5.0.77.

Chilkat Go Downloads

Go
    success := false

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    // Load an RSA private key for signing.
    privKey := chilkat.NewPrivateKey()
    success = privKey.LoadEncryptedPemFile("qa_data/pem/rsa_passwd.pem","passwd")
    if success == false {
        fmt.Println(privKey.LastErrorText())
        privKey.DisposePrivateKey()
        return
    }

    rsa := chilkat.NewRsa()
    rsa.UsePrivateKey(privKey)

    // We have some binary data (in hex) to sign
    originalData := "0102030405060708090A"
    bd := chilkat.NewBinData()
    bd.AppendEncoded(originalData,"hex")

    // If successful, the contents of bd are replaced with the RSA signature.
    success = rsa.SignRawBd(bd)
    if success == false {
        fmt.Println(rsa.LastErrorText())
        privKey.DisposePrivateKey()
        rsa.DisposeRsa()
        bd.DisposeBinData()
        return
    }

    // Show the RSA signature in base64
    fmt.Println(*bd.GetEncoded("base64"))

    // ------------------------------------------
    // Get the public key from the private key
    pubKey := chilkat.NewPublicKey()
    privKey.ToPublicKey(pubKey)

    // Verify the signature and extract the original data.
    rsa2 := chilkat.NewRsa()
    rsa2.UsePublicKey(pubKey)

    bVerified := rsa2.VerifyRawBd(bd)
    fmt.Println("signature verified: ", bVerified)

    // Show the original data:
    fmt.Println("original data: ", *bd.GetEncoded("hex"))

    privKey.DisposePrivateKey()
    rsa.DisposeRsa()
    bd.DisposeBinData()
    pubKey.DisposePublicKey()
    rsa2.DisposeRsa()