add SM2 functions