9b4c44e8创建于 2023年10月30日历史提交
/**
 * Copyright (c) 2023 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <crypt.h>
#include "functionalext.h"

static void test_crypt(void)
{
    char *key = "password";
    char *salt;

    salt = "$1$";
    char *md5_result = crypt(key, salt);
    char *md5_expect = "5f4dcc3b5aa765d61d8327deb882cf99";
    EXPECT_EQ(test_crypt, md5_result, md5_expect);

    salt = "$2$";
    char *blowfish_result_first = crypt(key, salt);
    char *blowfish_result_second = crypt(key, salt);
    EXPECT_EQ(test_crypt, blowfish_result_first, blowfish_result_second);

    salt = "$5$";
    char *sha256_result = crypt(key, salt);
    char *sha256_expect =
        "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8";
    EXPECT_EQ(test_crypt, sha256_result, sha256_expect);

    salt = "$6$";
    char *sha512_result = crypt(key, salt);
    char *sha512_expect =
        "b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d778"
        "5e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86";
    EXPECT_EQ(test_crypt, sha512_result, sha512_expect);

    salt = "";
    char *des_result_first = crypt(key, salt);
    char *des_result_second = crypt(key, salt);
    EXPECT_EQ(test_crypt, des_result_first, des_result_second);
}

int main(void)
{
    test_crypt();
    return t_status;
}