Sample code for 30+ languages & platforms
Swift

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

Swift

func chilkatTest() {
    var success: Bool = false

    let jwe = CkoJwe()!

    //  Protected header: AES key-wrap with AES-256-GCM content encryption.
    let header = CkoJsonObject()!
    header.updateString(jsonPath: "alg", value: "A256KW")
    header.updateString(jsonPath: "enc", value: "A256GCM")
    success = jwe.setProtectedHeader(json: header)
    if success == false {
        print("\(jwe.lastErrorText!)")
        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.
    var base64Key: String? = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU="
    success = jwe.setWrappingKey(index: 0, encodedKey: base64Key, encoding: "base64")
    if success == false {
        print("\(jwe.lastErrorText!)")
        return
    }

    var jweCompact: String? = jwe.encrypt(content: "This is the secret content.", charset: "utf-8")
    if jwe.lastMethodSuccess == false {
        print("\(jwe.lastErrorText!)")
        return
    }

    print("\(jweCompact!)")

}