/T=0
// select 
00 A4 04 00 06 01 02 03 04 08 00
//AdmPIN
0020 0001 08 30 30 30 30 30 30 30 30


// Status
00 87 00 00 04


// SHA256
//HMAC-SHA-256 = b0344c61d8db38535ca8afceaf0bf12b
//               881dc200c9833da726e9376c2e32cff7
00 85 00 02 1E 14 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b 08 4869205468657265

// A.1 RFC 5869 Test Case 1
// ========================
// PRK = HMAC(salt,IKM)
// IKM  = 0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b (22 octets)
// salt = 0x000102030405060708090a0b0c (13 octets)
// PRK = 077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5
00 85 00 02 25 0D 000102030405060708090a0b0c 16 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b

// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)
// info= 0xf0f1f2f3f4f5f6f7f8f9 (10 octets)
// L=42
00 85 00 02 2D 20 077709362C2E32DF0DDC3F0DC47BBA6390B6C73BB50F9C3122EC844AD7C2B3E5 0B f0f1f2f3f4f5f6f7f8f9 01
// 3CB25F25FAACD57A90434F64D0362F2A2D2D0A90CF1A5A4C5DB02D56ECC4C5BF
// T(1) = HMAC-Hash(PRK, T(0) | info | 0x02)
00 85 00 02 4D 20 077709362C2E32DF0DDC3F0DC47BBA6390B6C73BB50F9C3122EC844AD7C2B3E5 2B 3CB25F25FAACD57A90434F64D0362F2A2D2D0A90CF1A5A4C5DB02D56ECC4C5BF f0f1f2f3f4f5f6f7f8f9 02
// 34007208d5b887185865

// rfc 8448
// {server}  extract secret "early"
// salt=0
// IKM = 32x 0
00 85 00 02 23 01 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
// secret = 33 ad 0a 1c 60 7e c0 3b 09 e6 cd 98 93 68 0c e2 10 ad f3 00 aa 1f 26 60 e1 b2 2e 10 f1 70 f9 2a

// {server}  derive secret for handshake "tls13 derived"
00 85 00 02 54 20 33 ad 0a 1c 60 7e c0 3b 09 e6 cd 98 93 68 0c e2 10 ad f3 00 aa 1f 26 60 e1 b2 2e 10 f1 70 f9 2a 32 00 20 0d 74 6c 73 31 33 20 64 65 72 69 76 65 64 20 e3 b0 c4 42 98 fc 1c 14 9a fb f4 c8 99 6f b9 24 27 ae 41 e4 64 9b 93 4c a4 95 99 1b 78 52 b8 55 01
// 6f 26 15 a1 08 c7 02 c5 67 8f 54 fc 9d ba b6 97 16 c0 76 18 9c 48 25 0c eb ea c3 57 6c 36 11 ba         
 
// {server}  extract secret "handshake"
00 85 00 02 42 20 6f 26 15 a1 08 c7 02 c5 67 8f 54 fc 9d ba b6 97 16 c0 76 18 9c 48 25 0c eb ea c3 57 6c 36 11 ba    20 8b d4 05 4f b5 5b 9d 63 fd fb ac f9 f0 4b 9f 0d  35 e6 d6 3f 53 75 63 ef d4 62 72 90 0f 89 49 2d
// secret (32 octets)  1d c8 26 e9 36 06 aa 6f dc 0a ad c1 2f 74 1b 01 04 6a a6 b9 9f 69 1e d2 21 a9 f0 ca 04 3f be ac


// ESK= Extract(0,IKM)
00 85 FF 0A 23 01 00 20 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
//23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897
//98EEAA27F7D77499E5FBC63A413CD8C395CAE42D850B65A5AE6A63807368A3F5
//4B6B423D2B92D840CC9A1A30D457BC5A4B10918587BBFF96380E91CE20A5FA2C
//120FA722EC0520CFFE1391F08F00243FF316F6EE8B0BCFC5A9E0B15C734C7ECF

// ESK= HMAC(0,IKM)
00 85 00 02 23 01 00 20 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
// 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897


