Closed MarkSimontonOfCG closed 5 months ago
I solved my problem, by removing key length member of the key material blob; of course this is different from the example in RFC 2631; Also, this difference from RFC 2631 is not documented, so I predict that others will have the same issue.
Thanks @MarkSimontonOfCG , I'll look into this and update accordingly. Appreciate it.
Thanks. I have some other issues I am encountering, which might end in other bugs, such as the tag values for partyUInfo (A0) , partyVInfo(A1), suppPubInfo(A2), suppPubInfo(A3) need to be documented, because they do not appear anywhere in the published documentation for ANSI x9.42 der encoding I could find on the internet, and if you follow the rules that I could find the tag for all 4 fields should be A0 as in (application-specific + Octet string). Either way is okay, as long as, it is documented so people can do the correct thing without needing to poke around in the code.
My most current issue is that my code doesn't encode key material where the Optional OtherInfo values are longer than 256 bits (actually the optional values are 512 bits); if the optional values are 0 bits my resulting hash matches that from the demo server.
Is it possible to get a hex dump of the key-material just before the hash for "vsId": 1890411; "tgId": 1, "tcId": 2, and 3
It would help me to understand why my hash value doesn't match expected values, and I am confused about where my encoding of the input values is wrong, I am guessing it is the length value of the outer "header".
From: Joel Brockman @.> Sent: Thursday, October 26, 2023 1:45 PM To: usnistgov/ACVP-Server @.> Cc: Mark Simonton (Capgemini America Inc) @.>; Mention @.> Subject: Re: [usnistgov/ACVP-Server] help request: kdf ansi x9.42 der; derived key does not match expected (Issue #291)
Thanks @MarkSimontonOfCGhttps://github.com/MarkSimontonOfCG , I'll look into this and update accordingly. Appreciate it.
- Reply to this email directly, view it on GitHubhttps://github.com/usnistgov/ACVP-Server/issues/291#issuecomment-1781870133, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BDIH5TCXDVTM4EXTFMTLCP3YBLDVHAVCNFSM6AAAAAA57V567KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBRHA3TAMJTGM. You are receiving this because you were mentioned.Message ID: @.***>
Hi @MarkSimontonOfCG Sorry for the delay here, but I will make that change to the documentation to specify the A0-3 encoding. As far as your second question, your test has expired, you'd need to perform another run for me to provide it for you.
@jbrock24 thank you for the response I have downloaded a new set of vectors and the expected results.
"\/acvp\/v1\/testSessions\/464422\/vectorSets\/2021126"
request: { "vsId": 2021126, "algorithm": "kdf-components", "mode": "ansix9.42", "revision": "1.0", "isSample": true, "testGroups": [ { "tgId": 1, "testType": "AFT", "hashAlg": "SHA2-256", "kdfType": "DER", "oid": "0609608648016503040105", "tests": [ { "tcId": 1, "zz": "38AA6E97CBDBDA434C77BCE83042304DA72C03D6FC22FD6187B7DECFB796CB9118C2DF69", "keyLen": 464, "partyUInfo": "82A6319B7232C42D5B68FCEB1EB25FE20541D15A5AAC0039E952F3EFEB02F5734953D430919D383BD39E7F7147615909894D3DEF7C4DD257D6C3", "partyVInfo": "91A64A60D582027BC74BE888F6EE73189CC481CB47C856DB2959084EE0C02ABEA68C775D3422D1AE98F66A7844D3710D7706169A613AF908037E", "suppPubInfo": "CC75D808BB2EDAC85535CC25297FDFDFE94AF34654DE37DA37B091C984854B65F9DED61E9588EA1C860C2DCDAEA22268A917052925556FA2936D", "suppPrivInfo": "2689DB763621691B059A1005A0F8BAB7A8FF4B696C33EAC411C2022EF462EFBC301698D3B5563EB69FA0283FB74F95D46B71D7E0937FDDBF5C90" } ] } ] }
response { "vsId": 2021126, "algorithm": "kdf-components", "testGroups": [ { "tgId": 1, "tests": [ { "tcId": 1, "derivedKey": "F84F12A451734149FA610D9127359F9A941272FFCA5393388125B2BC8073481C77516F4ED8D21A7ACD493D158BCC1388E6F22240812CFD69EC89" } ] } ] }
expected { "vsId": 2021126, "algorithm": "kdf-components", "mode": "ansix9.42", "revision": "1.0", "isSample": true, "testGroups": [ { "tgId": 1, "tests": [ { "tcId": 1, "derivedKey": "CA4E79F6AC5104929D180545E34614DDA85B6686B8DA437240423B2F9A283C1EC863352058939940E3B068AE00F003C39D13CEE02C0C06D7D538" } ] } ] }
`verbose output:
ACVP [INFO][show_tc_param_values:184]--> CON_OUT-TEST-2021126.1.1-20231214_112620
ACVP [INFO][show_tc_param_values:185]--> test: 2021126.1.1
ACVP [INFO][show_tc_param_values:186]--> algorithm: 4, DER
ACVP [INFO][show_tc_param_values:187]--> mode: 34, ANSI x9.42
ACVP [INFO][show_tc_param_values:188]--> testType: 1, AFT
OID[11] =
06 09 60 86 48 01 65 03 04 01 05
zz[36] =
38 AA 6E 97 CB DB DA 43 4C 77 BC E8 30 42 30 4D A7 2C 03 D6 FC 22 FD 61 87 B7 DE CF B7 96 CB 91
18 C2 DF 69
ACVP [INFO][show_tc_param_values:191]--> keyLen: 464
partyUInfo[58] =
82 A6 31 9B 72 32 C4 2D 5B 68 FC EB 1E B2 5F E2 05 41 D1 5A 5A AC 00 39 E9 52 F3 EF EB 02 F5 73
49 53 D4 30 91 9D 38 3B D3 9E 7F 71 47 61 59 09 89 4D 3D EF 7C 4D D2 57 D6 C3
partyVInfo[58] =
91 A6 4A 60 D5 82 02 7B C7 4B E8 88 F6 EE 73 18 9C C4 81 CB 47 C8 56 DB 29 59 08 4E E0 C0 2A BE
A6 8C 77 5D 34 22 D1 AE 98 F6 6A 78 44 D3 71 0D 77 06 16 9A 61 3A F9 08 03 7E
suppPubInfo[58] =
CC 75 D8 08 BB 2E DA C8 55 35 CC 25 29 7F DF DF E9 4A F3 46 54 DE 37 DA 37 B0 91 C9 84 85 4B 65
F9 DE D6 1E 95 88 EA 1C 86 0C 2D CD AE A2 22 68 A9 17 05 29 25 55 6F A2 93 6D
suppPrivInfo[58] =
26 89 DB 76 36 21 69 1B 05 9A 10 05 A0 F8 BA B7 A8 FF 4B 69 6C 33 EA C4 11 C2 02 2E F4 62 EF BC
30 16 98 D3 B5 56 3E B6 9F A0 28 3F B7 4F 95 D4 6B 71 D7 E0 93 7F DD BF 5C 90
ZZ [36] = 38 AA 6E 97 CB DB DA 43 4C 77 BC E8 30 42 30 4D A7 2C 03 D6 FC 22 FD 61 87 B7 DE CF B7 96 CB 91 18 C2 DF 69 count[6] = 04 04 00 00 00 01 OtherInfo(oid, count)[19] = 30 11 06 09 60 86 48 01 65 03 04 01 05 04 04 00 00 00 01 A0 3A 82 A6 31 9B 72 32 C4 2D 5B 68 FC EB 1E B2 5F E2 05 41 D1 5A 5A AC 00 39 E9 52 F3 EF EB 02 F5 73 49 53 D4 30 91 9D 38 3B D3 9E 7F 71 47 61 59 09 89 4D 3D EF 7C 4D D2 57 D6 C3 A1 3A 91 A6 4A 60 D5 82 02 7B C7 4B E8 88 F6 EE 73 18 9C C4 81 CB 47 C8 56 DB 29 59 08 4E E0 C0 2A BE A6 8C 77 5D 34 22 D1 AE 98 F6 6A 78 44 D3 71 0D 77 06 16 9A 61 3A F9 08 03 7E A2 3A CC 75 D8 08 BB 2E DA C8 55 35 CC 25 29 7F DF DF E9 4A F3 46 54 DE 37 DA 37 B0 91 C9 84 85 4B 65 F9 DE D6 1E 95 88 EA 1C 86 0C 2D CD AE A2 22 68 A9 17 05 29 25 55 6F A2 93 6D A3 3A 26 89 DB 76 36 21 69 1B 05 9A 10 05 A0 F8 BA B7 A8 FF 4B 69 6C 33 EA C4 11 C2 02 2E F4 62 EF BC 30 16 98 D3 B5 56 3E B6 9F A0 28 3F B7 4F 95 D4 6B 71 D7 E0 93 7F DD BF 5C 90 ACVP [INFO][get_optional_other_info_key_material:570]--> bytes used: 240 Optional Key Material[240] = A0 3A 82 A6 31 9B 72 32 C4 2D 5B 68 FC EB 1E B2 5F E2 05 41 D1 5A 5A AC 00 39 E9 52 F3 EF EB 02 F5 73 49 53 D4 30 91 9D 38 3B D3 9E 7F 71 47 61 59 09 89 4D 3D EF 7C 4D D2 57 D6 C3 A1 3A 91 A6 4A 60 D5 82 02 7B C7 4B E8 88 F6 EE 73 18 9C C4 81 CB 47 C8 56 DB 29 59 08 4E E0 C0 2A BE A6 8C 77 5D 34 22 D1 AE 98 F6 6A 78 44 D3 71 0D 77 06 16 9A 61 3A F9 08 03 7E A2 3A CC 75 D8 08 BB 2E DA C8 55 35 CC 25 29 7F DF DF E9 4A F3 46 54 DE 37 DA 37 B0 91 C9 84 85 4B 65 F9 DE D6 1E 95 88 EA 1C 86 0C 2D CD AE A2 22 68 A9 17 05 29 25 55 6F A2 93 6D A3 3A 26 89 DB 76 36 21 69 1B 05 9A 10 05 A0 F8 BA B7 A8 FF 4B 69 6C 33 EA C4 11 C2 02 2E F4 62 EF BC 30 16 98 D3 B5 56 3E B6 9F A0 28 3F B7 4F 95 D4 6B 71 D7 E0 93 7F DD BF 5C 90 key_material_other_info_buf[263] = 30 82 01 03 30 11 06 09 60 86 48 01 65 03 04 01 05 04 04 00 00 00 01 A0 3A 82 A6 31 9B 72 32 C4 2D 5B 68 FC EB 1E B2 5F E2 05 41 D1 5A 5A AC 00 39 E9 52 F3 EF EB 02 F5 73 49 53 D4 30 91 9D 38 3B D3 9E 7F 71 47 61 59 09 89 4D 3D EF 7C 4D D2 57 D6 C3 A1 3A 91 A6 4A 60 D5 82 02 7B C7 4B E8 88 F6 EE 73 18 9C C4 81 CB 47 C8 56 DB 29 59 08 4E E0 C0 2A BE A6 8C 77 5D 34 22 D1 AE 98 F6 6A 78 44 D3 71 0D 77 06 16 9A 61 3A F9 08 03 7E A2 3A CC 75 D8 08 BB 2E DA C8 55 35 CC 25 29 7F DF DF E9 4A F3 46 54 DE 37 DA 37 B0 91 C9 84 85 4B 65 F9 DE D6 1E 95 88 EA 1C 86 0C 2D CD AE A2 22 68 A9 17 05 29 25 55 6F A2 93 6D A3 3A 26 89 DB 76 36 21 69 1B 05 9A 10 05 A0 F8 BA B7 A8 FF 4B 69 6C 33 EA C4 11 C2 02 2E F4 62 EF BC 30 16 98 D3 B5 56 3E B6 9F A0 28 3F B7 4F 95 D4 6B 71 D7 E0 93 7F DD BF 5C 90 keyMaterialBuffer[299] = 38 AA 6E 97 CB DB DA 43 4C 77 BC E8 30 42 30 4D A7 2C 03 D6 FC 22 FD 61 87 B7 DE CF B7 96 CB 91 18 C2 DF 69 30 82 01 03 30 11 06 09 60 86 48 01 65 03 04 01 05 04 04 00 00 00 01 A0 3A 82 A6 31 9B 72 32 C4 2D 5B 68 FC EB 1E B2 5F E2 05 41 D1 5A 5A AC 00 39 E9 52 F3 EF EB 02 F5 73 49 53 D4 30 91 9D 38 3B D3 9E 7F 71 47 61 59 09 89 4D 3D EF 7C 4D D2 57 D6 C3 A1 3A 91 A6 4A 60 D5 82 02 7B C7 4B E8 88 F6 EE 73 18 9C C4 81 CB 47 C8 56 DB 29 59 08 4E E0 C0 2A BE A6 8C 77 5D 34 22 D1 AE 98 F6 6A 78 44 D3 71 0D 77 06 16 9A 61 3A F9 08 03 7E A2 3A CC 75 D8 08 BB 2E DA C8 55 35 CC 25 29 7F DF DF E9 4A F3 46 54 DE 37 DA 37 B0 91 C9 84 85 4B 65 F9 DE D6 1E 95 88 EA 1C 86 0C 2D CD AE A2 22 68 A9 17 05 29 25 55 6F A2 93 6D A3 3A 26 89 DB 76 36 21 69 1B 05 9A 10 05 A0 F8 BA B7 A8 FF 4B 69 6C 33 EA C4 11 C2 02 2E F4 62 EF BC 30 16 98 D3 B5 56 3E B6 9F A0 28 3F B7 4F 95 D4 6B 71 D7 E0 93 7F DD BF 5C 90 ACVP [INFO][show_tc_and_hash_param_values:144]--> (tc->tcId = 1) ACVP [INFO][show_tc_and_hash_param_values:145]--> itteration: 1 / 2 ACVP [INFO][show_tc_and_hash_param_values:147]--> (hash_param.algSHA = SHA256 HASH Result[32] = F8 4F 12 A4 51 73 41 49 FA 61 0D 91 27 35 9F 9A 94 12 72 FF CA 53 93 38 81 25 B2 BC 80 73 48 1C pbHashConcatBuffer[32] = F8 4F 12 A4 51 73 41 49 FA 61 0D 91 27 35 9F 9A 94 12 72 FF CA 53 93 38 81 25 B2 BC 80 73 48 1C ZZ [36] = 38 AA 6E 97 CB DB DA 43 4C 77 BC E8 30 42 30 4D A7 2C 03 D6 FC 22 FD 61 87 B7 DE CF B7 96 CB 91 18 C2 DF 69 count[6] = 04 04 00 00 00 02 OtherInfo(oid, count)[19] = 30 11 06 09 60 86 48 01 65 03 04 01 05 04 04 00 00 00 02 A0 3A 82 A6 31 9B 72 32 C4 2D 5B 68 FC EB 1E B2 5F E2 05 41 D1 5A 5A AC 00 39 E9 52 F3 EF EB 02 F5 73 49 53 D4 30 91 9D 38 3B D3 9E 7F 71 47 61 59 09 89 4D 3D EF 7C 4D D2 57 D6 C3 A1 3A 91 A6 4A 60 D5 82 02 7B C7 4B E8 88 F6 EE 73 18 9C C4 81 CB 47 C8 56 DB 29 59 08 4E E0 C0 2A BE A6 8C 77 5D 34 22 D1 AE 98 F6 6A 78 44 D3 71 0D 77 06 16 9A 61 3A F9 08 03 7E A2 3A CC 75 D8 08 BB 2E DA C8 55 35 CC 25 29 7F DF DF E9 4A F3 46 54 DE 37 DA 37 B0 91 C9 84 85 4B 65 F9 DE D6 1E 95 88 EA 1C 86 0C 2D CD AE A2 22 68 A9 17 05 29 25 55 6F A2 93 6D A3 3A 26 89 DB 76 36 21 69 1B 05 9A 10 05 A0 F8 BA B7 A8 FF 4B 69 6C 33 EA C4 11 C2 02 2E F4 62 EF BC 30 16 98 D3 B5 56 3E B6 9F A0 28 3F B7 4F 95 D4 6B 71 D7 E0 93 7F DD BF 5C 90 ACVP [INFO][get_optional_other_info_key_material:570]--> bytes used: 240 Optional Key Material[240] = A0 3A 82 A6 31 9B 72 32 C4 2D 5B 68 FC EB 1E B2 5F E2 05 41 D1 5A 5A AC 00 39 E9 52 F3 EF EB 02 F5 73 49 53 D4 30 91 9D 38 3B D3 9E 7F 71 47 61 59 09 89 4D 3D EF 7C 4D D2 57 D6 C3 A1 3A 91 A6 4A 60 D5 82 02 7B C7 4B E8 88 F6 EE 73 18 9C C4 81 CB 47 C8 56 DB 29 59 08 4E E0 C0 2A BE A6 8C 77 5D 34 22 D1 AE 98 F6 6A 78 44 D3 71 0D 77 06 16 9A 61 3A F9 08 03 7E A2 3A CC 75 D8 08 BB 2E DA C8 55 35 CC 25 29 7F DF DF E9 4A F3 46 54 DE 37 DA 37 B0 91 C9 84 85 4B 65 F9 DE D6 1E 95 88 EA 1C 86 0C 2D CD AE A2 22 68 A9 17 05 29 25 55 6F A2 93 6D A3 3A 26 89 DB 76 36 21 69 1B 05 9A 10 05 A0 F8 BA B7 A8 FF 4B 69 6C 33 EA C4 11 C2 02 2E F4 62 EF BC 30 16 98 D3 B5 56 3E B6 9F A0 28 3F B7 4F 95 D4 6B 71 D7 E0 93 7F DD BF 5C 90 key_material_other_info_buf[263] = 30 82 01 03 30 11 06 09 60 86 48 01 65 03 04 01 05 04 04 00 00 00 02 A0 3A 82 A6 31 9B 72 32 C4 2D 5B 68 FC EB 1E B2 5F E2 05 41 D1 5A 5A AC 00 39 E9 52 F3 EF EB 02 F5 73 49 53 D4 30 91 9D 38 3B D3 9E 7F 71 47 61 59 09 89 4D 3D EF 7C 4D D2 57 D6 C3 A1 3A 91 A6 4A 60 D5 82 02 7B C7 4B E8 88 F6 EE 73 18 9C C4 81 CB 47 C8 56 DB 29 59 08 4E E0 C0 2A BE A6 8C 77 5D 34 22 D1 AE 98 F6 6A 78 44 D3 71 0D 77 06 16 9A 61 3A F9 08 03 7E A2 3A CC 75 D8 08 BB 2E DA C8 55 35 CC 25 29 7F DF DF E9 4A F3 46 54 DE 37 DA 37 B0 91 C9 84 85 4B 65 F9 DE D6 1E 95 88 EA 1C 86 0C 2D CD AE A2 22 68 A9 17 05 29 25 55 6F A2 93 6D A3 3A 26 89 DB 76 36 21 69 1B 05 9A 10 05 A0 F8 BA B7 A8 FF 4B 69 6C 33 EA C4 11 C2 02 2E F4 62 EF BC 30 16 98 D3 B5 56 3E B6 9F A0 28 3F B7 4F 95 D4 6B 71 D7 E0 93 7F DD BF 5C 90 keyMaterialBuffer[299] = 38 AA 6E 97 CB DB DA 43 4C 77 BC E8 30 42 30 4D A7 2C 03 D6 FC 22 FD 61 87 B7 DE CF B7 96 CB 91 18 C2 DF 69 30 82 01 03 30 11 06 09 60 86 48 01 65 03 04 01 05 04 04 00 00 00 02 A0 3A 82 A6 31 9B 72 32 C4 2D 5B 68 FC EB 1E B2 5F E2 05 41 D1 5A 5A AC 00 39 E9 52 F3 EF EB 02 F5 73 49 53 D4 30 91 9D 38 3B D3 9E 7F 71 47 61 59 09 89 4D 3D EF 7C 4D D2 57 D6 C3 A1 3A 91 A6 4A 60 D5 82 02 7B C7 4B E8 88 F6 EE 73 18 9C C4 81 CB 47 C8 56 DB 29 59 08 4E E0 C0 2A BE A6 8C 77 5D 34 22 D1 AE 98 F6 6A 78 44 D3 71 0D 77 06 16 9A 61 3A F9 08 03 7E A2 3A CC 75 D8 08 BB 2E DA C8 55 35 CC 25 29 7F DF DF E9 4A F3 46 54 DE 37 DA 37 B0 91 C9 84 85 4B 65 F9 DE D6 1E 95 88 EA 1C 86 0C 2D CD AE A2 22 68 A9 17 05 29 25 55 6F A2 93 6D A3 3A 26 89 DB 76 36 21 69 1B 05 9A 10 05 A0 F8 BA B7 A8 FF 4B 69 6C 33 EA C4 11 C2 02 2E F4 62 EF BC 30 16 98 D3 B5 56 3E B6 9F A0 28 3F B7 4F 95 D4 6B 71 D7 E0 93 7F DD BF 5C 90 ACVP [INFO][show_tc_and_hash_param_values:144]--> (tc->tcId = 1) ACVP [INFO][show_tc_and_hash_param_values:145]--> itteration: 2 / 2 ACVP [INFO][show_tc_and_hash_param_values:147]--> (hash_param.algSHA = SHA256 HASH Result[32] = 77 51 6F 4E D8 D2 1A 7A CD 49 3D 15 8B CC 13 88 E6 F2 22 40 81 2C FD 69 EC 89 AD 8D 03 2B 37 FF pbHashConcatBuffer[64] = F8 4F 12 A4 51 73 41 49 FA 61 0D 91 27 35 9F 9A 94 12 72 FF CA 53 93 38 81 25 B2 BC 80 73 48 1C 77 51 6F 4E D8 D2 1A 7A CD 49 3D 15 8B CC 13 88 E6 F2 22 40 81 2C FD 69 EC 89 AD 8D 03 2B 37 FF derivedKey[58] = F8 4F 12 A4 51 73 41 49 FA 61 0D 91 27 35 9F 9A 94 12 72 FF CA 53 93 38 81 25 B2 BC 80 73 48 1C 77 51 6F 4E D8 D2 1A 7A CD 49 3D 15 8B CC 13 88 E6 F2 22 40 81 2C FD 69 EC 89`
ANSI-X9_42KDF-der-sha256-kl464_20231214_1130.txt ANSI-X9_42KDF-der-sha256-kl464_request.json ANSI-X9_42KDF-der-sha256-kl464_response.json ANSI-X9_42KDF-der-sha256-kl464_ts464422_vs2021126_20231213_112232_expected.json
Hi @MarkSimontonOfCG, I'm unable to provide a dump for that, but the values that go into the hash can be found within the code, here is where all that happens. What goes into it can be found within the DeriveKey
and DerEncode
methods.
I am going to update the documentation alongside this current release of *.33 coming out. Please let me know if there's any continued confusion that I can try and be helpful with.
Thanks for the response. I am redoing my code to somewhat mimic yours (as much as C can mimic C#) 😊
From: Joel Brockman @.> Sent: Wednesday, January 31, 2024 11:45 AM To: usnistgov/ACVP-Server @.> Cc: Mark Simonton (Capgemini America Inc) @.>; Mention @.> Subject: Re: [usnistgov/ACVP-Server] help request: kdf ansi x9.42 der; derived key does not match expected (Issue #291)
Hi @MarkSimontonOfCGhttps://github.com/MarkSimontonOfCG, I'm unable to provide a dump for that, but the values that go into the hash can be found within the code, herehttps://gitlab.nist.gov/gitlab/cvp/cavp/genvals/-/blob/develop/gen-val/src/crypto/src/NIST.CVP.ACVTS.Libraries.Crypto/ANSIX942/AnsiX942Der.cs?ref_type=heads is where all that happens. What goes into it can be found within the DeriveKey and DerEncode methods.
I am going to update the documentation alongside this current release of *.33 coming out. Please let me know if there's any continued confusion that I can try and be helpful with.
— Reply to this email directly, view it on GitHubhttps://github.com/usnistgov/ACVP-Server/issues/291#issuecomment-1919814158, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BDIH5TA36GKF7HH2BXASPM3YRKNMTAVCNFSM6AAAAAA57V567KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMJZHAYTIMJVHA. You are receiving this because you were mentioned.Message ID: @.***>
Gonna close this out, if a related issue pops up, can open up a new ticket. Thanks! Oh, and reference it here, ty!
env: demo
kdf: ansi x9.42 der kdf-component
I am requesting help; the results Our application is producing does not match the expected results. It is clear to me that I am not constructing the key-material properly.
The method I used to construct the key-material mimics the examples in RFC 2631; and I can generate the same output for the two examples.
suggestions requested.
Thanks, Mark Simonton
request_tc_1.json
which decodes as:
hash from BcryptHash
expected result