let status = cipherText.withUnsafeMutableBytes { (cipherPtr: UnsafeMutableRawBufferPointer) in
	tag.withUnsafeMuableBytes { tagPtr: (UnsafeMutableRawBufferPointer) in
		nonceData.withUnsafeBytes { noncePtr: UnsafeRawBufferPointer) in
			key.withUnsafeBytes { keyPtr: UnsafeRawBufferPointer in
				plainText.withUnsafeBytes { plainText: UnsafeRawBufferPointer in
						return encrypt(keyPtr, plainTextPtr, noncePtr, keyPtr, cipherPtr, tagPtr)
				}
			}
		}
	}
}

// 위와 동일
let sealed = try AES.GCM.seal(dataToEncrypt, using: symmectricKey)

// 암호화 키 만들고 해제하기

//C
let keyByteCount = 256/8
var key = Array(repeating: 0, count: keyByteCount)
let err = SecRandomCopyBytes(kSecRandomDefault, keyByteCount, &key)

if err != errSecSuccess {
	// 에러 처리
}

// 키 사용
...
// 키를 메모리에서 제거(zeroize)
memset_s(&key, keyByteCount, 0, keyByteCount)

// 위와 동일
// 이 객체가 해제될 때, 자동으로 zeroize가 된다. 
let key = SymmetricKey(size: .bits256)