// DSK =   Derive-Secret(ESK, "derived", "")
0085 0002 34 20 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897 12 0020 0d 746c7331332064657269766564 00 01
//98EEAA27F7D77499E5FBC63A413CD8C395CAE42D850B65A5AE6A63807368A3F5 

// eBSK= Derive-Secret_Early(ESK, "ext binder", "")
0085 0002 37 20 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897 15 0020 10 746c733133206578742062696e646572 00 01
//4B6B423D2B92D840CC9A1A30D457BC5A4B10918587BBFF96380E91CE20A5FA2C

// rBSK=  Derive-Secret_Early(ESK,  "res binder", ""
0085 0002 37 20 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897 15 0020 10 746c733133207265732062696e646572 00 01
//120FA722EC0520CFFE1391F08F00243FF316F6EE8B0BCFC5A9E0B15C734C7ECF

// Extract(DSK,DHE) = HMAC(DHE,DSK)
0085 0002 23 01 00 20 98EEAA27F7D77499E5FBC63A413CD8C395CAE42D850B65A5AE6A63807368A3F5
// HMAC(DHE,DSK) = HMAC(0s,DSK)
0085 000E 01 00
//3074777017FA405DB00BF0F4E24E5A3E0A5F8CE357472BEA4F442D7754E13BF2


// HMAC(eBSK,data) = HMAC(eBSK, 0s)
0085 0002 23 20 4B6B423D2B92D840CC9A1A30D457BC5A4B10918587BBFF96380E91CE20A5FA2C 01 00
// MAC(eBSK,Os)
0085 000C 01 00
//D799BD1B21BC4B63CE8676E7C2C0945EC6FA74A8D8124E223D2EAD9DDBCA7DF5

// HMAC(rBSK,data) = HMAC(eBSK, 0s)
0085 0002 23 20  120FA722EC0520CFFE1391F08F00243FF316F6EE8B0BCFC5A9E0B15C734C7ECF 01 00
// MAC(rBSK,0s)
0085 000D 01 00
//3C9B00C86B21A4C78DFC85705B0CCB3410F6989106C4BA1D97F21815CA5852FB


// Derive-Secret_Early(ESK,"c e traffic", 0s)
0085 0002 38  20 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897 16 0020 11746c733133206320652074726166666963 00 01
// Derive-Secret(ESK,"c e traffic", 0s)
0085 000B 03 0020 00
//0738A2B6F6FAA2AF5CDD9B6F0F2B232F19B3256A5926EAC600B911F91E98D2D4

// Derive-Secret(ESK,"e exp master", 0s)
0085 0002 39  20 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897 17 0020 12746c733133206520657870206d6173746572 00 01
// Derive-Secret(ESK,"e exp master", 0s)
0085 010B 03 0020 00
// 9B7FC6A8F854C16A301DFC566859931DB5EE9A22793142A0C67159C445E7BEAB


// Extract(DSK,DHE) = HMAC(DHE,DSK)
0085 000E 41 D045ea1ed2b12d16706aff7dbd964040434b1e160a2b851b787e37c5edeb866edf1a860a49a4faa5b4b2d19f70d6740aa767688c46962bc6b0345a2f7c1be36efa0
//


// ESK= HMAC(0,IKM)
00 85 00 02 23 01 00 20 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
// 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897



// eBSK= Derive-Secret_Early(ESK, "ext binder", "") = ""= SHA256(NULL)
// Null sha256 E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855
0085 0002 57 20 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897 35  0020 10 746c733133206578742062696e646572 20 E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 01
//4351F8A53AA85AC394AB04C516464CAB96E9340C269632D09899537887EE651F



// DSK =   Derive-Secret(ESK, "derived", "")
0085 0002 54 20 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897 32 0020 0d 746c7331332064657269766564 20 E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855  01
// E8E7AC087158FC8440E41A12989F9194783764CD5FC36564028037F2C8206E96 


// FSK   "tls13 finished"   H(BSK, info)
0085 0002 35 20 4351F8A53AA85AC394AB04C516464CAB96E9340C269632D09899537887EE651F  13 0020 0E 746C7331332066696E6973686564 00 01
// FCA24690D17DDE3F727D29D2186A5F83E1AEBD4889A4841793139168A65BFCB0


