Wraps a content-encryption key with a key-encryption key.
VB6/VBA
Debug.Print "Testing CIPHER_KeyWrap ..."
Dim abWK() As Byte
Dim abKeyData() As Byte
Dim abKek() As Byte
Dim nWkLen As Long
Dim nKdLen As Long
Dim nKekLen As Long
abKeyData = cnvBytesFromHexStr("00112233 44556677 8899aabb ccddeeff")
abKek = cnvBytesFromHexStr("c17a44e8 e28d7d64 81d1ddd5 0a3b8914")
nKdLen = UBound(abKeyData) + 1
nKekLen = UBound(abKek) + 1
nWkLen = CIPHER_KeyWrap(0, 0, abKeyData(0), nKdLen, abKek(0), nKekLen, PKI_BC_AES128)
If nWkLen <= 0 Then
Debug.Print " returns " & nWkLen & ": " & pkiErrorLookup(nWkLen)
Exit Sub
End If
ReDim abWK(nWkLen - 1)
nWkLen = CIPHER_KeyWrap(abWK(0), nWkLen, abKeyData(0), nKdLen, abKek(0), nKekLen, PKI_BC_AES128)
Debug.Print "WK=" & cnvHexStrFromBytes(abWK)
abKeyData = cnvBytesFromHexStr("8cbedec4 8d063e1b a46be8e3 69a9c398 d8e30ee5 42bc347c 4f30e928 ddd7db49")
abKek = cnvBytesFromHexStr("9e84ee99 e6a84b50 c76cd414 a2d2ec05 8af41bfe 4bf3715b f894c8da 1cd445f6")
nKdLen = UBound(abKeyData) + 1
nKekLen = UBound(abKek) + 1
nWkLen = CIPHER_KeyWrap(0, 0, abKeyData(0), nKdLen, abKek(0), nKekLen, PKI_BC_AES256)
If nWkLen <= 0 Then
Debug.Print " returns " & nWkLen & ": " & pkiErrorLookup(nWkLen)
Exit Sub
End If
ReDim abWK(nWkLen - 1)
nWkLen = CIPHER_KeyWrap(abWK(0), nWkLen, abKeyData(0), nKdLen, abKek(0), nKekLen, PKI_BC_AES256)
Debug.Print "WK=" & cnvHexStrFromBytes(abWK)
abKeyData = cnvBytesFromHexStr("84e7f2d8 78f89fcc cd2d5eba fc56daf7 3300f27e f771cd68")
abKek = cnvBytesFromHexStr("8ad8274e 56f46773 8edd83d4 394e5e29 af7c4089 e4f8d9f4")
nKdLen = UBound(abKeyData) + 1
nKekLen = UBound(abKek) + 1
nWkLen = CIPHER_KeyWrap(0, 0, abKeyData(0), nKdLen, abKek(0), nKekLen, PKI_BC_3DES)
If nWkLen <= 0 Then
Debug.Print " returns " & nWkLen & ": " & pkiErrorLookup(nWkLen)
Exit Sub
End If
ReDim abWK(nWkLen - 1)
nWkLen = CIPHER_KeyWrap(abWK(0), nWkLen, abKeyData(0), nKdLen, abKek(0), nKekLen, PKI_BC_3DES)
Debug.Print "WK=" & cnvHexStrFromBytes(abWK)
Output
Testing CIPHER_KeyWrap ... WK=503D75C73630A7B02ECF51B9B29B907749310B77B0B2E054 WK=EAFB901F82B98D37F17497063DE3E5EC7246AB57200AE73EDDDDF24AA403DAFA0C5AE151D1746FA4 WK=B934FB71D8BCCA6A8050FB3B3037E41A672987ADE360CDE60DA09C5702D743D4A5FA19B6D76B68B7
VB.NET
Console.WriteLine("Testing CIPHER_KeyWrap ...")
Dim abWK() As Byte
Dim abKeyData() As Byte
Dim abKek() As Byte
''Dim nWkLen As Integer
''Dim nKdLen As Integer
''Dim nKekLen As Integer
abKeyData = Cnv.FromHex("00112233 44556677 8899aabb ccddeeff")
abKek = Cnv.FromHex("c17a44e8 e28d7d64 81d1ddd5 0a3b8914")
''nKdLen = UBound(abKeyData) + 1
''nKekLen = UBound(abKek) + 1
abWK = Cipher.KeyWrap(abKeyData, abKek, CipherAlgorithm.Aes128)
If abWK.Length = 0 Then
Console.WriteLine("Cipher.KeyWrap: " & General.LastError())
Exit Sub
End If
Console.WriteLine("WK=" & Cnv.ToHex(abWK))
abKeyData = Cnv.FromHex("8cbedec4 8d063e1b a46be8e3 69a9c398 d8e30ee5 42bc347c 4f30e928 ddd7db49")
abKek = Cnv.FromHex("9e84ee99 e6a84b50 c76cd414 a2d2ec05 8af41bfe 4bf3715b f894c8da 1cd445f6")
''nKdLen = UBound(abKeyData) + 1
''nKekLen = UBound(abKek) + 1
abWK = Cipher.KeyWrap(abKeyData, abKek, CipherAlgorithm.Aes256)
If abWK.Length = 0 Then
Console.WriteLine("Cipher.KeyWrap: " & General.LastError())
Exit Sub
End If
Console.WriteLine("WK=" & Cnv.ToHex(abWK))
abKeyData = Cnv.FromHex("84e7f2d8 78f89fcc cd2d5eba fc56daf7 3300f27e f771cd68")
abKek = Cnv.FromHex("8ad8274e 56f46773 8edd83d4 394e5e29 af7c4089 e4f8d9f4")
''nKdLen = UBound(abKeyData) + 1
''nKekLen = UBound(abKek) + 1
abWK = Cipher.KeyWrap(abKeyData, abKek, CipherAlgorithm.Tdea)
If abWK.Length = 0 Then
Console.WriteLine("Cipher.KeyWrap: " & General.LastError())
Exit Sub
End If
Console.WriteLine("WK=" & Cnv.ToHex(abWK))
Remarks
[Contents]