Sample code for 30+ languages & platforms
Go

Encrypt a JWE with a Symmetric Wrapping Key

See more JSON Web Encryption (JWE) Examples

Demonstrates Jwe.SetWrappingKey, which sets the symmetric key-wrapping key for a recipient. The key bytes are supplied in a named encoding such as hex or base64.

Background. AES key wrapping protects the content-encryption key with a shared symmetric key. Both parties must possess the same wrapping key.

Chilkat Go Downloads

Go
    success := false

    jwe := chilkat.NewJwe()

    //  Protected header: AES key-wrap with AES-256-GCM content encryption.
    header := chilkat.NewJsonObject()
    header.UpdateString("alg","A256KW")
    header.UpdateString("enc","A256GCM")
    success = jwe.SetProtectedHeader(header)
    if success == false {
        fmt.Println(jwe.LastErrorText())
        jwe.DisposeJwe()
        header.DisposeJsonObject()
        return
    }

    //  Set the symmetric key-wrapping key for recipient 0.  The key bytes are provided in the named
    //  encoding (here base64).  In production, obtain the key from a secure source rather than hard-coding
    //  it.
    base64Key := "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU="
    success = jwe.SetWrappingKey(0,base64Key,"base64")
    if success == false {
        fmt.Println(jwe.LastErrorText())
        jwe.DisposeJwe()
        header.DisposeJsonObject()
        return
    }

    jweCompact := jwe.Encrypt("This is the secret content.","utf-8")
    if jwe.LastMethodSuccess() == false {
        fmt.Println(jwe.LastErrorText())
        jwe.DisposeJwe()
        header.DisposeJsonObject()
        return
    }

    fmt.Println(*jweCompact)

    jwe.DisposeJwe()
    header.DisposeJsonObject()