0085 0002 42 20 FCA24690D17DDE3F727D29D2186A5F83E1AEBD4889A4841793139168A65BFCB0 20 C0C27BBFDBAF30C5888732734BCE1B47E3F14FAA4BE578A25BD81BBDE2D2B1FA
//BuildTls13HandshakeHmac
//Key FCA24690D17DDE3F727D29D2186A5F83E1AEBD4889A4841793139168A65BFCB0
//DataC0C27BBFDBAF30C5888732734BCE1B47E3F14FAA4BE578A25BD81BBDE2D2B1FA
//Result 811ABCE77E614232741AE2F59E0497E8801D31D7388577FAED73EF63BD1B6791

/ MAC(feBSK,Os)
0085 000C 20 C0C27BBFDBAF30C5888732734BCE1B47E3F14FAA4BE578A25BD81BBDE2D2B1FA
//811ABCE77E614232741AE2F59E0497E8801D31D7388577FAED73EF63BD1B6791


//Extract
//salt (32) E8E7AC087158FC8440E41A12989F9194783764CD5FC36564028037F2C8206E96
//inkey (32) 97C3CF6C99EA9840D2E35F0AE684C97A2B4B68D5F8196C0C1D0C85E2F8BF43AB
//noutkey (32)98F057EE0CC6C17E27983B9C2019111AE1E440517863C803030877139C047BDE


// Extract(DSK,DHE) = HMAC(DSK,DHE)
 
0085 0002 42 20 E8E7AC087158FC8440E41A12989F9194783764CD5FC36564028037F2C8206E96   20 97C3CF6C99EA9840D2E35F0AE684C97A2B4B68D5F8196C0C1D0C85E2F8BF43AB 
// HMAC(DSK,DHE) = Extract(salt=DSK,DHE)
0085 000E 20 97C3CF6C99EA9840D2E35F0AE684C97A2B4B68D5F8196C0C1D0C85E2F8BF43AB
//98F057EE0CC6C17E27983B9C2019111AE1E440517863C803030877139C047BD



// Derive-Secret_Early(ESK,"c e traffic", 0s)
0085 0002 38  20 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897 16 0020 11746c733133206320652074726166666963 00 01
// Derive-Secret(ESK,"c e traffic", 0s)
0085 000B 03 0020 00
//0738A2B6F6FAA2AF5CDD9B6F0F2B232F19B3256A5926EAC600B911F91E98D2D4


// Derive-Secret(ESK,"e exp master", 0s)
0085 0002 39  20 23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897 17 0020 12746c733133206520657870206d6173746572 00 01
// Derive-Secret(ESK,"e exp master", 0s)
0085 010B 03 0020 00
// 9B7FC6A8F854C16A301DFC566859931DB5EE9A22793142A0C67159C445E7BEAB

// Extract(DSK,DHE) = HMAC(DSK,DHE)
 
0085 0002 23 20 E8E7AC087158FC8440E41A12989F9194783764CD5FC36564028037F2C8206E96   01 00 

// HMAC(DSK,DHE) = Extract(salt=DSK,DHE)
0085 000E 01 00
//7092C2117D67E6AEB5C5FDF5E6D9C70FBDC69B374E914C26AB08A122483D0E73
0085 0002 23 20 FCA24690D17DDE3F727D29D2186A5F83E1AEBD4889A4841793139168A65BFCB0 01 00

// HMAC(feBSK,Os)
0085 000C 01 00

// ESK= Extract(0,IKM)
00 85 FF 0A 23 01 00 20 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
//23499E7EDF0FBE6BAA137DF0F23BECAEFA722AD19FC262855409DE8CD8B3C897 ESK
//E8E7AC087158FC8440E41A12989F9194783764CD5FC36564028037F2C8206E96 HSK
//4351F8A53AA85AC394AB04C516464CAB96E9340C269632D09899537887EE651F eBSK
//120FA722EC0520CFFE1391F08F00243FF316F6EE8B0BCFC5A9E0B15C734C7ECF rBSK 
//FCA24690D17DDE3F727D29D2186A5F83E1AEBD4889A4841793139168A65BFCB0 feBSK
//B25115DB9FDBA4ADB7A0900A9A1239E207DA6A1F8D8F98ADDA5222BDC4353890 frBSK


