add renew to tutorial
This commit is contained in:
@@ -12,12 +12,12 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:43.394441Z",
|
"end_time": "2024-08-01T19:17:14.809230Z",
|
||||||
"start_time": "2024-08-01T17:32:43.392271Z"
|
"start_time": "2024-08-01T19:17:14.807153Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"execution_count": 41
|
"execution_count": 90
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
@@ -38,12 +38,12 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:43.447194Z",
|
"end_time": "2024-08-01T19:17:14.881089Z",
|
||||||
"start_time": "2024-08-01T17:32:43.444212Z"
|
"start_time": "2024-08-01T19:17:14.877818Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"execution_count": 42
|
"execution_count": 91
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
@@ -53,12 +53,12 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:43.450349Z",
|
"end_time": "2024-08-01T19:17:14.887878Z",
|
||||||
"start_time": "2024-08-01T17:32:43.448288Z"
|
"start_time": "2024-08-01T19:17:14.885951Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"execution_count": 43
|
"execution_count": 92
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
@@ -98,12 +98,12 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:43.624648Z",
|
"end_time": "2024-08-01T19:17:15.071180Z",
|
||||||
"start_time": "2024-08-01T17:32:43.451407Z"
|
"start_time": "2024-08-01T19:17:14.890419Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"execution_count": 44
|
"execution_count": 93
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
@@ -137,8 +137,8 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:43.627977Z",
|
"end_time": "2024-08-01T19:17:15.075131Z",
|
||||||
"start_time": "2024-08-01T17:32:43.625820Z"
|
"start_time": "2024-08-01T19:17:15.072535Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
@@ -146,17 +146,17 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Customer Sets: [21921, 7738, 57204, 44555, 38162, 22025]\n",
|
"Customer Sets: [27169, 36659, 54746, 56159, 47007, 38654]\n",
|
||||||
"Keypad View\n",
|
"Keypad View\n",
|
||||||
"Key 0: [25764, 64003, 42138, 9976, 26896, 36991]\n",
|
"Key 0: [63421, 44364, 4387, 12321, 14840, 38251]\n",
|
||||||
"Key 1: [53269, 22932, 2731, 14908, 55210, 40777]\n",
|
"Key 1: [42757, 19108, 4797, 54866, 10010, 33108]\n",
|
||||||
"Key 2: [11304, 9784, 26683, 48512, 24904, 42130]\n",
|
"Key 2: [61136, 42782, 46073, 53243, 53024, 53858]\n",
|
||||||
"Key 3: [47297, 63193, 31705, 44, 46268, 28475]\n",
|
"Key 3: [44676, 54825, 25002, 7458, 37684, 16872]\n",
|
||||||
"Key 4: [38192, 28529, 11254, 19824, 47753, 34896]\n"
|
"Key 4: [65393, 10661, 14854, 8995, 64876, 36070]\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"execution_count": 45
|
"execution_count": 94
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
@@ -180,8 +180,8 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:43.631493Z",
|
"end_time": "2024-08-01T19:17:15.078753Z",
|
||||||
"start_time": "2024-08-01T17:32:43.628798Z"
|
"start_time": "2024-08-01T19:17:15.076083Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
@@ -190,16 +190,16 @@
|
|||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Set to Attribute Map:\n",
|
"Set to Attribute Map:\n",
|
||||||
"21921: [25764, 53269, 11304, 47297, 38192]\n",
|
"27169: [63421, 42757, 61136, 44676, 65393]\n",
|
||||||
"7738: [64003, 22932, 9784, 63193, 28529]\n",
|
"36659: [44364, 19108, 42782, 54825, 10661]\n",
|
||||||
"57204: [42138, 2731, 26683, 31705, 11254]\n",
|
"54746: [4387, 4797, 46073, 25002, 14854]\n",
|
||||||
"44555: [9976, 14908, 48512, 44, 19824]\n",
|
"56159: [12321, 54866, 53243, 7458, 8995]\n",
|
||||||
"38162: [26896, 55210, 24904, 46268, 47753]\n",
|
"47007: [14840, 10010, 53024, 37684, 64876]\n",
|
||||||
"22025: [36991, 40777, 42130, 28475, 34896]\n"
|
"38654: [38251, 33108, 53858, 16872, 36070]\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"execution_count": 46
|
"execution_count": 95
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
@@ -229,27 +229,27 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:43.636317Z",
|
"end_time": "2024-08-01T19:17:15.083395Z",
|
||||||
"start_time": "2024-08-01T17:32:43.633201Z"
|
"start_time": "2024-08-01T19:17:15.080158Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"[[18, 11, 22, 2, 19],\n",
|
"[[25, 14, 15, 23, 28],\n",
|
||||||
" [0, 23, 28, 8, 25],\n",
|
" [13, 26, 21, 17, 4],\n",
|
||||||
" [6, 5, 10, 26, 13],\n",
|
" [19, 20, 27, 29, 10],\n",
|
||||||
" [12, 17, 4, 14, 1],\n",
|
" [1, 8, 3, 5, 22],\n",
|
||||||
" [24, 29, 16, 20, 7]]"
|
" [7, 2, 9, 11, 16]]"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 47,
|
"execution_count": 96,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"execution_count": 47
|
"execution_count": 96
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
@@ -275,8 +275,8 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:43.639361Z",
|
"end_time": "2024-08-01T19:17:15.087201Z",
|
||||||
"start_time": "2024-08-01T17:32:43.637070Z"
|
"start_time": "2024-08-01T19:17:15.084377Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
@@ -285,18 +285,18 @@
|
|||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Keypad View\n",
|
"Keypad View\n",
|
||||||
"Key 0: [18, 11, 22, 2, 19]\n",
|
"Key 0: [25, 14, 15, 23, 28]\n",
|
||||||
"Key 1: [0, 23, 28, 8, 25]\n",
|
"Key 1: [13, 26, 21, 17, 4]\n",
|
||||||
"Key 2: [6, 5, 10, 26, 13]\n",
|
"Key 2: [19, 20, 27, 29, 10]\n",
|
||||||
"Key 3: [12, 17, 4, 14, 1]\n",
|
"Key 3: [1, 8, 3, 5, 22]\n",
|
||||||
"Key 4: [24, 29, 16, 20, 7]\n",
|
"Key 4: [7, 2, 9, 11, 16]\n",
|
||||||
"User Passcode: [18, 11, 22, 2]\n",
|
"User Passcode: [25, 14, 15, 23]\n",
|
||||||
"Selected Keys\n",
|
"Selected Keys\n",
|
||||||
"[0, 0, 0, 0]\n"
|
"[0, 0, 0, 0]\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"execution_count": 48
|
"execution_count": 97
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
@@ -309,8 +309,8 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:43.642851Z",
|
"end_time": "2024-08-01T19:17:15.090959Z",
|
||||||
"start_time": "2024-08-01T17:32:43.640093Z"
|
"start_time": "2024-08-01T19:17:15.088160Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
@@ -319,17 +319,17 @@
|
|||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Keypad View\n",
|
"Keypad View\n",
|
||||||
"Key 0: [6, 29, 4, 8, 19]\n",
|
"Key 0: [1, 14, 21, 11, 10]\n",
|
||||||
"Key 1: [12, 5, 22, 20, 25]\n",
|
"Key 1: [19, 2, 15, 5, 4]\n",
|
||||||
"Key 2: [18, 17, 28, 26, 7]\n",
|
"Key 2: [13, 8, 9, 29, 28]\n",
|
||||||
"Key 3: [0, 11, 16, 14, 13]\n",
|
"Key 3: [25, 20, 3, 17, 16]\n",
|
||||||
"Key 4: [24, 23, 10, 2, 1]\n",
|
"Key 4: [7, 26, 27, 23, 22]\n",
|
||||||
"Selected Keys\n",
|
"Selected Keys\n",
|
||||||
"[2, 3, 1, 4]\n"
|
"[3, 0, 1, 4]\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"execution_count": 49
|
"execution_count": 98
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
@@ -341,8 +341,8 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:44.271378Z",
|
"end_time": "2024-08-01T19:17:15.725645Z",
|
||||||
"start_time": "2024-08-01T17:32:43.643592Z"
|
"start_time": "2024-08-01T19:17:15.091674Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
@@ -354,7 +354,7 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"execution_count": 50
|
"execution_count": 99
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -373,8 +373,8 @@
|
|||||||
{
|
{
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:44.606104Z",
|
"end_time": "2024-08-01T19:17:16.066633Z",
|
||||||
"start_time": "2024-08-01T17:32:44.272228Z"
|
"start_time": "2024-08-01T19:17:15.726507Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
@@ -392,7 +392,7 @@
|
|||||||
"passcode_server_set = [customer.attributes.get_attr_set_val(attr) for attr in passcode_server_attr]"
|
"passcode_server_set = [customer.attributes.get_attr_set_val(attr) for attr in passcode_server_attr]"
|
||||||
],
|
],
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"execution_count": 51
|
"execution_count": 100
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -414,8 +414,8 @@
|
|||||||
{
|
{
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:44.609542Z",
|
"end_time": "2024-08-01T19:17:16.070242Z",
|
||||||
"start_time": "2024-08-01T17:32:44.606956Z"
|
"start_time": "2024-08-01T19:17:16.067409Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
@@ -431,7 +431,7 @@
|
|||||||
"mask = user_keys.encode_base64_str(ciphered_mask)"
|
"mask = user_keys.encode_base64_str(ciphered_mask)"
|
||||||
],
|
],
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"execution_count": 52
|
"execution_count": 101
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -448,8 +448,8 @@
|
|||||||
{
|
{
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:44.916167Z",
|
"end_time": "2024-08-01T19:17:16.378573Z",
|
||||||
"start_time": "2024-08-01T17:32:44.611593Z"
|
"start_time": "2024-08-01T19:17:16.072571Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
@@ -473,13 +473,13 @@
|
|||||||
"code = hashed_data.decode(\"utf-8\")"
|
"code = hashed_data.decode(\"utf-8\")"
|
||||||
],
|
],
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"execution_count": 53
|
"execution_count": 102
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:44.919048Z",
|
"end_time": "2024-08-01T19:17:16.381295Z",
|
||||||
"start_time": "2024-08-01T17:32:44.916981Z"
|
"start_time": "2024-08-01T19:17:16.379384Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
@@ -492,7 +492,7 @@
|
|||||||
")"
|
")"
|
||||||
],
|
],
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"execution_count": 54
|
"execution_count": 103
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
@@ -518,8 +518,8 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
"collapsed": false,
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:45.225994Z",
|
"end_time": "2024-08-01T19:17:16.687966Z",
|
||||||
"start_time": "2024-08-01T17:32:44.919967Z"
|
"start_time": "2024-08-01T19:17:16.382136Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
@@ -528,17 +528,17 @@
|
|||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Keypad View\n",
|
"Keypad View\n",
|
||||||
"Key 0: [24, 7, 14, 21, 10, 29]\n",
|
"Key 0: [0, 7, 20, 3, 10, 29]\n",
|
||||||
"Key 1: [6, 13, 26, 9, 28, 5]\n",
|
"Key 1: [6, 25, 26, 15, 4, 17]\n",
|
||||||
"Key 2: [0, 25, 20, 3, 22, 23]\n",
|
"Key 2: [12, 19, 14, 21, 28, 23]\n",
|
||||||
"Key 3: [18, 19, 2, 27, 16, 11]\n",
|
"Key 3: [18, 1, 2, 9, 16, 11]\n",
|
||||||
"Key 4: [12, 1, 8, 15, 4, 17]\n",
|
"Key 4: [24, 13, 8, 27, 22, 5]\n",
|
||||||
"Selected Keys: [3, 3, 2, 3]\n",
|
"Selected Keys: [1, 2, 1, 2]\n",
|
||||||
"True\n"
|
"True\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"execution_count": 55
|
"execution_count": 104
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -570,8 +570,8 @@
|
|||||||
{
|
{
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:35:30.015361Z",
|
"end_time": "2024-08-01T19:17:16.691445Z",
|
||||||
"start_time": "2024-08-01T17:35:30.010731Z"
|
"start_time": "2024-08-01T19:17:16.688722Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
@@ -593,11 +593,11 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"[21921, 22025, 38162, 57204]\n"
|
"[36659, 54746, 56159, 38654]\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"execution_count": 60
|
"execution_count": 105
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -607,8 +607,8 @@
|
|||||||
{
|
{
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:35:31.615135Z",
|
"end_time": "2024-08-01T19:17:16.694718Z",
|
||||||
"start_time": "2024-08-01T17:35:31.307978Z"
|
"start_time": "2024-08-01T19:17:16.692225Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
@@ -622,9 +622,7 @@
|
|||||||
" selected_attr_idx = customer.users[username].user_interface.get_attr_idx_by_keynumb_setidx(key_numb, set_idx)\n",
|
" selected_attr_idx = customer.users[username].user_interface.get_attr_idx_by_keynumb_setidx(key_numb, set_idx)\n",
|
||||||
" presumed_selected_attributes_idx.append(selected_attr_idx)\n",
|
" presumed_selected_attributes_idx.append(selected_attr_idx)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"enciphered_nkode = user_keys.encipher_salt_hash_code(presumed_selected_attributes_idx, customer.attributes)\n",
|
"print(user_passcode == presumed_selected_attributes_idx)"
|
||||||
"\n",
|
|
||||||
"print(enciphered_nkode == user.enciphered_passcode.code)"
|
|
||||||
],
|
],
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -635,31 +633,166 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"execution_count": 61
|
"execution_count": 106
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {},
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": "### Compare Enciphered Passcodes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2024-08-01T19:17:17.000271Z",
|
||||||
|
"start_time": "2024-08-01T19:17:16.695443Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"enciphered_nkode = user_keys.encipher_salt_hash_code(presumed_selected_attributes_idx, customer.attributes)\n",
|
||||||
|
"\n",
|
||||||
|
"print(enciphered_nkode == user.enciphered_passcode.code)\n"
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"True\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 107
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"source": [
|
"source": [
|
||||||
"#### Renew Keys\n",
|
"#### Renew Keys\n",
|
||||||
"1. Renew Customer Keys\n",
|
"1. Renew Customer Keys\n",
|
||||||
"2. Renew User Keys"
|
"2. Renew User Keys\n",
|
||||||
|
"3. Refresh User on Login\n",
|
||||||
|
"\n"
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false
|
"collapsed": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
|
||||||
"source": [],
|
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"collapsed": false,
|
|
||||||
"ExecuteTime": {
|
"ExecuteTime": {
|
||||||
"end_time": "2024-08-01T17:32:45.239562Z",
|
"end_time": "2024-08-01T19:17:18.107245Z",
|
||||||
"start_time": "2024-08-01T17:32:45.239409Z"
|
"start_time": "2024-08-01T19:17:17.001318Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"def print_user_enciphered_code():\n",
|
||||||
|
" mask = api.customers[customer_id].users[username].enciphered_passcode.mask\n",
|
||||||
|
" code = api.customers[customer_id].users[username].enciphered_passcode.code\n",
|
||||||
|
" print(f\"mask: {mask}, code: {code}\")\n",
|
||||||
|
"\n",
|
||||||
|
"print_user_enciphered_code() \n",
|
||||||
|
"api.renew_keys(customer_id)\n",
|
||||||
|
"print_user_enciphered_code()\n",
|
||||||
|
"\n",
|
||||||
|
"login_interface = api.get_login_interface(username, customer_id)\n",
|
||||||
|
"selected_keys_login = select_keys_with_passcode_values(user_passcode, login_interface, keypad_size.attrs_per_key)\n",
|
||||||
|
"success = api.login(customer_id, username, selected_keys_login)\n",
|
||||||
|
"print(success)\n",
|
||||||
|
"print_user_enciphered_code()"
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"mask: AH3tBMcj4vYN+WBQa4Wgwe3KDgE=, code: $2b$12$2w4nllgf0wnWMsdTYL4HNuxVN5A5AzqP5X2Xraj0ijKCAjM3kRlLm\n",
|
||||||
|
"mask: AH3tBMcj4vYN+WBQa4Wgwe3KDgE=, code: $2b$12$2w4nllgf0wnWMsdTYL4HNuxVN5A5AzqP5X2Xraj0ijKCAjM3kRlLm\n",
|
||||||
|
"True\n",
|
||||||
|
"mask: pbB0tDKAFPtJUEQjyUZBdSCRsIc=, code: $2b$12$KW3WJQ2YNsbmyWJ6Rq32eed4/GJ6howBNsKA/sUhFOHRf.sIW2Pz6\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"execution_count": 108
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {},
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"#### Renew Customer Keys\n",
|
||||||
|
"- Get old attributes and sets\n",
|
||||||
|
"- Replace attributes and sets"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2024-08-01T19:17:18.281874Z",
|
||||||
|
"start_time": "2024-08-01T19:17:18.108020Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"old_attrs = customer.attributes.attr_vals.copy()\n",
|
||||||
|
"old_sets = customer.attributes.set_vals.copy()\n",
|
||||||
|
"customer.attributes.renew()\n",
|
||||||
|
"new_attrs = customer.attributes.attr_vals\n",
|
||||||
|
"new_sets = customer.attributes.set_vals"
|
||||||
|
],
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"execution_count": null
|
"execution_count": 109
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {},
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": [
|
||||||
|
"### Renew User\n",
|
||||||
|
"\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2024-08-01T19:17:18.285195Z",
|
||||||
|
"start_time": "2024-08-01T19:17:18.282828Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"attrs_xor = xor_lists(new_attrs, old_attrs)\n",
|
||||||
|
"sets_xor = xor_lists(new_sets, old_sets)\n",
|
||||||
|
"for user in customer.users.values():\n",
|
||||||
|
" user.renew = True\n",
|
||||||
|
" user.user_keys.set_key = xor_lists(user.user_keys.set_key, sets_xor)\n",
|
||||||
|
" user.user_keys.alpha_key = xor_lists(user.user_keys.alpha_key, attrs_xor)"
|
||||||
|
],
|
||||||
|
"outputs": [],
|
||||||
|
"execution_count": 110
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {},
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"source": "### Refresh User Keys"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"metadata": {
|
||||||
|
"ExecuteTime": {
|
||||||
|
"end_time": "2024-08-01T19:17:18.921478Z",
|
||||||
|
"start_time": "2024-08-01T19:17:18.286363Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cell_type": "code",
|
||||||
|
"source": [
|
||||||
|
"user.user_keys = UserCipherKeys.new(\n",
|
||||||
|
" customer.attributes.keypad_size,\n",
|
||||||
|
" customer.attributes.set_vals,\n",
|
||||||
|
" user.user_keys.max_nkode_len\n",
|
||||||
|
")\n",
|
||||||
|
"user.enciphered_passcode = user.user_keys.encipher_nkode(presumed_selected_attributes_idx, customer.attributes)\n",
|
||||||
|
"user.renew = False"
|
||||||
|
],
|
||||||
|
"outputs": [],
|
||||||
|
"execution_count": 111
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|||||||
@@ -44,14 +44,14 @@ class Customer(BaseModel):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def renew_keys(self) -> bool:
|
def renew_keys(self) -> bool:
|
||||||
attrs_before = self.attributes.attr_vals.copy()
|
old_attrs = self.attributes.attr_vals.copy()
|
||||||
sets_before = self.attributes.set_vals.copy()
|
old_sets = self.attributes.set_vals.copy()
|
||||||
self.attributes.renew()
|
self.attributes.renew()
|
||||||
attrs_after = self.attributes.attr_vals
|
new_attrs = self.attributes.attr_vals
|
||||||
sets_after = self.attributes.set_vals
|
new_sets = self.attributes.set_vals
|
||||||
|
|
||||||
attrs_xor = xor_lists(attrs_after, attrs_before)
|
attrs_xor = xor_lists(new_attrs, old_attrs)
|
||||||
set_xor = xor_lists(sets_after, sets_before)
|
set_xor = xor_lists(new_sets, old_sets)
|
||||||
for user in self.users.values():
|
for user in self.users.values():
|
||||||
user.renew_keys(set_xor, attrs_xor)
|
user.renew_keys(set_xor, attrs_xor)
|
||||||
return True
|
return True
|
||||||
|
|||||||
Reference in New Issue
Block a user