CryptoSys PKI examples VB6 to VB.NET

CIPHER_KeyWrap

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

The third output value will be different each time because of the random nonce added to the TDEA key wrap algorithm.

[Contents]

[HOME]   [NEXT: CIPHER_KeyUnwrap...]

Copyright © 2010-20 D.I. Management Services Pty Ltd. All rights reserved.