노드js 쓰면서 힘든점이
노드js 에서 난잡한 콜백의 늪, 단일 쓰레드, 오류났을때 꺼짐, 특유에 소스코드 가독성 문제, 껏다가 켜야함 이러한 흔한 단점들은 로직의 개선으로 어느정도 해결이 가능 하였어요.
머 어떻게 해결이라도 되기야 하는데 도저히 깔끔하지 않은 외부연동 기능들 거기서도 Crypto 모듈이 가장 힘든 부분으로 뽑고싶어요.
Crypto | Node.js v15.11.0 Documentation
이 모듈 기능중에서도 특별히 싫어하는 RSA 모듈인데요. 비대칭 암호체계에서 흔하게 사용하는 publicEncrypt 함수는 특히나 그런 편에 속해요.
개인 키를 제외하면 공개 키에 modulus, exponent 벨류를 다룰때 이게 난이도가 극에 달하기 때문이에요. 일반적으로 pem, cer 형태의 포멧들을 잘 쓰지 않고 hex 내지는 base64 값으로 전달하는 경우가 많거든요. 특히나 Crypto 모듈에서는 이 pem, cer 포멧 타입만 사용하게 되어있어요. (예를들면 원시값을 pem 이나 cer 로 가공하여 넣어줘야함)
이렇게 되면 가득이나 암호화 로직으로 머리아픈데 C언어처럼 asn 구조체를 따져보아야 하게되요. 스택오버플로 같은데서 도움 받을만한 레퍼런스를 구하면 좋겠지만 희망사항일 뿐이고 결국에는불편한 모듈을 마지못해 쓰는 상황이 생기겠지요.
이런점들은 진작에 원시적인 벨류도 수용하는 방향으로 하였으면 좋았을 듯 해요. 거의 200%+ 합리적일것 같아요. 구조체 까지 뜯어야 할 상황이 빈번하게 생긴다면 작업과정이 저해받는거는 피할 수 없을 듯 해요.
여담으로 crypto 모듈이 webcrypto 를 사용하는 방향으로 바 뀔 듯 해보여요. 원시적인 RSA 는 일부러 자제하게 유도하는 듯.
