![](/static/253f0d9b/assets/icons/icon-96x96.png)
![](https://programming.dev/pictrs/image/8140dda6-9512-4297-ac17-d303638c90a6.png)
Erm. Duplication of code is ok. Removing absolutely every duplicate function is just premature optimization imho.
If you have two different customers with slightly different workflow then go ahead and create two mostly the same functions. When you will have 4 different customers with slightly different workflow, then its a time for refactoring, maybe extract basic same functionality into separate function/object, maybe introduce dynamic workflow using finite automata, maybe extract these functionality to separate modules… but never do it prematurily.
Imho, sometimes ,removing of duplication very much increases complexity and code became hard to understand and hard to modify.
By using standard implementation of cryptographic message signing?