Swift
Swift
Set JWE Additional Authenticated Data
See more JSON Web Encryption (JWE) Examples
Demonstrates Jwe.SetAad, which sets external Additional Authenticated Data (AAD) for a JWE being encrypted, encoding the supplied text with the given charset.
Background. AAD is integrity-protected but not encrypted, binding external context to the ciphertext. The same AAD must be supplied again when decrypting.
Chilkat Swift Downloads
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
}
// The 256-bit key-wrapping key (base64) for recipient index 0. 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
}
// Set external Additional Authenticated Data (AAD). The AAD is integrity-protected but not
// encrypted, and must be supplied again when decrypting.
success = jwe.setAad(aad: "context-info-v1", charset: "utf-8")
if success == false {
print("\(jwe.lastErrorText!)")
return
}
let sbContent = CkoStringBuilder()!
sbContent.append(value: "This is the secret content.")
let sbJwe = CkoStringBuilder()!
success = jwe.encryptSb(contentSb: sbContent, charset: "utf-8", jweSb: sbJwe)
if success == false {
print("\(jwe.lastErrorText!)")
return
}
print("\(sbJwe.getAsString()!)")
}