2017-03-21 16 views
0

또는 함수가 실패하는 이유를 알아내는 다른 메커니즘?libsodium에 오류 코드가 있습니까?

저는 crypto_pwhash을 호출하고 있습니다. 분명히 이유가 없으므로 -1이 반환됩니다. 사실 동일한 코드가 이전 버전의 libsodium에서 제대로 작동했습니다. 오류 코드가 있으면 디버깅이 훨씬 쉬워집니다.

답변

1

대부분의 함수는 실패 할 때 특정 오류 코드를 반환하지 않습니다.

암호 연산에 다른 오류 코드를 사용하면 공격자가 치명적인 공격을 수행하는 데 도움이 될 수 있음을 역사적으로 보여줍니다.

crypto_pwhash은 메모리를 할당합니다. 따라서 실패 할 수있는 한 가지 이유는 당신이 기억이 부족하다는 것입니다. 이 경우 errno이 적절하게 설정됩니다.

또한 매개 변수가 허용 된 범위 내에 있는지 확인하십시오. crypto_pwhash_bytes_min(), crypto_pwhash_memlimit_min()crypto_pwhash_memlimit_min()과 같은 기능이 유용 할 수 있습니다. 예를 들어, 그 함수의 목적을 고려할 때, 출력은 128 비트 이상이어야합니다.

+0

제안 해 주셔서 감사합니다. errno는 0이고, 메모리는 풍부하다. 출력 크기는 256 비트이며, opslimit (4)와 memlimit (33MB)가 허용 된 범위 내에 있음을 확신합니다 ('crypto_pwhash_argon2i_memlimit_interactive' 및'crypto_pwhash_argon2i_opslimit_interactive'를 사용하여 얻었습니다). –

+0

좋아, 사용중인 매개 변수의 전체 목록은 무엇입니까? –

+0

'crypto_pwhash (Key, KeySize, Passwd, Passwd.Size, Salt, 4, 33554432, 0)''Key '는 32 바이트이고,'Salt '는 16 바이트이며,'Passwd'는 가변 길이입니다. 동일한 매개 변수를 사용하여'crypto_pwhash_argon2i'를 시도했습니다. –