OpenSSL EVP_MD_CTX 소스 동작문제...도와주세요~
static void make_svr_challenge(struct key_ctx *kc)
{
int rnd;
char smd[SHA_DIGEST_LENGTH];
char *hex = NULL;
srand(time(NULL));
rnd = rand();
EVP_MD_CTX s1;
EVP_MD_CTX_init(&s1);
EVP_DigestInit_ex(&s1,EVP_sha1(),NULL);
EVP_DigestUpdate(&s1,&rnd,sizeof(int));
EVP_DigestFinal_ex(&s1,smd,NULL);
EVP_MD_CTX_cleanup(&s1); // <- cleanup 주석처리 하면 정상작동.
bin2hex(smd,SHA_DIGEST_LENGTH,&hex);
if( hex ) {
strncpy(kc->sc,hex,strlen(hex));
free(hex);
}
}
static void make_svr_response(struct key_ctx *kc)
{
char *hex = NULL;
char smd[SHA_DIGEST_LENGTH];
EVP_MD_CTX s1;
EVP_MD_CTX_init(&s1);
EVP_DigestInit_ex(&s1,EVP_sha1(),NULL);
EVP_DigestUpdate(&s1,kc->cc,SHA_HEX_LENGTH);
EVP_DigestUpdate(&s1,kc->sc,SHA_HEX_LENGTH);
EVP_DigestUpdate(&s1,kc->key,SHA_HEX_LENGTH);
EVP_DigestFinal_ex(&s1,smd,NULL);
EVP_MD_CTX_cleanup(&s1); // <- cleanup 주석처리 하면 정상작동.
bin2hex(smd,SHA_DIGEST_LENGTH,&hex);
if( hex ) {
strncpy(kc->sr,hex,strlen(hex));
free(hex);
}
}
안녕하세요. 제가 EVP_MD_CTX를 이용하여 간단한 OTP프로그램을 만들어 봤는데요..
cleanup하는 구문을 주석처리를 하면 정상적으로 작동이 되는데 주석처리 없이 그냥 사용하게 되면
제가 만들어논 otp데몬이 otp를 발급받는 순간 실행이 중단되면서 서버랑 연결이 끊어져
비밀번호가 계속 맞지 않는 현상이 일어나고 있습니다.. 왜이럴까요..??
많은 고수님들...조언부탁드립니다..
댓글 달기