aboutsummaryrefslogtreecommitdiff
path: root/epare/countermeasures
diff options
context:
space:
mode:
Diffstat (limited to 'epare/countermeasures')
-rw-r--r--epare/countermeasures/measure.ipynb809
-rw-r--r--epare/countermeasures/results_sage.ipynb30
2 files changed, 155 insertions, 684 deletions
diff --git a/epare/countermeasures/measure.ipynb b/epare/countermeasures/measure.ipynb
index ef0df40..439b054 100644
--- a/epare/countermeasures/measure.ipynb
+++ b/epare/countermeasures/measure.ipynb
@@ -10,7 +10,7 @@
},
{
"cell_type": "code",
- "execution_count": 129,
+ "execution_count": null,
"id": "eab24cb8-af40-4cc1-be5f-f120fe9932ee",
"metadata": {},
"outputs": [],
@@ -28,7 +28,7 @@
},
{
"cell_type": "code",
- "execution_count": 132,
+ "execution_count": null,
"id": "4958e925-4764-4665-941d-fab0b00bd5bb",
"metadata": {},
"outputs": [],
@@ -42,7 +42,7 @@
},
{
"cell_type": "code",
- "execution_count": 133,
+ "execution_count": null,
"id": "5d4c75be-86e4-4924-82e3-5a75d48ed088",
"metadata": {},
"outputs": [],
@@ -52,28 +52,17 @@
},
{
"cell_type": "code",
- "execution_count": 134,
+ "execution_count": null,
"id": "88c049c9-ba24-41a7-830d-a9e81ecd5e67",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 134,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.select_applet()"
]
},
{
"cell_type": "code",
- "execution_count": 135,
+ "execution_count": null,
"id": "f65d7cb5-b54e-48bc-9a67-153b964f5df1",
"metadata": {},
"outputs": [],
@@ -83,18 +72,10 @@
},
{
"cell_type": "code",
- "execution_count": 136,
+ "execution_count": null,
"id": "ac9a16f7-ef19-4b05-86bd-f50b2b070037",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "I1 connected, I1 selected\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"atr = target.atr.hex()\n",
"card_map = {\n",
@@ -125,7 +106,7 @@
},
{
"cell_type": "code",
- "execution_count": 314,
+ "execution_count": null,
"id": "d52d4b8d-c203-4324-88d3-6409927d52b2",
"metadata": {},
"outputs": [],
@@ -139,7 +120,7 @@
},
{
"cell_type": "code",
- "execution_count": 358,
+ "execution_count": null,
"id": "d461d3a3-12d8-4df0-9ca3-a7d5b27cc739",
"metadata": {},
"outputs": [],
@@ -153,21 +134,10 @@
},
{
"cell_type": "code",
- "execution_count": 359,
+ "execution_count": null,
"id": "8fad24f9-0f25-4ccb-9284-1b31d08a42fb",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 359,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate(KeypairEnum.KEYPAIR_LOCAL,\n",
" KeyBuildEnum.BUILD_KEYBUILDER | KeyBuildEnum.BUILD_KEYPAIR,\n",
@@ -177,42 +147,20 @@
},
{
"cell_type": "code",
- "execution_count": 360,
+ "execution_count": null,
"id": "3daf588f-77d5-4e92-8dbc-ae49a79779e4",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateKaResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 360,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate_ka(KeyAgreementEnum.ALG_EC_SVDP_DH_PLAIN)"
]
},
{
"cell_type": "code",
- "execution_count": 361,
+ "execution_count": null,
"id": "288aacff-18d8-417e-80f3-7b4e3c09990b",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 361,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -222,21 +170,10 @@
},
{
"cell_type": "code",
- "execution_count": 362,
+ "execution_count": null,
"id": "cdd0d614-9e2d-4a85-a1d2-045a73647629",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 362,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -246,7 +183,7 @@
},
{
"cell_type": "code",
- "execution_count": 363,
+ "execution_count": null,
"id": "d22a09ca-cd35-41ff-a7e8-1845034ccc40",
"metadata": {},
"outputs": [],
@@ -263,28 +200,17 @@
},
{
"cell_type": "code",
- "execution_count": 364,
+ "execution_count": null,
"id": "7c65a25f-3743-4504-a1d5-85897b46c6eb",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "ResponseAPDU(data=b\"\\x90\\x00\\x00 S\\x9d\\x8b\\xeb\\xdfI\\x892\\xf1\\x90\\r\\xbb\\xca\\x10\\xb7\\xdfC\\x98\\xf7\\xb5\\x08\\x86\\xd9\\x87\\x0fa'\\x93\\xa4\\x0b>f\", sw=36864)"
- ]
- },
- "execution_count": 364,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"result.resp"
]
},
{
"cell_type": "code",
- "execution_count": 365,
+ "execution_count": null,
"id": "d496aaf3-11e3-4b21-a988-b1d28651540f",
"metadata": {},
"outputs": [],
@@ -309,7 +235,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"id": "8be52585-25c1-46c7-b6bc-7165198c7cba",
"metadata": {},
"outputs": [],
@@ -323,7 +249,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"id": "e6faa774-d813-40cd-a51f-8ae9a680c880",
"metadata": {},
"outputs": [],
@@ -346,42 +272,20 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"id": "edf7190f-eea5-4f3f-9271-7861ac10b2a6",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateKaResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate_ka(KeyAgreementEnum.ALG_EC_SVDP_DH)"
]
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "6bd6e733-2e8c-451e-8b62-f3075e97e877",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -391,21 +295,10 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "c1858f95-1183-42ac-92c6-190785f7e787",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -415,7 +308,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"id": "16d4f809-fc4e-4b56-be48-0932bee9df5d",
"metadata": {},
"outputs": [],
@@ -435,7 +328,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": null,
"id": "32f12f37-51d5-4325-ab1b-aea2635b4efc",
"metadata": {},
"outputs": [],
@@ -443,43 +336,20 @@
},
{
"cell_type": "code",
- "execution_count": 167,
+ "execution_count": null,
"id": "16a3567c-f2d9-40a4-bfae-d04d65a5feef",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "CleanupResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 167,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.cleanup()"
]
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"id": "a16af658-34d5-455e-a609-3075ede7dad7",
"metadata": {},
- "outputs": [
- {
- "ename": "NameError",
- "evalue": "name 'target' is not defined",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
- "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mtarget\u001b[49m\u001b[38;5;241m.\u001b[39mdisconnect()\n",
- "\u001b[0;31mNameError\u001b[0m: name 'target' is not defined"
- ]
- }
- ],
+ "outputs": [],
"source": [
"target.disconnect()"
]
@@ -494,7 +364,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "59619b5b-5ddf-41be-9d7d-5691ab8954af",
"metadata": {},
"outputs": [],
@@ -504,7 +374,7 @@
},
{
"cell_type": "code",
- "execution_count": 90,
+ "execution_count": null,
"id": "ad17301a-902f-48e9-936e-f553a1a8f006",
"metadata": {},
"outputs": [],
@@ -519,7 +389,7 @@
},
{
"cell_type": "code",
- "execution_count": 187,
+ "execution_count": null,
"id": "82e30c00-9409-4ecb-a049-4c7a4e5e358a",
"metadata": {},
"outputs": [],
@@ -531,21 +401,10 @@
},
{
"cell_type": "code",
- "execution_count": 188,
+ "execution_count": null,
"id": "975fb0b2-613b-430f-81bf-261e54be2afd",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 188,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate(KeypairEnum.KEYPAIR_LOCAL,\n",
" KeyBuildEnum.BUILD_KEYBUILDER | KeyBuildEnum.BUILD_KEYPAIR,\n",
@@ -565,21 +424,10 @@
},
{
"cell_type": "code",
- "execution_count": 189,
+ "execution_count": null,
"id": "2a64c51d-6597-4eaa-8266-c6dca1c1dd5b",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 189,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -589,30 +437,10 @@
},
{
"cell_type": "code",
- "execution_count": 153,
+ "execution_count": null,
"id": "068dba48-c8d8-442e-9a1e-7bc203d17e1b",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "GenerateResponse(sws=[0x2], sw=0x9000, success=False, error=False)\n",
- "ExportResponse(sws=[0x2], sw=0x9000, success=False, error=True, keypair=KEYPAIR_LOCAL, key=BOTH, params=KEYPAIR)\n"
- ]
- },
- {
- "ename": "ValueError",
- "evalue": "invalid literal for int() with base 16: ''",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
- "Cell \u001b[0;32mIn[153], line 12\u001b[0m\n\u001b[1;32m 10\u001b[0m export \u001b[38;5;241m=\u001b[39m target\u001b[38;5;241m.\u001b[39mexport(KeypairEnum\u001b[38;5;241m.\u001b[39mKEYPAIR_LOCAL, KeyEnum\u001b[38;5;241m.\u001b[39mBOTH,ParameterEnum\u001b[38;5;241m.\u001b[39mKEYPAIR)\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28mprint\u001b[39m(export)\n\u001b[0;32m---> 12\u001b[0m key \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mint\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mexport\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhex\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m16\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m point \u001b[38;5;241m=\u001b[39m params\u001b[38;5;241m.\u001b[39mcurve\u001b[38;5;241m.\u001b[39mdecode_point(export\u001b[38;5;241m.\u001b[39mparams[\u001b[38;5;241m0\u001b[39m])\n\u001b[1;32m 14\u001b[0m point_bytes \u001b[38;5;241m=\u001b[39m export\u001b[38;5;241m.\u001b[39mparams[\u001b[38;5;241m0\u001b[39m]\n",
- "\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 16: ''"
- ]
- }
- ],
+ "outputs": [],
"source": [
"if fixed_key:\n",
" keypair_dict = ECTesterTargetPCSC.encode_parameters(ParameterEnum.S, key)\n",
@@ -668,7 +496,7 @@
},
{
"cell_type": "code",
- "execution_count": 115,
+ "execution_count": null,
"id": "6c677375-2ff5-47bd-a3bb-69ad7014c016",
"metadata": {},
"outputs": [],
@@ -683,29 +511,10 @@
},
{
"cell_type": "code",
- "execution_count": 216,
+ "execution_count": null,
"id": "eb3dccf4-d692-4e63-b3de-ca38aa4a1cdc",
"metadata": {},
- "outputs": [
- {
- "ename": "KeyboardInterrupt",
- "evalue": "",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
- "Cell \u001b[0;32mIn[216], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mtarget\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcleanup\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/pyecsca/sca/target/ectester.py:964\u001b[0m, in \u001b[0;36mECTesterTarget.cleanup\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 958\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcleanup\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m CleanupResponse:\n\u001b[1;32m 959\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 960\u001b[0m \u001b[38;5;124;03m Send the Cleanup command.\u001b[39;00m\n\u001b[1;32m 961\u001b[0m \n\u001b[1;32m 962\u001b[0m \u001b[38;5;124;03m :return: The response.\u001b[39;00m\n\u001b[1;32m 963\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 964\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 965\u001b[0m \u001b[43m \u001b[49m\u001b[43mCommandAPDU\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mCLA_ECTESTER\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mInstructionEnum\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mINS_CLEANUP\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 966\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 967\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m CleanupResponse(resp)\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/pyecsca/sca/target/ectester.py:559\u001b[0m, in \u001b[0;36mECTesterTarget.send\u001b[0;34m(self, apdu)\u001b[0m\n\u001b[1;32m 557\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msend_apdu(apdu)\n\u001b[1;32m 558\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m resp\u001b[38;5;241m.\u001b[39msw \u001b[38;5;241m&\u001b[39m \u001b[38;5;241m0xFF00\u001b[39m \u001b[38;5;241m==\u001b[39m ISO7816\u001b[38;5;241m.\u001b[39mSW_BYTES_REMAINING_00:\n\u001b[0;32m--> 559\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend_apdu\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 560\u001b[0m \u001b[43m \u001b[49m\u001b[43mCommandAPDU\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0x00\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0xC0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0x00\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0x00\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msw\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m&\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0xFF\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 561\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 562\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/pyecsca/sca/target/PCSC.py:59\u001b[0m, in \u001b[0;36mPCSCTarget.send_apdu\u001b[0;34m(self, apdu)\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msend_apdu\u001b[39m(\u001b[38;5;28mself\u001b[39m, apdu: CommandAPDU) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ResponseAPDU:\n\u001b[0;32m---> 59\u001b[0m resp, sw1, sw2 \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtransmit\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mbytes\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mapdu\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ResponseAPDU(\u001b[38;5;28mbytes\u001b[39m(resp), sw1 \u001b[38;5;241m<<\u001b[39m \u001b[38;5;241m8\u001b[39m \u001b[38;5;241m|\u001b[39m sw2)\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/smartcard/CardConnectionDecorator.py:86\u001b[0m, in \u001b[0;36mCardConnectionDecorator.transmit\u001b[0;34m(self, command, protocol)\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtransmit\u001b[39m(\u001b[38;5;28mself\u001b[39m, command, protocol\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 85\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"call inner component transmit\"\"\"\u001b[39;00m\n\u001b[0;32m---> 86\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcomponent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtransmit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcommand\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m)\u001b[49m\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/smartcard/CardConnection.py:174\u001b[0m, in \u001b[0;36mCardConnection.transmit\u001b[0;34m(self, command, protocol)\u001b[0m\n\u001b[1;32m 170\u001b[0m Observable\u001b[38;5;241m.\u001b[39msetChanged(\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 171\u001b[0m Observable\u001b[38;5;241m.\u001b[39mnotifyObservers(\n\u001b[1;32m 172\u001b[0m \u001b[38;5;28mself\u001b[39m, CardConnectionEvent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcommand\u001b[39m\u001b[38;5;124m\"\u001b[39m, [command, protocol])\n\u001b[1;32m 173\u001b[0m )\n\u001b[0;32m--> 174\u001b[0m data, sw1, sw2 \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdoTransmit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcommand\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 175\u001b[0m Observable\u001b[38;5;241m.\u001b[39msetChanged(\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 176\u001b[0m Observable\u001b[38;5;241m.\u001b[39mnotifyObservers(\n\u001b[1;32m 177\u001b[0m \u001b[38;5;28mself\u001b[39m, CardConnectionEvent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresponse\u001b[39m\u001b[38;5;124m\"\u001b[39m, [data, sw1, sw2])\n\u001b[1;32m 178\u001b[0m )\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/smartcard/pcsc/PCSCCardConnection.py:267\u001b[0m, in \u001b[0;36mPCSCCardConnection.doTransmit\u001b[0;34m(self, command, protocol)\u001b[0m\n\u001b[1;32m 265\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhcard \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 266\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CardConnectionException(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCard not connected\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 267\u001b[0m hresult, response \u001b[38;5;241m=\u001b[39m \u001b[43mSCardTransmit\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhcard\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpcscprotocolheader\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcommand\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 268\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m hresult \u001b[38;5;241m!=\u001b[39m SCARD_S_SUCCESS:\n\u001b[1;32m 269\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CardConnectionException(\n\u001b[1;32m 270\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFailed to transmit with protocol \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 271\u001b[0m \u001b[38;5;241m+\u001b[39m dictProtocolHeader[pcscprotocolheader]\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 274\u001b[0m hresult\u001b[38;5;241m=\u001b[39mhresult,\n\u001b[1;32m 275\u001b[0m )\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/smartcard/scard/scard.py:997\u001b[0m, in \u001b[0;36mSCardTransmit\u001b[0;34m(hcard, pioSendPci, apducommand)\u001b[0m\n\u001b[1;32m 956\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mSCardTransmit\u001b[39m(hcard, pioSendPci, apducommand):\n\u001b[1;32m 957\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 958\u001b[0m \u001b[38;5;124;03m SCardTransmit( hcard, unsigned long pioSendPci, byte[] apducommand) -> SCARDRETCODE\u001b[39;00m\n\u001b[1;32m 959\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 995\u001b[0m \n\u001b[1;32m 996\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 997\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_scard\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mSCardTransmit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhcard\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpioSendPci\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapducommand\u001b[49m\u001b[43m)\u001b[49m\n",
- "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
- ]
- }
- ],
+ "outputs": [],
"source": [
"target.cleanup()\n"
]
@@ -730,7 +539,7 @@
},
{
"cell_type": "code",
- "execution_count": 213,
+ "execution_count": null,
"id": "4595a86a-7bb8-47cf-b4c9-93babc33a0b2",
"metadata": {},
"outputs": [],
@@ -741,7 +550,7 @@
},
{
"cell_type": "code",
- "execution_count": 214,
+ "execution_count": null,
"id": "8977904d-6e11-43ae-a459-413902b87a2d",
"metadata": {},
"outputs": [],
@@ -751,21 +560,10 @@
},
{
"cell_type": "code",
- "execution_count": 215,
+ "execution_count": null,
"id": "7880e434-1e72-418a-8a90-c6da659c777d",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateResponse(sws=[0x3], sw=0x9000, success=False, error=False)"
- ]
- },
- "execution_count": 215,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate(KeypairEnum.KEYPAIR_LOCAL,\n",
" KeyBuildEnum.BUILD_KEYBUILDER | KeyBuildEnum.BUILD_KEYPAIR,\n",
@@ -775,21 +573,10 @@
},
{
"cell_type": "code",
- "execution_count": 195,
+ "execution_count": null,
"id": "2a081121-1a75-4f19-a495-be9cbc76c136",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 195,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -837,7 +624,7 @@
},
{
"cell_type": "code",
- "execution_count": 204,
+ "execution_count": null,
"id": "2fcbb056-7bc9-40c3-872e-23dec4c96305",
"metadata": {},
"outputs": [],
@@ -872,7 +659,7 @@
},
{
"cell_type": "code",
- "execution_count": 51,
+ "execution_count": null,
"id": "33e2dd59-6d6a-4bbc-b5d3-8f8a76ff7229",
"metadata": {},
"outputs": [],
@@ -886,7 +673,7 @@
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": null,
"id": "4e5c98f0-8c7a-4330-ad9c-7462ae4c87ab",
"metadata": {},
"outputs": [],
@@ -896,42 +683,20 @@
},
{
"cell_type": "code",
- "execution_count": 53,
+ "execution_count": null,
"id": "a9aba5f9-045f-404e-b144-cbac0f73888a",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateKaResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 53,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate_ka(KeyAgreementEnum.ALG_EC_SVDP_DH)"
]
},
{
"cell_type": "code",
- "execution_count": 54,
+ "execution_count": null,
"id": "a9e510a8-019e-4817-a3b4-58cdb51bbbdb",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 54,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -941,21 +706,10 @@
},
{
"cell_type": "code",
- "execution_count": 55,
+ "execution_count": null,
"id": "4cef1b6b-1c70-4a64-aa54-4f7f1c420cd7",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 55,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -965,7 +719,7 @@
},
{
"cell_type": "code",
- "execution_count": 56,
+ "execution_count": null,
"id": "d4bf4415-6a06-47aa-970a-1d33426435c3",
"metadata": {},
"outputs": [],
@@ -985,7 +739,7 @@
},
{
"cell_type": "code",
- "execution_count": 58,
+ "execution_count": null,
"id": "fe139916-e09f-4714-b74d-4a4e6f0ee268",
"metadata": {},
"outputs": [],
@@ -1000,21 +754,10 @@
},
{
"cell_type": "code",
- "execution_count": 59,
+ "execution_count": null,
"id": "72052224-dfd6-42b4-ba95-1dc04a919aa4",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "CleanupResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 59,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.cleanup()"
]
@@ -1039,7 +782,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"id": "70932e65-8246-4f1e-8e45-79faa46e579c",
"metadata": {},
"outputs": [],
@@ -1049,7 +792,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "d965ad90-8692-4152-a3bf-9641e058a9f2",
"metadata": {},
"outputs": [],
@@ -1065,7 +808,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"id": "6859176c-c60c-4aec-a18d-90e1c5e59f78",
"metadata": {},
"outputs": [],
@@ -1077,42 +820,20 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"id": "7c38ca2a-417e-450d-8093-a9f2c757f26b",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateSigResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate_sig(SignatureEnum.ALG_ECDSA_SHA)"
]
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "38f4499a-97ad-49ba-aec9-d99aa264867c",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -1122,19 +843,10 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "7b1a48cc-6aa3-480e-b9a6-f82b0417275a",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "GenerateResponse(sws=[0x9000], sw=0x9000, success=True, error=False)\n",
- "ExportResponse(sws=[0x9000], sw=0x9000, success=True, error=False, keypair=KEYPAIR_LOCAL, key=BOTH, params=KEYPAIR)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"if fixed_key:\n",
" keypair_dict = ECTesterTargetPCSC.encode_parameters(ParameterEnum.S, key)\n",
@@ -1154,34 +866,10 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"id": "3b04e99a-43f4-4cf1-9f2c-d15c541cbc1a",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=3045022100b7a1ad7daaa91c559046f314f54f556b0755a0de0546023c43e7604fe9ed1fcc022053cfcb6bd1d819176bb27a7f01c3b9b278e15855f3fb578ff5d80a0a8dcedc2c)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=304402207b00aaa06e824519f0fc475641999088b987c5032d93c4faadaf6ed9849d864302205784ebecbee557ab096610c39717ddaffcdf115d3d0c3d824a28ebd0525c0ad6)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=30450220246ea8a99be18caa06ad09f34a06ea024bbacdc6583d9e300f14e59c1b77753a0221008460644a4c21ef6947876afd0fae698a9cb2b89375cc1e7ba1724fa32ab9aaa8)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=3045022100ad9e83310d27ec5f7abca5c692fd5f471d77a3d941b7fcfc83c3b8d4a56d2c3202204423d7d357f24f7f52c82b001bb8597f6dab0286d3d735558c3ae19e9d017501)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=30440220565efd10fdf1f946f23cf3c02117b3eb5c78404ba884e77ad7653ec04221441702207ec7e663d2b3b99ae7974762e3e2c4f48d717c279e138bd8f4aebdff53c6f9d2)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=304402203f7066e5058d7f81c1fe50f55e09b587a312e5ed22b818d59dc42dfeae008830022024f5135635ff1a8530e37151aefb296943d478d9d6ece2422637605fcae786d1)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=30450221009155eca05abb92446feac95cc9c8a68d4a28224d2b3a0a974901ade81c8c867302203d1ef9965e3108aaa9aac24a61c05def2cf529cc463f7c5bfdf30ffe265fd4a5)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=3044022025dba80a32c4fd3113546b720dc919a7cea69e281d868413a3848d61a3dd93e2022064a2c0ebe91513c2196d6e740e8d40b0e7ba175cf71ff37eb414c1c5b43e2aa5)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=3044022013c6f4a6ef818f36c0f4779c2a080596bc7fe395191b985fa157314a17be8f6602200829eae3a61e89ce8f35cf2999b41b41b3a4e933c6c2b2747482c092b7b9d82c)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=3046022100bd79ebe4616aeeb5d01c03a0045f2d35fc3d329eac42a436220096d44a24ab2f02210080415b761b0138694e177f9f8d6d851485f0116387913b316f34b17cca7d2fbc)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=304502205bc44571adde2f051423620385c3815614997656bbb818834e29d1b0a893a7be0221008a6f4230078c723676bbb36a1b31439288d628cebdc03100d7ede023943f8000)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=304502203c55a21518235a1a299e9ec8559454369285217e504e3ab945c5d9497f2634ad02210089346da34207b1a097a3df7667520ad1f6dcbe460fa1bfeb3d4501f1fe7d0348)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=3045022008d6dfe93ef19908d9874000934edc375398f897b00f1f15dfb9fe3722bbf7710221008075adaf60ec9601510d432ab055de6ce8757e7ac7f0d2a9b6784d3a66c09041)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=30460221008c42251028c17363772331c75e994b56a992bb95397e445138247e994973912402210085cfd11431bd29809b4ce133ac0cb7db12fffeb2e3e276a40767f2438505891a)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=304402200df4ad00ed4a98010bd054603362601b76c03fe45fe6e8833b84aaf7c17ed19c0220759b1b892cb5152936beb657ed1f5b71762ae50ccba81617fc20e046d2cdf729)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=304502201a1c6e6536003eff5798f1643b16cf03aa4a1c42b02f8cdffb37a3e18b926d770221009f20fdb07ee9b49bade03e361dd0d21ac3ab268b083c81ccfd40c4d36209f251)\n",
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=3046022100c760d929ef4ff8a96cd3b03817d02a3010a0c4372b469d06139f7bb2df470d8d022100920cc5203fd3c4a6b142c0a77e31e9df8bf2e10c3f89d34ebb30bb03e6f85bb6)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"result_lines = []\n",
"\n",
@@ -1195,7 +883,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"id": "50389671-934f-45ad-9511-0b46af7cecd5",
"metadata": {},
"outputs": [],
@@ -1210,21 +898,10 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": null,
"id": "06564085-bcb0-4108-80f2-f14d51062967",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "CleanupResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.cleanup()"
]
@@ -1249,7 +926,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": null,
"id": "d360b9c5-2076-481c-baa9-0524098e5f27",
"metadata": {},
"outputs": [],
@@ -1261,7 +938,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": null,
"id": "0b7dba4e-39a1-4559-8065-8f40074c1792",
"metadata": {},
"outputs": [],
@@ -1271,42 +948,20 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": null,
"id": "8bc87547-1186-44f8-b575-d61fd247d92c",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateKaResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 17,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate_ka(KeypairEnum.KEYPAIR_LOCAL)"
]
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": null,
"id": "087ec5a5-c336-49f5-858a-6982dba8cba8",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 18,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -1316,7 +971,7 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": null,
"id": "ca66f4a8-0592-41fd-b585-af564782bcc2",
"metadata": {},
"outputs": [],
@@ -1337,7 +992,7 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": null,
"id": "136b6482-1fab-4380-8c8b-89d453845d58",
"metadata": {},
"outputs": [],
@@ -1352,7 +1007,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"id": "76307bc8-6b02-450e-81ce-505d9a18f009",
"metadata": {},
"outputs": [],
@@ -1370,7 +1025,7 @@
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": null,
"id": "aaab3211-8b0b-41fa-bb68-a65234f32880",
"metadata": {},
"outputs": [],
@@ -1384,7 +1039,7 @@
},
{
"cell_type": "code",
- "execution_count": 31,
+ "execution_count": null,
"id": "fc60fce3-944a-414a-8b0a-fafbe1db2a4b",
"metadata": {},
"outputs": [],
@@ -1394,42 +1049,20 @@
},
{
"cell_type": "code",
- "execution_count": 32,
+ "execution_count": null,
"id": "2a646481-71c0-4c65-b4ba-62957ae72a3f",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateKaResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 32,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate_ka(KeyAgreementEnum.ALG_EC_SVDP_DH)"
]
},
{
"cell_type": "code",
- "execution_count": 33,
+ "execution_count": null,
"id": "1493b7cc-e5e6-46a6-a2e5-27247e670cfb",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 33,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -1439,21 +1072,10 @@
},
{
"cell_type": "code",
- "execution_count": 34,
+ "execution_count": null,
"id": "b2296297-23d9-4af9-8d8d-5dbd2db1004a",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 34,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -1463,28 +1085,10 @@
},
{
"cell_type": "code",
- "execution_count": 35,
+ "execution_count": null,
"id": "1ed11d52-d7cd-471e-9ac3-02b9248dfb9a",
"metadata": {},
- "outputs": [
- {
- "ename": "CardConnectionException",
- "evalue": "Failed to transmit with protocol T1. Transaction failed.: Transaction failed. (0x80100016)",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mCardConnectionException\u001b[0m Traceback (most recent call last)",
- "Cell \u001b[0;32mIn[35], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m result_lines \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m _ \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(samples):\n\u001b[0;32m----> 4\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mtarget\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mecdh_direct\u001b[49m\u001b[43m(\u001b[49m\u001b[43mKeypairEnum\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mKEYPAIR_LOCAL\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43mTransformationEnum\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mNONE\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mKeyAgreementEnum\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mALG_EC_SVDP_DH\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mpoint_bytes\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# pubkey as bytes\u001b[39;00m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m result\u001b[38;5;241m.\u001b[39msuccess:\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28mprint\u001b[39m(result)\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/pyecsca/sca/target/ectester.py:875\u001b[0m, in \u001b[0;36mECTesterTarget.ecdh_direct\u001b[0;34m(self, privkey, export, transformation, ka_type, pubkey)\u001b[0m\n\u001b[1;32m 857\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mecdh_direct\u001b[39m(\n\u001b[1;32m 858\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 859\u001b[0m privkey: KeypairEnum,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 863\u001b[0m pubkey: \u001b[38;5;28mbytes\u001b[39m,\n\u001b[1;32m 864\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ECDHResponse:\n\u001b[1;32m 865\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 866\u001b[0m \u001b[38;5;124;03m Send the ECDH direct command.\u001b[39;00m\n\u001b[1;32m 867\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 873\u001b[0m \u001b[38;5;124;03m :return: The response.\u001b[39;00m\n\u001b[1;32m 874\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 875\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 876\u001b[0m \u001b[43m \u001b[49m\u001b[43mCommandAPDU\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 877\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mCLA_ECTESTER\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 878\u001b[0m \u001b[43m \u001b[49m\u001b[43mInstructionEnum\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mINS_ECDH_DIRECT\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 879\u001b[0m \u001b[43m \u001b[49m\u001b[43mprivkey\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 880\u001b[0m \u001b[43m \u001b[49m\u001b[43mExportEnum\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_bool\u001b[49m\u001b[43m(\u001b[49m\u001b[43mexport\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 881\u001b[0m \u001b[43m \u001b[49m\u001b[43mtransformation\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_bytes\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbig\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 882\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43mbytes\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[43mka_type\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 883\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mpubkey\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_bytes\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbig\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 884\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mpubkey\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 885\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 886\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 887\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ECDHResponse(resp, export)\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/pyecsca/sca/target/ectester.py:557\u001b[0m, in \u001b[0;36mECTesterTarget.send\u001b[0;34m(self, apdu)\u001b[0m\n\u001b[1;32m 555\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ChunkingException()\n\u001b[1;32m 556\u001b[0m apdu \u001b[38;5;241m=\u001b[39m CommandAPDU(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mCLA_ECTESTER, InstructionEnum\u001b[38;5;241m.\u001b[39mINS_PERFORM, \u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m0\u001b[39m)\n\u001b[0;32m--> 557\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend_apdu\u001b[49m\u001b[43m(\u001b[49m\u001b[43mapdu\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 558\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m resp\u001b[38;5;241m.\u001b[39msw \u001b[38;5;241m&\u001b[39m \u001b[38;5;241m0xFF00\u001b[39m \u001b[38;5;241m==\u001b[39m ISO7816\u001b[38;5;241m.\u001b[39mSW_BYTES_REMAINING_00:\n\u001b[1;32m 559\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msend_apdu(\n\u001b[1;32m 560\u001b[0m CommandAPDU(\u001b[38;5;241m0x00\u001b[39m, \u001b[38;5;241m0xC0\u001b[39m, \u001b[38;5;241m0x00\u001b[39m, \u001b[38;5;241m0x00\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m, resp\u001b[38;5;241m.\u001b[39msw \u001b[38;5;241m&\u001b[39m \u001b[38;5;241m0xFF\u001b[39m)\n\u001b[1;32m 561\u001b[0m )\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/pyecsca/sca/target/PCSC.py:59\u001b[0m, in \u001b[0;36mPCSCTarget.send_apdu\u001b[0;34m(self, apdu)\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msend_apdu\u001b[39m(\u001b[38;5;28mself\u001b[39m, apdu: CommandAPDU) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ResponseAPDU:\n\u001b[0;32m---> 59\u001b[0m resp, sw1, sw2 \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtransmit\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mbytes\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mapdu\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ResponseAPDU(\u001b[38;5;28mbytes\u001b[39m(resp), sw1 \u001b[38;5;241m<<\u001b[39m \u001b[38;5;241m8\u001b[39m \u001b[38;5;241m|\u001b[39m sw2)\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/smartcard/CardConnectionDecorator.py:86\u001b[0m, in \u001b[0;36mCardConnectionDecorator.transmit\u001b[0;34m(self, command, protocol)\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtransmit\u001b[39m(\u001b[38;5;28mself\u001b[39m, command, protocol\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 85\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"call inner component transmit\"\"\"\u001b[39;00m\n\u001b[0;32m---> 86\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcomponent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtransmit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcommand\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m)\u001b[49m\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/smartcard/CardConnection.py:174\u001b[0m, in \u001b[0;36mCardConnection.transmit\u001b[0;34m(self, command, protocol)\u001b[0m\n\u001b[1;32m 170\u001b[0m Observable\u001b[38;5;241m.\u001b[39msetChanged(\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 171\u001b[0m Observable\u001b[38;5;241m.\u001b[39mnotifyObservers(\n\u001b[1;32m 172\u001b[0m \u001b[38;5;28mself\u001b[39m, CardConnectionEvent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcommand\u001b[39m\u001b[38;5;124m\"\u001b[39m, [command, protocol])\n\u001b[1;32m 173\u001b[0m )\n\u001b[0;32m--> 174\u001b[0m data, sw1, sw2 \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdoTransmit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcommand\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 175\u001b[0m Observable\u001b[38;5;241m.\u001b[39msetChanged(\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 176\u001b[0m Observable\u001b[38;5;241m.\u001b[39mnotifyObservers(\n\u001b[1;32m 177\u001b[0m \u001b[38;5;28mself\u001b[39m, CardConnectionEvent(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresponse\u001b[39m\u001b[38;5;124m\"\u001b[39m, [data, sw1, sw2])\n\u001b[1;32m 178\u001b[0m )\n",
- "File \u001b[0;32m~/ECTester/ectester/libs_analysis/env/lib/python3.10/site-packages/smartcard/pcsc/PCSCCardConnection.py:269\u001b[0m, in \u001b[0;36mPCSCCardConnection.doTransmit\u001b[0;34m(self, command, protocol)\u001b[0m\n\u001b[1;32m 267\u001b[0m hresult, response \u001b[38;5;241m=\u001b[39m SCardTransmit(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhcard, pcscprotocolheader, command)\n\u001b[1;32m 268\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m hresult \u001b[38;5;241m!=\u001b[39m SCARD_S_SUCCESS:\n\u001b[0;32m--> 269\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CardConnectionException(\n\u001b[1;32m 270\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFailed to transmit with protocol \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 271\u001b[0m \u001b[38;5;241m+\u001b[39m dictProtocolHeader[pcscprotocolheader]\n\u001b[1;32m 272\u001b[0m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 273\u001b[0m \u001b[38;5;241m+\u001b[39m SCardGetErrorMessage(hresult),\n\u001b[1;32m 274\u001b[0m hresult\u001b[38;5;241m=\u001b[39mhresult,\n\u001b[1;32m 275\u001b[0m )\n\u001b[1;32m 277\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(response) \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m2\u001b[39m:\n\u001b[1;32m 278\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CardConnectionException(\n\u001b[1;32m 279\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCard returned no valid response\u001b[39m\u001b[38;5;124m\"\u001b[39m, hresult\u001b[38;5;241m=\u001b[39mhresult\n\u001b[1;32m 280\u001b[0m )\n",
- "\u001b[0;31mCardConnectionException\u001b[0m: Failed to transmit with protocol T1. Transaction failed.: Transaction failed. (0x80100016)"
- ]
- }
- ],
+ "outputs": [],
"source": [
"result_lines = []\n",
"\n",
@@ -1501,7 +1105,7 @@
},
{
"cell_type": "code",
- "execution_count": 36,
+ "execution_count": null,
"id": "d88d32e1-c158-4eb9-855f-a18411d186b0",
"metadata": {},
"outputs": [],
@@ -1516,21 +1120,10 @@
},
{
"cell_type": "code",
- "execution_count": 38,
+ "execution_count": null,
"id": "01a546eb-936b-433f-a87e-749c6db8e76b",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[b\"\\xf7\\xd1\\xee\\x97Nz*?'v\\x98\\x96\\x14A\\x1e\\xc8GD\\xe3$\"]"
- ]
- },
- "execution_count": 38,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"result.params"
]
@@ -1547,7 +1140,7 @@
},
{
"cell_type": "code",
- "execution_count": 46,
+ "execution_count": null,
"id": "9afadc85-672d-44bf-beaf-af68f588d831",
"metadata": {},
"outputs": [],
@@ -1565,7 +1158,7 @@
},
{
"cell_type": "code",
- "execution_count": 38,
+ "execution_count": null,
"id": "ad0f0e52-9a64-41fe-8464-edbace9e3bb0",
"metadata": {},
"outputs": [],
@@ -1581,7 +1174,7 @@
},
{
"cell_type": "code",
- "execution_count": 39,
+ "execution_count": null,
"id": "a27c974e-5adb-482f-b3f3-c4a1bd2a00e4",
"metadata": {},
"outputs": [],
@@ -1592,21 +1185,10 @@
},
{
"cell_type": "code",
- "execution_count": 40,
+ "execution_count": null,
"id": "3a29e9df-87b7-4e4d-a8d0-796a0b09e678",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 40,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate(KeypairEnum.KEYPAIR_LOCAL,\n",
" KeyBuildEnum.BUILD_KEYBUILDER | KeyBuildEnum.BUILD_KEYPAIR,\n",
@@ -1616,42 +1198,20 @@
},
{
"cell_type": "code",
- "execution_count": 41,
+ "execution_count": null,
"id": "351c3451-f327-4ea6-9a1f-1057af63cb37",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateSigResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 41,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate_sig(SignatureEnum.ALG_ECDSA_SHA)"
]
},
{
"cell_type": "code",
- "execution_count": 42,
+ "execution_count": null,
"id": "5699c6f6-dd87-46d7-a2b8-cdd4a4c67624",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -1661,18 +1221,10 @@
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": null,
"id": "d2e691a6-1ad1-4df8-bf77-6ad9852d3c78",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"keypair_dict = ECTesterTargetPCSC.encode_parameters(ParameterEnum.S, key)\n",
"keypair_dict.update(ECTesterTargetPCSC.encode_parameters(ParameterEnum.W, point))\n",
@@ -1684,7 +1236,7 @@
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": null,
"id": "e4b3b492-4aa4-4a62-bcde-8c49e5fdc0da",
"metadata": {},
"outputs": [],
@@ -1715,7 +1267,7 @@
},
{
"cell_type": "code",
- "execution_count": 45,
+ "execution_count": null,
"id": "bd03c4b5-99ac-43ab-ac20-12f7639a5632",
"metadata": {},
"outputs": [],
@@ -1740,7 +1292,7 @@
},
{
"cell_type": "code",
- "execution_count": 137,
+ "execution_count": null,
"id": "84a55a95-0df4-4036-a9bb-64c36364beaa",
"metadata": {},
"outputs": [],
@@ -1750,7 +1302,7 @@
},
{
"cell_type": "code",
- "execution_count": 138,
+ "execution_count": null,
"id": "cae5894c-6b10-4311-be58-796a7f5b8496",
"metadata": {},
"outputs": [],
@@ -1772,7 +1324,7 @@
},
{
"cell_type": "code",
- "execution_count": 139,
+ "execution_count": null,
"id": "b89f9209-e956-4bf6-9647-eec318aa4505",
"metadata": {},
"outputs": [],
@@ -1791,7 +1343,7 @@
},
{
"cell_type": "code",
- "execution_count": 140,
+ "execution_count": null,
"id": "2ba741cf-3dd8-4ce9-a097-887862ee6afd",
"metadata": {},
"outputs": [],
@@ -1801,21 +1353,10 @@
},
{
"cell_type": "code",
- "execution_count": 141,
+ "execution_count": null,
"id": "9a723e27-e174-4ade-a104-571185170b8c",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 141,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate(KeypairEnum.KEYPAIR_LOCAL,\n",
" KeyBuildEnum.BUILD_KEYBUILDER | KeyBuildEnum.BUILD_KEYPAIR,\n",
@@ -1825,42 +1366,20 @@
},
{
"cell_type": "code",
- "execution_count": 142,
+ "execution_count": null,
"id": "e6f06396-5fab-43c6-9c27-14d210479546",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "AllocateSigResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 142,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.allocate_sig(SignatureEnum.ALG_ECDSA_SHA)"
]
},
{
"cell_type": "code",
- "execution_count": 143,
+ "execution_count": null,
"id": "6998533e-794b-44fb-b186-f30abb517d60",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)"
- ]
- },
- "execution_count": 143,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.set(KeypairEnum.KEYPAIR_LOCAL,\n",
" CurveEnum.external,\n",
@@ -1870,18 +1389,10 @@
},
{
"cell_type": "code",
- "execution_count": 144,
+ "execution_count": null,
"id": "6c947e4c-44c1-462f-9702-1d3f1253ea8b",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"keypair_dict = ECTesterTargetPCSC.encode_parameters(ParameterEnum.S, key)\n",
"keypair_dict.update(ECTesterTargetPCSC.encode_parameters(ParameterEnum.W, point))\n",
@@ -1893,28 +1404,10 @@
},
{
"cell_type": "code",
- "execution_count": 146,
+ "execution_count": null,
"id": "e93c5153-4630-45c5-8b2c-10ce4b7b6bda",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "True\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "ECDSAResponse(sws=[0x9000], sw=0x9000, success=True, error=False, sig=304402203f74cc77f114f8e8b8909e8fb42d5037907058460c0d4f442a904e918b490f380220097b869aa3a4925a60e51f7cf223ced8337b7ef7974d797dd94f41d4874192dd)"
- ]
- },
- "execution_count": 146,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"sign_response = target.ecdsa_sign(KeypairEnum.KEYPAIR_LOCAL,True,SignatureEnum.ALG_ECDSA_SHA,data)\n",
"print(is_r_even(sign_response.signature,params.full_order//2))\n",
@@ -1923,39 +1416,20 @@
},
{
"cell_type": "code",
- "execution_count": 147,
+ "execution_count": null,
"id": "09c1c1a4-d96d-41f4-a58a-f7551bd671e1",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "ECDSAResponse(sws=[0x9000], sw=0x9000, success=True, error=False, sig=)"
- ]
- },
- "execution_count": 147,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.ecdsa_verify(KeypairEnum.KEYPAIR_LOCAL,SignatureEnum.ALG_ECDSA_SHA,sign_response.signature,data)"
]
},
{
"cell_type": "code",
- "execution_count": 148,
+ "execution_count": null,
"id": "ea58b47f-1bd7-4717-852e-526ff33090ea",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "SetResponse(sws=[0x9000], sw=0x9000, success=True, error=False)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"keypair_dict = ECTesterTargetPCSC.encode_parameters(ParameterEnum.S, key)\n",
"keypair_dict.update(ECTesterTargetPCSC.encode_parameters(ParameterEnum.W, point_wrong))\n",
@@ -1967,21 +1441,10 @@
},
{
"cell_type": "code",
- "execution_count": 149,
+ "execution_count": null,
"id": "6ebd8564-02dc-4cba-9d16-953ca7f858cf",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "ECDSAResponse(sws=[0xee1], sw=0x9000, success=False, error=False, sig=)"
- ]
- },
- "execution_count": 149,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"target.ecdsa_verify(KeypairEnum.KEYPAIR_LOCAL,SignatureEnum.ALG_ECDSA_SHA,sign_response.signature,data)"
]
diff --git a/epare/countermeasures/results_sage.ipynb b/epare/countermeasures/results_sage.ipynb
index a6384a0..92df739 100644
--- a/epare/countermeasures/results_sage.ipynb
+++ b/epare/countermeasures/results_sage.ipynb
@@ -149,7 +149,7 @@
" values = {ZZ((nonceG+i*nG)[0])%self.n:i for i in range(3)}\n",
" if r in values:\n",
" counts[nonce%3][values[r]]+=1\n",
- " print(nonce%2,values[r])\n",
+ " # print(nonce%2,values[r])\n",
" else:\n",
" others+=1\n",
" for kmod,cnts in counts.items():\n",
@@ -350,8 +350,9 @@
" if ((dp-scalar)%self.real_n)%(self.n-self.real_n)==0:\n",
" mask = ZZ(((dp-scalar)%self.real_n)/(self.n-self.real_n))\n",
" print(f\"Mask has {mask.nbits()} bits ({mask}), {scalar}, {dp}\")\n",
+ " return\n",
" \n",
- " return ds\n",
+ " # return ds\n",
" print(\"No mask found\")\n",
" \n",
" \n",
@@ -361,7 +362,7 @@
" params = []\n",
" for line in sig_lines[:N]:\n",
" nonce = int(line[\"nonce\"],16)\n",
- " print(nonce)\n",
+ " # print(nonce)\n",
" r, s = line[\"signature\"]\n",
" r = r%self.n\n",
" candidates = []\n",
@@ -373,7 +374,7 @@
" r+=self.n\n",
" ds = self.compute_mask(nonce,candidates,self.gen)\n",
" params.append((nonce,rss,ds))\n",
- " return params\n",
+ " # return params\n",
" print()\n",
" \n",
"\n",
@@ -381,7 +382,7 @@
" def recover_keygen(self,card, N=3):\n",
" self.print_card_name(card)\n",
" keygen_lines = self.load_csv_keygens(card,\"keygen\")\n",
- " for line in keygen_lines:\n",
+ " for line in keygen_lines[:N]:\n",
" pubW,privS = line[\"point\"],line[\"key\"]\n",
" pubWx,pubWy = pubW[2:][:len(pubW)//2-1],pubW[2:][len(pubW)//2-1:]\n",
" pubWx,pubWy,privS = map(lambda x: int(x,16),[pubWx,pubWy,privS])\n",
@@ -394,10 +395,9 @@
" def recover_ecdh_plain(self,card, N = 3):\n",
" self.print_card_name(card)\n",
" secret_lines = self.load_csv_ecdhs(card,\"ecdh_randomkey\")\n",
- " for line in secret_lines:\n",
+ " for line in secret_lines[:N]:\n",
" privS,secret = line[\"key\"],line[\"secret\"]\n",
" secret,privS = map(lambda x: int(x,16),[secret,privS])\n",
- " print(privS%2)\n",
" R = self.curve.lift_x(self.curve.base_field()(secret))\n",
" self.compute_mask(privS,[R],self.public) \n",
" print()\n",
@@ -407,7 +407,7 @@
" self.print_card_name(card)\n",
" secret_lines = self.load_csv_ecdhs(card,\"ecdh_plain_good_gen\")\n",
"\n",
- " for line in secret_lines:\n",
+ " for line in secret_lines[:N]:\n",
" privS,secret = line[\"key\"],line[\"secret\"]\n",
" secret,privS = map(lambda x: int(x,16),[secret,privS])\n",
" \n",
@@ -562,7 +562,7 @@
"outputs": [],
"source": [
"for card in cards:\n",
- " params = gsrmask.recover_keygen(card,N=10)"
+ " params = gsrmask.recover_keygen(card,N=1)"
]
},
{
@@ -573,7 +573,7 @@
"outputs": [],
"source": [
"for card in cards:\n",
- " params = gsrmask.recover_ecdsa(card,N=10)"
+ " params = gsrmask.recover_ecdsa(card,N=1)"
]
},
{
@@ -584,8 +584,16 @@
"outputs": [],
"source": [
"for card in cards:\n",
- " params = gsrmask.recover_ecdh_plain(card,N=10)"
+ " params = gsrmask.recover_ecdh_plain(card,N=1)"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "adba1ff5-4235-4084-b1dd-ab206903bb24",
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {