1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #include <stdlib.h> 16 #include <stdio.h> 17 #include <pthread.h> 18 #include <string.h> 19 20 #include "crypto_framework_verify_test.h" 21 #include "crypto_asym_key.h" 22 #include "crypto_framework_digest_test.h" 23 #include "blob.h" 24 #include "log.h" 25 #include "signature.h" 26 #include "rand.h" 27 28 #include <gtest/gtest.h> 29 30 using namespace testing::ext; 31 namespace Unittest::CryptoFrameworkVerifyNapiTest { 32 33 class OHCryptoFrameworkVerifyNapiTest : public testing::Test { 34 public: SetUpTestCase()35 static void SetUpTestCase() {}; 36 TearDownTestCase()37 static void TearDownTestCase() {}; 38 }; 39 40 class VERIFY_PKCS1_TEST : public testing::TestWithParam<VerifySpec> { 41 public: SetUpTestCase()42 static void SetUpTestCase() {} TearDownTestCase()43 static void TearDownTestCase() {} 44 }; 45 46 class VERIFY_PSS_TEST : public testing::TestWithParam<VerifySpec> { 47 public: SetUpTestCase()48 static void SetUpTestCase() {} TearDownTestCase()49 static void TearDownTestCase() {} 50 }; 51 52 class VERIFY_ECC_TEST : public testing::TestWithParam<VerifySpec> { 53 public: SetUpTestCase()54 static void SetUpTestCase() {} TearDownTestCase()55 static void TearDownTestCase() {} 56 }; 57 58 class VERIFY_DSA_TEST : public testing::TestWithParam<VerifySpec> { 59 public: SetUpTestCase()60 static void SetUpTestCase() {} TearDownTestCase()61 static void TearDownTestCase() {} 62 }; 63 64 class VERIFY_RSA_ONLY_SIGN_TEST : public testing::TestWithParam<VerifySpec> { 65 public: SetUpTestCase()66 static void SetUpTestCase() {} TearDownTestCase()67 static void TearDownTestCase() {} 68 }; 69 70 VerifySpec g_verifyPkcs1Data[] = { 71 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PKCS1|MD5", (uint8_t *)"RSA512|PKCS1|MD5", 32}, // 0 72 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PKCS1|SHA1", (uint8_t *)"RSA512|PKCS1|SHA1", 32}, // 1 73 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PKCS1|SHA224", (uint8_t *)"RSA512|PKCS1|SHA224", 32}, // 2 74 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PKCS1|SHA256", (uint8_t *)"RSA512|PKCS1|SHA256", 32}, // 3 75 76 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|MD5", (uint8_t *)"RSA768|PKCS1|MD5", 32}, // 4 77 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|SHA1", (uint8_t *)"RSA768|PKCS1|SHA1", 32}, // 5 78 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|SHA224", (uint8_t *)"RSA768|PKCS1|SHA224", 32}, // 6 79 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|SHA256", (uint8_t *)"RSA768|PKCS1|SHA256", 32}, // 7 80 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|SHA384", (uint8_t *)"RSA768|PKCS1|SHA384", 32}, // 8 81 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|SHA512", (uint8_t *)"RSA768|PKCS1|SHA512", 32}, // 9 82 83 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|MD5", (uint8_t *)"RSA1024|PKCS1|MD5", 32}, // 10 84 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|SHA1", (uint8_t *)"RSA1024|PKCS1|SHA1", 32}, // 11 85 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|SHA224", (uint8_t *)"RSA1024|PKCS1|SHA224", 32}, // 12 86 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|SHA256", (uint8_t *)"RSA1024|PKCS1|SHA256", 32}, // 13 87 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|SHA384", (uint8_t *)"RSA1024|PKCS1|SHA384", 32}, // 14 88 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|SHA512", (uint8_t *)"RSA1024|PKCS1|SHA512", 32}, // 15 89 90 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|MD5", (uint8_t *)"RSA2048|PKCS1|MD5", 32}, // 16 91 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|SHA1", (uint8_t *)"RSA2048|PKCS1|SHA1", 32}, // 17 92 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|SHA224", (uint8_t *)"RSA2048|PKCS1|SHA224", 32}, // 18 93 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|SHA256", (uint8_t *)"RSA2048|PKCS1|SHA256", 32}, // 19 94 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|SHA384", (uint8_t *)"RSA2048|PKCS1|SHA384", 32}, // 20 95 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|SHA512", (uint8_t *)"RSA2048|PKCS1|SHA512", 32}, // 21 96 97 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|MD5", (uint8_t *)"RSA3072|PKCS1|MD5", 32}, // 22 98 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|SHA1", (uint8_t *)"RSA3072|PKCS1|SHA1", 32}, // 23 99 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|SHA224", (uint8_t *)"RSA3072|PKCS1|SHA224", 32}, // 24 100 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|SHA256", (uint8_t *)"RSA3072|PKCS1|SHA256", 32}, // 25 101 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|SHA384", (uint8_t *)"RSA3072|PKCS1|SHA384", 32}, // 26 102 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|SHA512", (uint8_t *)"RSA3072|PKCS1|SHA512", 32}, // 27 103 104 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|MD5", (uint8_t *)"RSA4096|PKCS1|MD5", 32}, // 28 105 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|SHA1", (uint8_t *)"RSA4096|PKCS1|SHA1", 32}, // 29 106 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|SHA224", (uint8_t *)"RSA4096|PKCS1|SHA224", 32}, // 30 107 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|SHA256", (uint8_t *)"RSA4096|PKCS1|SHA256", 32}, // 31 108 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|SHA384", (uint8_t *)"RSA4096|PKCS1|SHA384", 32}, // 32 109 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|SHA512", (uint8_t *)"RSA4096|PKCS1|SHA512", 32}, // 33 110 111 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|MD5", (uint8_t *)"RSA8192|PKCS1|MD5", 32}, // 34 112 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|SHA1", (uint8_t *)"RSA8192|PKCS1|SHA1", 32}, // 35 113 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|SHA224", (uint8_t *)"RSA8192|PKCS1|SHA224", 32}, // 36 114 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|SHA256", (uint8_t *)"RSA8192|PKCS1|SHA256", 32}, // 37 115 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|SHA384", (uint8_t *)"RSA8192|PKCS1|SHA384", 32}, // 38 116 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|SHA512", (uint8_t *)"RSA8192|PKCS1|SHA512", 32}, // 39 117 118 {(uint8_t *)"RSA768", (uint8_t *)"RSA|PKCS1|SHA512", (uint8_t *)"RSA|PKCS1|SHA512", 32}, // 40 119 }; 120 121 VerifySpec g_verifyPssData[] = { 122 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|MD5|MGF1_MD5", (uint8_t *)"RSA512|PSS|MD5|MGF1_MD5", 32}, // 0 123 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|MD5|MGF1_SHA1", (uint8_t *)"RSA512|PSS|MD5|MGF1_SHA1", 32}, // 1 124 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|MD5|MGF1_SHA224", (uint8_t *)"RSA512|PSS|MD5|MGF1_SHA224", 32}, // 2 125 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|MD5|MGF1_SHA256", (uint8_t *)"RSA512|PSS|MD5|MGF1_SHA256", 32}, // 3 126 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA1|MGF1_MD5", (uint8_t *)"RSA512|PSS|SHA1|MGF1_MD5", 32}, // 4 127 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA1|MGF1_SHA1", (uint8_t *)"RSA512|PSS|SHA1|MGF1_SHA1", 32}, // 5 128 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA1|MGF1_SHA224", (uint8_t *)"RSA512|PSS|SHA1|MGF1_SHA224", 32}, // 6 129 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA1|MGF1_SHA256", (uint8_t *)"RSA512|PSS|SHA1|MGF1_SHA256", 32}, // 7 130 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA224|MGF1_MD5", (uint8_t *)"RSA512|PSS|SHA224|MGF1_MD5", 32}, // 8 131 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA224|MGF1_SHA1", (uint8_t *)"RSA512|PSS|SHA224|MGF1_SHA1", 32}, // 9 132 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA224|MGF1_SHA224", (uint8_t *)"RSA512|PSS|SHA224|MGF1_SHA224", 32}, // 10 133 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA224|MGF1_SHA256", (uint8_t *)"RSA512|PSS|SHA224|MGF1_SHA256", 32}, // 11 134 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA256|MGF1_MD5", (uint8_t *)"RSA512|PSS|SHA256|MGF1_MD5", 32}, // 12 135 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA256|MGF1_SHA1", (uint8_t *)"RSA512|PSS|SHA256|MGF1_SHA1", 32}, // 13 136 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA256|MGF1_SHA224", (uint8_t *)"RSA512|PSS|SHA256|MGF1_SHA224", 32}, // 14 137 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PSS|SHA256|MGF1_SHA256", (uint8_t *)"RSA512|PSS|SHA256|MGF1_SHA256", 32}, // 15 138 139 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|MD5|MGF1_MD5", (uint8_t *)"RSA768|PSS|MD5|MGF1_MD5", 32}, // 16 140 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|MD5|MGF1_SHA1", (uint8_t *)"RSA768|PSS|MD5|MGF1_SHA1", 32}, // 17 141 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|MD5|MGF1_SHA224", (uint8_t *)"RSA768|PSS|MD5|MGF1_SHA224", 32}, // 18 142 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|MD5|MGF1_SHA256", (uint8_t *)"RSA768|PSS|MD5|MGF1_SHA256", 32}, // 19 143 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|MD5|MGF1_SHA384", (uint8_t *)"RSA768|PSS|MD5|MGF1_SHA384", 32}, // 20 144 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|MD5|MGF1_SHA512", (uint8_t *)"RSA768|PSS|MD5|MGF1_SHA512", 32}, // 21 145 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA1|MGF1_MD5", (uint8_t *)"RSA768|PSS|SHA1|MGF1_MD5", 32}, // 22 146 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA1|MGF1_SHA1", (uint8_t *)"RSA768|PSS|SHA1|MGF1_SHA1", 32}, // 23 147 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA1|MGF1_SHA224", (uint8_t *)"RSA768|PSS|SHA1|MGF1_SHA224", 32}, // 24 148 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA1|MGF1_SHA256", (uint8_t *)"RSA768|PSS|SHA1|MGF1_SHA256", 32}, // 25 149 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA1|MGF1_SHA384", (uint8_t *)"RSA768|PSS|SHA1|MGF1_SHA384", 32}, // 26 150 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA1|MGF1_SHA512", (uint8_t *)"RSA768|PSS|SHA1|MGF1_SHA512", 32}, // 27 151 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA224|MGF1_MD5", (uint8_t *)"RSA768|PSS|SHA224|MGF1_MD5", 32}, // 28 152 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA224|MGF1_SHA1", (uint8_t *)"RSA768|PSS|SHA224|MGF1_SHA1", 32}, // 29 153 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA224|MGF1_SHA224", (uint8_t *)"RSA768|PSS|SHA224|MGF1_SHA224", 32}, // 30 154 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA224|MGF1_SHA256", (uint8_t *)"RSA768|PSS|SHA224|MGF1_SHA256", 32}, // 31 155 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA224|MGF1_SHA384", (uint8_t *)"RSA768|PSS|SHA224|MGF1_SHA384", 32}, // 32 156 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA224|MGF1_SHA512", (uint8_t *)"RSA768|PSS|SHA224|MGF1_SHA512", 32}, // 33 157 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA256|MGF1_MD5", (uint8_t *)"RSA768|PSS|SHA256|MGF1_MD5", 32}, // 34 158 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA256|MGF1_SHA1", (uint8_t *)"RSA768|PSS|SHA256|MGF1_SHA1", 32}, // 35 159 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA256|MGF1_SHA224", (uint8_t *)"RSA768|PSS|SHA256|MGF1_SHA224", 32}, // 36 160 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA256|MGF1_SHA256", (uint8_t *)"RSA768|PSS|SHA256|MGF1_SHA256", 32}, // 37 161 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA256|MGF1_SHA384", (uint8_t *)"RSA768|PSS|SHA256|MGF1_SHA384", 32}, // 38 162 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA384|MGF1_MD5", (uint8_t *)"RSA768|PSS|SHA384|MGF1_MD5", 32}, // 39 163 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA384|MGF1_SHA1", (uint8_t *)"RSA768|PSS|SHA384|MGF1_SHA1", 32}, // 40 164 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA384|MGF1_SHA224", (uint8_t *)"RSA768|PSS|SHA384|MGF1_SHA224", 32}, // 41 165 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA384|MGF1_SHA256", (uint8_t *)"RSA768|PSS|SHA384|MGF1_SHA256", 32}, // 42 166 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA512|MGF1_MD5", (uint8_t *)"RSA768|PSS|SHA512|MGF1_MD5", 32}, // 43 167 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA512|MGF1_SHA1", (uint8_t *)"RSA768|PSS|SHA512|MGF1_SHA1", 32}, // 44 168 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PSS|SHA512|MGF1_SHA224", (uint8_t *)"RSA768|PSS|SHA512|MGF1_SHA224", 32}, // 45 169 170 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|MD5|MGF1_MD5", (uint8_t *)"RSA1024|PSS|MD5|MGF1_MD5", 32}, // 46 171 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|MD5|MGF1_SHA1", (uint8_t *)"RSA1024|PSS|MD5|MGF1_SHA1", 32}, // 47 172 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|MD5|MGF1_SHA224", (uint8_t *)"RSA1024|PSS|MD5|MGF1_SHA224", 32}, // 48 173 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|MD5|MGF1_SHA256", (uint8_t *)"RSA1024|PSS|MD5|MGF1_SHA256", 32}, // 49 174 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|MD5|MGF1_SHA384", (uint8_t *)"RSA1024|PSS|MD5|MGF1_SHA384", 32}, // 50 175 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|MD5|MGF1_SHA512", (uint8_t *)"RSA1024|PSS|MD5|MGF1_SHA512", 32}, // 51 176 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_MD5", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_MD5", 32}, // 52 177 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_SHA1", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_SHA1", 32}, // 53 178 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_SHA224", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_SHA224", 32}, // 54 179 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_SHA256", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_SHA256", 32}, // 55 180 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_SHA384", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_SHA384", 32}, // 56 181 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_SHA512", (uint8_t *)"RSA1024|PSS|SHA1|MGF1_SHA512", 32}, // 57 182 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_MD5", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_MD5", 32}, // 58 183 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_SHA1", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_SHA1", 32}, // 59 184 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_SHA224", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_SHA224", 32}, // 60 185 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_SHA256", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_SHA256", 32}, // 61 186 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_SHA384", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_SHA384", 32}, // 62 187 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_SHA512", (uint8_t *)"RSA1024|PSS|SHA224|MGF1_SHA512", 32}, // 63 188 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_MD5", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_MD5", 32}, // 64 189 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_SHA1", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_SHA1", 32}, // 65 190 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_SHA224", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_SHA224", 32}, // 66 191 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_SHA256", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_SHA256", 32}, // 67 192 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_SHA384", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_SHA384", 32}, // 68 193 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_SHA512", (uint8_t *)"RSA1024|PSS|SHA256|MGF1_SHA512", 32}, // 69 194 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_MD5", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_MD5", 32}, // 70 195 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_SHA1", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_SHA1", 32}, // 71 196 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_SHA224", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_SHA224", 32}, // 72 197 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_SHA256", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_SHA256", 32}, // 73 198 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_SHA384", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_SHA384", 32}, // 74 199 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_SHA512", (uint8_t *)"RSA1024|PSS|SHA384|MGF1_SHA512", 32}, // 75 200 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA512|MGF1_MD5", (uint8_t *)"RSA1024|PSS|SHA512|MGF1_MD5", 32}, // 76 201 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA512|MGF1_SHA1", (uint8_t *)"RSA1024|PSS|SHA512|MGF1_SHA1", 32}, // 77 202 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA512|MGF1_SHA224", (uint8_t *)"RSA1024|PSS|SHA512|MGF1_SHA224", 32}, // 78 203 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA512|MGF1_SHA256", (uint8_t *)"RSA1024|PSS|SHA512|MGF1_SHA256", 32}, // 79 204 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PSS|SHA512|MGF1_SHA384", (uint8_t *)"RSA1024|PSS|SHA512|MGF1_SHA384", 32}, // 80 205 206 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|MD5|MGF1_MD5", (uint8_t *)"RSA2048|PSS|MD5|MGF1_MD5", 32}, // 81 207 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|MD5|MGF1_SHA1", (uint8_t *)"RSA2048|PSS|MD5|MGF1_SHA1", 32}, // 82 208 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|MD5|MGF1_SHA224", (uint8_t *)"RSA2048|PSS|MD5|MGF1_SHA224", 32}, // 83 209 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|MD5|MGF1_SHA256", (uint8_t *)"RSA2048|PSS|MD5|MGF1_SHA256", 32}, // 84 210 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|MD5|MGF1_SHA384", (uint8_t *)"RSA2048|PSS|MD5|MGF1_SHA384", 32}, // 85 211 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|MD5|MGF1_SHA512", (uint8_t *)"RSA2048|PSS|MD5|MGF1_SHA512", 32}, // 86 212 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_MD5", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_MD5", 32}, // 87 213 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_SHA1", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_SHA1", 32}, // 88 214 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_SHA224", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_SHA224", 32}, // 89 215 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_SHA256", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_SHA256", 32}, // 90 216 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_SHA384", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_SHA384", 32}, // 91 217 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_SHA512", (uint8_t *)"RSA2048|PSS|SHA1|MGF1_SHA512", 32}, // 92 218 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_MD5", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_MD5", 32}, // 93 219 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_SHA1", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_SHA1", 32}, // 94 220 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_SHA224", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_SHA224", 32}, // 95 221 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_SHA256", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_SHA256", 32}, // 96 222 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_SHA384", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_SHA384", 32}, // 97 223 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_SHA512", (uint8_t *)"RSA2048|PSS|SHA224|MGF1_SHA512", 32}, // 98 224 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_MD5", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_MD5", 32}, // 99 225 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_SHA1", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_SHA1", 32}, // 100 226 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_SHA224", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_SHA224", 32}, // 101 227 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_SHA256", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_SHA256", 32}, // 102 228 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_SHA384", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_SHA384", 32}, // 103 229 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_SHA512", (uint8_t *)"RSA2048|PSS|SHA256|MGF1_SHA512", 32}, // 104 230 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_MD5", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_MD5", 32}, // 105 231 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_SHA1", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_SHA1", 32}, // 106 232 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_SHA224", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_SHA224", 32}, // 107 233 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_SHA256", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_SHA256", 32}, // 108 234 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_SHA384", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_SHA384", 32}, // 109 235 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_SHA512", (uint8_t *)"RSA2048|PSS|SHA384|MGF1_SHA512", 32}, // 110 236 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_MD5", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_MD5", 32}, // 111 237 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_SHA1", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_SHA1", 32}, // 112 238 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_SHA224", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_SHA224", 32}, // 113 239 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_SHA256", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_SHA256", 32}, // 114 240 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_SHA384", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_SHA384", 32}, // 115 241 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_SHA512", (uint8_t *)"RSA2048|PSS|SHA512|MGF1_SHA512", 32}, // 116 242 243 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|MD5|MGF1_MD5", (uint8_t *)"RSA3072|PSS|MD5|MGF1_MD5", 32}, // 117 244 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|MD5|MGF1_SHA1", (uint8_t *)"RSA3072|PSS|MD5|MGF1_SHA1", 32}, // 118 245 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|MD5|MGF1_SHA224", (uint8_t *)"RSA3072|PSS|MD5|MGF1_SHA224", 32}, // 119 246 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|MD5|MGF1_SHA256", (uint8_t *)"RSA3072|PSS|MD5|MGF1_SHA256", 32}, // 120 247 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|MD5|MGF1_SHA384", (uint8_t *)"RSA3072|PSS|MD5|MGF1_SHA384", 32}, // 121 248 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|MD5|MGF1_SHA512", (uint8_t *)"RSA3072|PSS|MD5|MGF1_SHA512", 32}, // 122 249 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_MD5", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_MD5", 32}, // 123 250 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_SHA1", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_SHA1", 32}, // 124 251 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_SHA224", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_SHA224", 32}, // 125 252 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_SHA256", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_SHA256", 32}, // 126 253 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_SHA384", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_SHA384", 32}, // 127 254 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_SHA512", (uint8_t *)"RSA3072|PSS|SHA1|MGF1_SHA512", 32}, // 128 255 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_MD5", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_MD5", 32}, // 129 256 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_SHA1", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_SHA1", 32}, // 130 257 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_SHA224", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_SHA224", 32}, // 131 258 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_SHA256", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_SHA256", 32}, // 132 259 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_SHA384", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_SHA384", 32}, // 133 260 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_SHA512", (uint8_t *)"RSA3072|PSS|SHA224|MGF1_SHA512", 32}, // 134 261 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_MD5", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_MD5", 32}, // 135 262 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_SHA1", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_SHA1", 32}, // 136 263 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_SHA224", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_SHA224", 32}, // 137 264 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_SHA256", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_SHA256", 32}, // 138 265 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_SHA384", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_SHA384", 32}, // 139 266 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_SHA512", (uint8_t *)"RSA3072|PSS|SHA256|MGF1_SHA512", 32}, // 140 267 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_MD5", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_MD5", 32}, // 141 268 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_SHA1", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_SHA1", 32}, // 142 269 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_SHA224", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_SHA224", 32}, // 143 270 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_SHA256", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_SHA256", 32}, // 144 271 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_SHA384", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_SHA384", 32}, // 145 272 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_SHA512", (uint8_t *)"RSA3072|PSS|SHA384|MGF1_SHA512", 32}, // 146 273 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_MD5", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_MD5", 32}, // 147 274 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_SHA1", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_SHA1", 32}, // 148 275 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_SHA224", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_SHA224", 32}, // 149 276 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_SHA256", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_SHA256", 32}, // 150 277 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_SHA384", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_SHA384", 32}, // 151 278 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_SHA512", (uint8_t *)"RSA3072|PSS|SHA512|MGF1_SHA512", 32}, // 152 279 280 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|MD5|MGF1_MD5", (uint8_t *)"RSA4096|PSS|MD5|MGF1_MD5", 32}, // 153 281 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|MD5|MGF1_SHA1", (uint8_t *)"RSA4096|PSS|MD5|MGF1_SHA1", 32}, // 154 282 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|MD5|MGF1_SHA224", (uint8_t *)"RSA4096|PSS|MD5|MGF1_SHA224", 32}, // 155 283 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|MD5|MGF1_SHA256", (uint8_t *)"RSA4096|PSS|MD5|MGF1_SHA256", 32}, // 156 284 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|MD5|MGF1_SHA384", (uint8_t *)"RSA4096|PSS|MD5|MGF1_SHA384", 32}, // 157 285 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|MD5|MGF1_SHA512", (uint8_t *)"RSA4096|PSS|MD5|MGF1_SHA512", 32}, // 158 286 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_MD5", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_MD5", 32}, // 159 287 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_SHA1", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_SHA1", 32}, // 160 288 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_SHA224", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_SHA224", 32}, // 161 289 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_SHA256", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_SHA256", 32}, // 162 290 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_SHA384", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_SHA384", 32}, // 163 291 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_SHA512", (uint8_t *)"RSA4096|PSS|SHA1|MGF1_SHA512", 32}, // 164 292 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_MD5", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_MD5", 32}, // 165 293 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_SHA1", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_SHA1", 32}, // 166 294 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_SHA224", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_SHA224", 32}, // 167 295 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_SHA256", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_SHA256", 32}, // 168 296 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_SHA384", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_SHA384", 32}, // 169 297 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_SHA512", (uint8_t *)"RSA4096|PSS|SHA224|MGF1_SHA512", 32}, // 170 298 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_MD5", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_MD5", 32}, // 171 299 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_SHA1", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_SHA1", 32}, // 172 300 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_SHA224", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_SHA224", 32}, // 173 301 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_SHA256", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_SHA256", 32}, // 174 302 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_SHA384", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_SHA384", 32}, // 175 303 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_SHA512", (uint8_t *)"RSA4096|PSS|SHA256|MGF1_SHA512", 32}, // 176 304 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_MD5", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_MD5", 32}, // 177 305 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_SHA1", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_SHA1", 32}, // 178 306 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_SHA224", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_SHA224", 32}, // 179 307 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_SHA256", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_SHA256", 32}, // 180 308 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_SHA384", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_SHA384", 32}, // 181 309 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_SHA512", (uint8_t *)"RSA4096|PSS|SHA384|MGF1_SHA512", 32}, // 182 310 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_MD5", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_MD5", 32}, // 183 311 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_SHA1", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_SHA1", 32}, // 184 312 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_SHA224", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_SHA224", 32}, // 185 313 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_SHA256", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_SHA256", 32}, // 186 314 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_SHA384", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_SHA384", 32}, // 187 315 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_SHA512", (uint8_t *)"RSA4096|PSS|SHA512|MGF1_SHA512", 32}, // 188 316 317 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|MD5|MGF1_MD5", (uint8_t *)"RSA8192|PSS|MD5|MGF1_MD5", 32}, // 189 318 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|MD5|MGF1_SHA1", (uint8_t *)"RSA8192|PSS|MD5|MGF1_SHA1", 32}, // 190 319 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|MD5|MGF1_SHA224", (uint8_t *)"RSA8192|PSS|MD5|MGF1_SHA224", 32}, // 191 320 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|MD5|MGF1_SHA256", (uint8_t *)"RSA8192|PSS|MD5|MGF1_SHA256", 32}, // 192 321 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|MD5|MGF1_SHA384", (uint8_t *)"RSA8192|PSS|MD5|MGF1_SHA384", 32}, // 193 322 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|MD5|MGF1_SHA512", (uint8_t *)"RSA8192|PSS|MD5|MGF1_SHA512", 32}, // 194 323 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_MD5", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_MD5", 32}, // 195 324 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_SHA1", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_SHA1", 32}, // 196 325 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_SHA224", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_SHA224", 32}, // 197 326 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_SHA256", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_SHA256", 32}, // 198 327 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_SHA384", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_SHA384", 32}, // 199 328 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_SHA512", (uint8_t *)"RSA8192|PSS|SHA1|MGF1_SHA512", 32}, // 200 329 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_MD5", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_MD5", 32}, // 201 330 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_SHA1", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_SHA1", 32}, // 202 331 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_SHA224", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_SHA224", 32}, // 203 332 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_SHA256", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_SHA256", 32}, // 204 333 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_SHA384", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_SHA384", 32}, // 205 334 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_SHA512", (uint8_t *)"RSA8192|PSS|SHA224|MGF1_SHA512", 32}, // 206 335 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_MD5", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_MD5", 32}, // 207 336 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_SHA1", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_SHA1", 32}, // 208 337 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_SHA224", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_SHA224", 32}, // 209 338 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_SHA256", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_SHA256", 32}, // 210 339 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_SHA384", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_SHA384", 32}, // 211 340 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_SHA512", (uint8_t *)"RSA8192|PSS|SHA256|MGF1_SHA512", 32}, // 212 341 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_MD5", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_MD5", 32}, // 213 342 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_SHA1", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_SHA1", 32}, // 214 343 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_SHA224", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_SHA224", 32}, // 215 344 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_SHA256", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_SHA256", 32}, // 216 345 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_SHA384", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_SHA384", 32}, // 217 346 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_SHA512", (uint8_t *)"RSA8192|PSS|SHA384|MGF1_SHA512", 32}, // 218 347 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_MD5", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_MD5", 32}, // 219 348 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_SHA1", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_SHA1", 32}, // 220 349 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_SHA224", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_SHA224", 32}, // 221 350 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_SHA256", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_SHA256", 32}, // 222 351 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_SHA384", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_SHA384", 32}, // 223 352 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_SHA512", (uint8_t *)"RSA8192|PSS|SHA512|MGF1_SHA512", 32}, // 224 353 354 {(uint8_t *)"RSA1024", (uint8_t *)"RSA|PSS|MD5|MGF1_MD5", (uint8_t *)"RSA|PSS|MD5|MGF1_MD5", 32}, // 225 355 }; 356 357 VerifySpec g_verifyEccData[] = { 358 {(uint8_t *)"ECC224", (uint8_t *)"ECC224|SHA1", (uint8_t *)"ECC224|SHA1", 32}, // 0 359 {(uint8_t *)"ECC224", (uint8_t *)"ECC224|SHA224", (uint8_t *)"ECC224|SHA224", 32}, // 1 360 {(uint8_t *)"ECC224", (uint8_t *)"ECC224|SHA256", (uint8_t *)"ECC224|SHA256", 32}, // 2 361 {(uint8_t *)"ECC224", (uint8_t *)"ECC224|SHA384", (uint8_t *)"ECC224|SHA384", 32}, // 3 362 {(uint8_t *)"ECC224", (uint8_t *)"ECC224|SHA512", (uint8_t *)"ECC224|SHA512", 32}, // 4 363 364 {(uint8_t *)"ECC256", (uint8_t *)"ECC256|SHA1", (uint8_t *)"ECC256|SHA1", 32}, // 5 365 {(uint8_t *)"ECC256", (uint8_t *)"ECC256|SHA224", (uint8_t *)"ECC256|SHA224", 32}, // 6 366 {(uint8_t *)"ECC256", (uint8_t *)"ECC256|SHA256", (uint8_t *)"ECC256|SHA256", 32}, // 7 367 {(uint8_t *)"ECC256", (uint8_t *)"ECC256|SHA384", (uint8_t *)"ECC256|SHA384", 32}, // 8 368 {(uint8_t *)"ECC256", (uint8_t *)"ECC256|SHA512", (uint8_t *)"ECC256|SHA512", 32}, // 9 369 370 {(uint8_t *)"ECC384", (uint8_t *)"ECC384|SHA1", (uint8_t *)"ECC384|SHA1", 32}, // 10 371 {(uint8_t *)"ECC384", (uint8_t *)"ECC384|SHA224", (uint8_t *)"ECC384|SHA224", 32}, // 11 372 {(uint8_t *)"ECC384", (uint8_t *)"ECC384|SHA256", (uint8_t *)"ECC384|SHA256", 32}, // 12 373 {(uint8_t *)"ECC384", (uint8_t *)"ECC384|SHA384", (uint8_t *)"ECC384|SHA384", 32}, // 13 374 {(uint8_t *)"ECC384", (uint8_t *)"ECC384|SHA512", (uint8_t *)"ECC384|SHA512", 32}, // 14 375 376 {(uint8_t *)"ECC521", (uint8_t *)"ECC521|SHA1", (uint8_t *)"ECC521|SHA1", 32}, // 15 377 {(uint8_t *)"ECC521", (uint8_t *)"ECC521|SHA224", (uint8_t *)"ECC521|SHA224", 32}, // 16 378 {(uint8_t *)"ECC521", (uint8_t *)"ECC521|SHA256", (uint8_t *)"ECC521|SHA256", 32}, // 17 379 {(uint8_t *)"ECC521", (uint8_t *)"ECC521|SHA384", (uint8_t *)"ECC521|SHA384", 32}, // 18 380 {(uint8_t *)"ECC521", (uint8_t *)"ECC521|SHA512", (uint8_t *)"ECC521|SHA512", 32}, // 19 381 382 {(uint8_t *)"ECC_BrainPoolP160r1", (uint8_t *)"ECC_BrainPoolP160r1|SHA1", (uint8_t *)"ECC_BrainPoolP160r1|SHA1", 32}, // 20 383 {(uint8_t *)"ECC_BrainPoolP160r1", (uint8_t *)"ECC_BrainPoolP160r1|SHA224", (uint8_t *)"ECC_BrainPoolP160r1|SHA224", 32}, // 21 384 {(uint8_t *)"ECC_BrainPoolP160r1", (uint8_t *)"ECC_BrainPoolP160r1|SHA256", (uint8_t *)"ECC_BrainPoolP160r1|SHA256", 32}, // 22 385 {(uint8_t *)"ECC_BrainPoolP160r1", (uint8_t *)"ECC_BrainPoolP160r1|SHA384", (uint8_t *)"ECC_BrainPoolP160r1|SHA384", 32}, // 23 386 {(uint8_t *)"ECC_BrainPoolP160r1", (uint8_t *)"ECC_BrainPoolP160r1|SHA512", (uint8_t *)"ECC_BrainPoolP160r1|SHA512", 32}, // 24 387 388 {(uint8_t *)"ECC_BrainPoolP160t1", (uint8_t *)"ECC_BrainPoolP160t1|SHA1", (uint8_t *)"ECC_BrainPoolP160t1|SHA1", 32}, // 25 389 {(uint8_t *)"ECC_BrainPoolP160t1", (uint8_t *)"ECC_BrainPoolP160t1|SHA224", (uint8_t *)"ECC_BrainPoolP160t1|SHA224", 32}, // 26 390 {(uint8_t *)"ECC_BrainPoolP160t1", (uint8_t *)"ECC_BrainPoolP160t1|SHA256", (uint8_t *)"ECC_BrainPoolP160t1|SHA256", 32}, // 27 391 {(uint8_t *)"ECC_BrainPoolP160t1", (uint8_t *)"ECC_BrainPoolP160t1|SHA384", (uint8_t *)"ECC_BrainPoolP160t1|SHA384", 32}, // 28 392 {(uint8_t *)"ECC_BrainPoolP160t1", (uint8_t *)"ECC_BrainPoolP160t1|SHA512", (uint8_t *)"ECC_BrainPoolP160t1|SHA512", 32}, // 29 393 394 {(uint8_t *)"ECC_BrainPoolP192r1", (uint8_t *)"ECC_BrainPoolP192r1|SHA1", (uint8_t *)"ECC_BrainPoolP192r1|SHA1", 32}, // 30 395 {(uint8_t *)"ECC_BrainPoolP192r1", (uint8_t *)"ECC_BrainPoolP192r1|SHA224", (uint8_t *)"ECC_BrainPoolP192r1|SHA224", 32}, // 31 396 {(uint8_t *)"ECC_BrainPoolP192r1", (uint8_t *)"ECC_BrainPoolP192r1|SHA256", (uint8_t *)"ECC_BrainPoolP192r1|SHA256", 32}, // 32 397 {(uint8_t *)"ECC_BrainPoolP192r1", (uint8_t *)"ECC_BrainPoolP192r1|SHA384", (uint8_t *)"ECC_BrainPoolP192r1|SHA384", 32}, // 33 398 {(uint8_t *)"ECC_BrainPoolP192r1", (uint8_t *)"ECC_BrainPoolP192r1|SHA512", (uint8_t *)"ECC_BrainPoolP192r1|SHA512", 32}, // 34 399 400 {(uint8_t *)"ECC_BrainPoolP192t1", (uint8_t *)"ECC_BrainPoolP192t1|SHA1", (uint8_t *)"ECC_BrainPoolP192t1|SHA1", 32}, // 35 401 {(uint8_t *)"ECC_BrainPoolP192t1", (uint8_t *)"ECC_BrainPoolP192t1|SHA224", (uint8_t *)"ECC_BrainPoolP192t1|SHA224", 32}, // 36 402 {(uint8_t *)"ECC_BrainPoolP192t1", (uint8_t *)"ECC_BrainPoolP192t1|SHA256", (uint8_t *)"ECC_BrainPoolP192t1|SHA256", 32}, // 37 403 {(uint8_t *)"ECC_BrainPoolP192t1", (uint8_t *)"ECC_BrainPoolP192t1|SHA384", (uint8_t *)"ECC_BrainPoolP192t1|SHA384", 32}, // 38 404 {(uint8_t *)"ECC_BrainPoolP192t1", (uint8_t *)"ECC_BrainPoolP192t1|SHA512", (uint8_t *)"ECC_BrainPoolP192t1|SHA512", 32}, // 39 405 406 {(uint8_t *)"ECC_BrainPoolP224r1", (uint8_t *)"ECC_BrainPoolP224r1|SHA1", (uint8_t *)"ECC_BrainPoolP224r1|SHA1", 32}, // 40 407 {(uint8_t *)"ECC_BrainPoolP224r1", (uint8_t *)"ECC_BrainPoolP224r1|SHA224", (uint8_t *)"ECC_BrainPoolP224r1|SHA224", 32}, // 41 408 {(uint8_t *)"ECC_BrainPoolP224r1", (uint8_t *)"ECC_BrainPoolP224r1|SHA256", (uint8_t *)"ECC_BrainPoolP224r1|SHA256", 32}, // 42 409 {(uint8_t *)"ECC_BrainPoolP224r1", (uint8_t *)"ECC_BrainPoolP224r1|SHA384", (uint8_t *)"ECC_BrainPoolP224r1|SHA384", 32}, // 43 410 {(uint8_t *)"ECC_BrainPoolP224r1", (uint8_t *)"ECC_BrainPoolP224r1|SHA512", (uint8_t *)"ECC_BrainPoolP224r1|SHA512", 32}, // 44 411 412 {(uint8_t *)"ECC_BrainPoolP224t1", (uint8_t *)"ECC_BrainPoolP224t1|SHA1", (uint8_t *)"ECC_BrainPoolP224t1|SHA1", 32}, // 45 413 {(uint8_t *)"ECC_BrainPoolP224t1", (uint8_t *)"ECC_BrainPoolP224t1|SHA224", (uint8_t *)"ECC_BrainPoolP224t1|SHA224", 32}, // 46 414 {(uint8_t *)"ECC_BrainPoolP224t1", (uint8_t *)"ECC_BrainPoolP224t1|SHA256", (uint8_t *)"ECC_BrainPoolP224t1|SHA256", 32}, // 47 415 {(uint8_t *)"ECC_BrainPoolP224t1", (uint8_t *)"ECC_BrainPoolP224t1|SHA384", (uint8_t *)"ECC_BrainPoolP224t1|SHA384", 32}, // 48 416 {(uint8_t *)"ECC_BrainPoolP224t1", (uint8_t *)"ECC_BrainPoolP224t1|SHA512", (uint8_t *)"ECC_BrainPoolP224t1|SHA512", 32}, // 49 417 418 419 {(uint8_t *)"ECC_BrainPoolP256r1", (uint8_t *)"ECC_BrainPoolP256r1|SHA1", (uint8_t *)"ECC_BrainPoolP256r1|SHA1", 32}, // 50 420 {(uint8_t *)"ECC_BrainPoolP256r1", (uint8_t *)"ECC_BrainPoolP256r1|SHA224", (uint8_t *)"ECC_BrainPoolP256r1|SHA224", 32}, // 51 421 {(uint8_t *)"ECC_BrainPoolP256r1", (uint8_t *)"ECC_BrainPoolP256r1|SHA256", (uint8_t *)"ECC_BrainPoolP256r1|SHA256", 32}, // 52 422 {(uint8_t *)"ECC_BrainPoolP256r1", (uint8_t *)"ECC_BrainPoolP256r1|SHA384", (uint8_t *)"ECC_BrainPoolP256r1|SHA384", 32}, // 53 423 {(uint8_t *)"ECC_BrainPoolP256r1", (uint8_t *)"ECC_BrainPoolP256r1|SHA512", (uint8_t *)"ECC_BrainPoolP256r1|SHA512", 32}, // 54 424 425 {(uint8_t *)"ECC_BrainPoolP256t1", (uint8_t *)"ECC_BrainPoolP256t1|SHA1", (uint8_t *)"ECC_BrainPoolP256t1|SHA1", 32}, // 55 426 {(uint8_t *)"ECC_BrainPoolP256t1", (uint8_t *)"ECC_BrainPoolP256t1|SHA224", (uint8_t *)"ECC_BrainPoolP256t1|SHA224", 32}, // 56 427 {(uint8_t *)"ECC_BrainPoolP256t1", (uint8_t *)"ECC_BrainPoolP256t1|SHA256", (uint8_t *)"ECC_BrainPoolP256t1|SHA256", 32}, // 57 428 {(uint8_t *)"ECC_BrainPoolP256t1", (uint8_t *)"ECC_BrainPoolP256t1|SHA384", (uint8_t *)"ECC_BrainPoolP256t1|SHA384", 32}, // 58 429 {(uint8_t *)"ECC_BrainPoolP256t1", (uint8_t *)"ECC_BrainPoolP256t1|SHA512", (uint8_t *)"ECC_BrainPoolP256t1|SHA512", 32}, // 59 430 431 432 {(uint8_t *)"ECC_BrainPoolP320r1", (uint8_t *)"ECC_BrainPoolP320r1|SHA1", (uint8_t *)"ECC_BrainPoolP320r1|SHA1", 32}, // 60 433 {(uint8_t *)"ECC_BrainPoolP320r1", (uint8_t *)"ECC_BrainPoolP320r1|SHA224", (uint8_t *)"ECC_BrainPoolP320r1|SHA224", 32}, // 61 434 {(uint8_t *)"ECC_BrainPoolP320r1", (uint8_t *)"ECC_BrainPoolP320r1|SHA256", (uint8_t *)"ECC_BrainPoolP320r1|SHA256", 32}, // 62 435 {(uint8_t *)"ECC_BrainPoolP320r1", (uint8_t *)"ECC_BrainPoolP320r1|SHA384", (uint8_t *)"ECC_BrainPoolP320r1|SHA384", 32}, // 63 436 {(uint8_t *)"ECC_BrainPoolP320r1", (uint8_t *)"ECC_BrainPoolP320r1|SHA512", (uint8_t *)"ECC_BrainPoolP320r1|SHA512", 32}, // 64 437 438 {(uint8_t *)"ECC_BrainPoolP320t1", (uint8_t *)"ECC_BrainPoolP320t1|SHA1", (uint8_t *)"ECC_BrainPoolP320t1|SHA1", 32}, // 65 439 {(uint8_t *)"ECC_BrainPoolP320t1", (uint8_t *)"ECC_BrainPoolP320t1|SHA224", (uint8_t *)"ECC_BrainPoolP320t1|SHA224", 32}, // 66 440 {(uint8_t *)"ECC_BrainPoolP320t1", (uint8_t *)"ECC_BrainPoolP320t1|SHA256", (uint8_t *)"ECC_BrainPoolP320t1|SHA256", 32}, // 67 441 {(uint8_t *)"ECC_BrainPoolP320t1", (uint8_t *)"ECC_BrainPoolP320t1|SHA384", (uint8_t *)"ECC_BrainPoolP320t1|SHA384", 32}, // 68 442 {(uint8_t *)"ECC_BrainPoolP320t1", (uint8_t *)"ECC_BrainPoolP320t1|SHA512", (uint8_t *)"ECC_BrainPoolP320t1|SHA512", 32}, // 69 443 444 {(uint8_t *)"ECC_BrainPoolP384r1", (uint8_t *)"ECC_BrainPoolP384r1|SHA1", (uint8_t *)"ECC_BrainPoolP384r1|SHA1", 32}, // 70 445 {(uint8_t *)"ECC_BrainPoolP384r1", (uint8_t *)"ECC_BrainPoolP384r1|SHA224", (uint8_t *)"ECC_BrainPoolP384r1|SHA224", 32}, // 71 446 {(uint8_t *)"ECC_BrainPoolP384r1", (uint8_t *)"ECC_BrainPoolP384r1|SHA256", (uint8_t *)"ECC_BrainPoolP384r1|SHA256", 32}, // 72 447 {(uint8_t *)"ECC_BrainPoolP384r1", (uint8_t *)"ECC_BrainPoolP384r1|SHA384", (uint8_t *)"ECC_BrainPoolP384r1|SHA384", 32}, // 73 448 {(uint8_t *)"ECC_BrainPoolP384r1", (uint8_t *)"ECC_BrainPoolP384r1|SHA512", (uint8_t *)"ECC_BrainPoolP384r1|SHA512", 32}, // 74 449 450 {(uint8_t *)"ECC_BrainPoolP384t1", (uint8_t *)"ECC_BrainPoolP384t1|SHA1", (uint8_t *)"ECC_BrainPoolP384t1|SHA1", 32}, // 75 451 {(uint8_t *)"ECC_BrainPoolP384t1", (uint8_t *)"ECC_BrainPoolP384t1|SHA224", (uint8_t *)"ECC_BrainPoolP384t1|SHA224", 32}, // 76 452 {(uint8_t *)"ECC_BrainPoolP384t1", (uint8_t *)"ECC_BrainPoolP384t1|SHA256", (uint8_t *)"ECC_BrainPoolP384t1|SHA256", 32}, // 77 453 {(uint8_t *)"ECC_BrainPoolP384t1", (uint8_t *)"ECC_BrainPoolP384t1|SHA384", (uint8_t *)"ECC_BrainPoolP384t1|SHA384", 32}, // 78 454 {(uint8_t *)"ECC_BrainPoolP384t1", (uint8_t *)"ECC_BrainPoolP384t1|SHA512", (uint8_t *)"ECC_BrainPoolP384t1|SHA512", 32}, // 79 455 456 {(uint8_t *)"ECC_BrainPoolP512r1", (uint8_t *)"ECC_BrainPoolP512r1|SHA1", (uint8_t *)"ECC_BrainPoolP512r1|SHA1", 32}, // 80 457 {(uint8_t *)"ECC_BrainPoolP512r1", (uint8_t *)"ECC_BrainPoolP512r1|SHA224", (uint8_t *)"ECC_BrainPoolP512r1|SHA224", 32}, // 81 458 {(uint8_t *)"ECC_BrainPoolP512r1", (uint8_t *)"ECC_BrainPoolP512r1|SHA256", (uint8_t *)"ECC_BrainPoolP512r1|SHA256", 32}, // 82 459 {(uint8_t *)"ECC_BrainPoolP512r1", (uint8_t *)"ECC_BrainPoolP512r1|SHA384", (uint8_t *)"ECC_BrainPoolP512r1|SHA384", 32}, // 83 460 {(uint8_t *)"ECC_BrainPoolP512r1", (uint8_t *)"ECC_BrainPoolP512r1|SHA512", (uint8_t *)"ECC_BrainPoolP512r1|SHA512", 32}, // 84 461 462 {(uint8_t *)"ECC_BrainPoolP512t1", (uint8_t *)"ECC_BrainPoolP512t1|SHA1", (uint8_t *)"ECC_BrainPoolP512t1|SHA1", 32}, // 85 463 {(uint8_t *)"ECC_BrainPoolP512t1", (uint8_t *)"ECC_BrainPoolP512t1|SHA224", (uint8_t *)"ECC_BrainPoolP512t1|SHA224", 32}, // 86 464 {(uint8_t *)"ECC_BrainPoolP512t1", (uint8_t *)"ECC_BrainPoolP512t1|SHA256", (uint8_t *)"ECC_BrainPoolP512t1|SHA256", 32}, // 87 465 {(uint8_t *)"ECC_BrainPoolP512t1", (uint8_t *)"ECC_BrainPoolP512t1|SHA384", (uint8_t *)"ECC_BrainPoolP512t1|SHA384", 32}, // 88 466 {(uint8_t *)"ECC_BrainPoolP512t1", (uint8_t *)"ECC_BrainPoolP512t1|SHA512", (uint8_t *)"ECC_BrainPoolP512t1|SHA512", 32}, // 89 467 468 {(uint8_t *)"SM2_256", (uint8_t *)"SM2_256|SM3", (uint8_t *)"SM2_256|SM3", 32}, // 90 469 {(uint8_t *)"SM2_256", (uint8_t *)"SM2|SM3", (uint8_t *)"SM2|SM3", 32}, // 91 470 471 {(uint8_t *)"Ed25519", (uint8_t *)"Ed25519", (uint8_t *)"Ed25519", 32}, // 92 472 473 {(uint8_t *)"ECC224", (uint8_t *)"ECC|SHA1", (uint8_t *)"ECC|SHA1", 32}, // 93 474 }; 475 476 VerifySpec g_verifyDsaData[] = { 477 {(uint8_t *)"DSA1024", (uint8_t *)"DSA1024|NoHash", (uint8_t *)"DSA1024|NoHash", 32}, // 0 478 {(uint8_t *)"DSA1024", (uint8_t *)"DSA1024|SHA1", (uint8_t *)"DSA1024|SHA1", 32}, // 1 479 {(uint8_t *)"DSA1024", (uint8_t *)"DSA1024|SHA224", (uint8_t *)"DSA1024|SHA224", 32}, // 2 480 {(uint8_t *)"DSA1024", (uint8_t *)"DSA1024|SHA256", (uint8_t *)"DSA1024|SHA256", 32}, // 3 481 {(uint8_t *)"DSA1024", (uint8_t *)"DSA1024|SHA384", (uint8_t *)"DSA1024|SHA384", 32}, // 4 482 {(uint8_t *)"DSA1024", (uint8_t *)"DSA1024|SHA512", (uint8_t *)"DSA1024|SHA512", 32}, // 5 483 484 {(uint8_t *)"DSA2048", (uint8_t *)"DSA2048|NoHash", (uint8_t *)"DSA2048|NoHash", 32}, // 6 485 {(uint8_t *)"DSA2048", (uint8_t *)"DSA2048|SHA1", (uint8_t *)"DSA2048|SHA1", 32}, // 7 486 {(uint8_t *)"DSA2048", (uint8_t *)"DSA2048|SHA224", (uint8_t *)"DSA2048|SHA224", 32}, // 8 487 {(uint8_t *)"DSA2048", (uint8_t *)"DSA2048|SHA256", (uint8_t *)"DSA2048|SHA256", 32}, // 9 488 {(uint8_t *)"DSA2048", (uint8_t *)"DSA2048|SHA384", (uint8_t *)"DSA2048|SHA384", 32}, // 10 489 {(uint8_t *)"DSA2048", (uint8_t *)"DSA2048|SHA512", (uint8_t *)"DSA2048|SHA512", 32}, // 11 490 491 {(uint8_t *)"DSA3072", (uint8_t *)"DSA3072|NoHash", (uint8_t *)"DSA3072|NoHash", 32}, // 12 492 {(uint8_t *)"DSA3072", (uint8_t *)"DSA3072|SHA1", (uint8_t *)"DSA3072|SHA1", 32}, // 13 493 {(uint8_t *)"DSA3072", (uint8_t *)"DSA3072|SHA224", (uint8_t *)"DSA3072|SHA224", 32}, // 14 494 {(uint8_t *)"DSA3072", (uint8_t *)"DSA3072|SHA256", (uint8_t *)"DSA3072|SHA256", 32}, // 15 495 {(uint8_t *)"DSA3072", (uint8_t *)"DSA3072|SHA384", (uint8_t *)"DSA3072|SHA384", 32}, // 16 496 {(uint8_t *)"DSA3072", (uint8_t *)"DSA3072|SHA512", (uint8_t *)"DSA3072|SHA512", 32}, // 17 497 498 {(uint8_t *)"DSA1024", (uint8_t *)"DSA|NoHash", (uint8_t *)"DSA|NoHash", 32}, // 18 499 {(uint8_t *)"DSA1024", (uint8_t *)"DSA|SHA1", (uint8_t *)"DSA|SHA1", 32}, // 19 500 {(uint8_t *)"DSA1024", (uint8_t *)"DSA|SHA224", (uint8_t *)"DSA|SHA224", 32}, // 20 501 {(uint8_t *)"DSA1024", (uint8_t *)"DSA|SHA256", (uint8_t *)"DSA|SHA256", 32}, // 21 502 {(uint8_t *)"DSA1024", (uint8_t *)"DSA|SHA384", (uint8_t *)"DSA|SHA384", 32}, // 22 503 {(uint8_t *)"DSA1024", (uint8_t *)"DSA|SHA512", (uint8_t *)"DSA|SHA512", 32}, // 23 504 }; 505 506 VerifySpec g_verifyRsaOnlySignData[] = { 507 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PKCS1|NoHash|OnlySign", (uint8_t *)"RSA512|PKCS1|NoHash|Recover", 32}, // 0 508 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|NoPadding|NoHash|OnlySign", (uint8_t *)"RSA512|NoPadding|NoHash|Recover", 64}, // 1 509 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PKCS1|MD5|OnlySign", (uint8_t *)"RSA512|PKCS1|MD5|Recover", 16}, // 2 510 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PKCS1|SHA1|OnlySign", (uint8_t *)"RSA512|PKCS1|SHA1|Recover", 20}, // 3 511 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PKCS1|SHA224|OnlySign", (uint8_t *)"RSA512|PKCS1|SHA224|Recover", 28}, // 4 512 {(uint8_t *)"RSA512", (uint8_t *)"RSA512|PKCS1|SHA256|OnlySign", (uint8_t *)"RSA512|PKCS1|SHA256|Recover", 32}, // 5 513 514 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|NoHash|OnlySign", (uint8_t *)"RSA768|PKCS1|NoHash|Recover", 32}, // 6 515 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|NoPadding|NoHash|OnlySign", (uint8_t *)"RSA768|NoPadding|NoHash|Recover", 96}, // 7 516 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|MD5|OnlySign", (uint8_t *)"RSA768|PKCS1|MD5|Recover", 16}, // 8 517 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|SHA1|OnlySign", (uint8_t *)"RSA768|PKCS1|SHA1|Recover", 20}, // 9 518 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|SHA224|OnlySign", (uint8_t *)"RSA768|PKCS1|SHA224|Recover", 28}, // 10 519 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|SHA256|OnlySign", (uint8_t *)"RSA768|PKCS1|SHA256|Recover", 32}, // 11 520 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|SHA384|OnlySign", (uint8_t *)"RSA768|PKCS1|SHA384|Recover", 48}, // 12 521 {(uint8_t *)"RSA768", (uint8_t *)"RSA768|PKCS1|SHA512|OnlySign", (uint8_t *)"RSA768|PKCS1|SHA512|Recover", 64}, // 13 522 523 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|NoHash|OnlySign", (uint8_t *)"RSA1024|PKCS1|NoHash|Recover", 32}, // 14 524 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|NoPadding|NoHash|OnlySign", (uint8_t *)"RSA1024|NoPadding|NoHash|Recover", 128}, // 15 525 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|MD5|OnlySign", (uint8_t *)"RSA1024|PKCS1|MD5|Recover", 16}, // 16 526 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|SHA1|OnlySign", (uint8_t *)"RSA1024|PKCS1|SHA1|Recover", 20}, // 17 527 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|SHA224|OnlySign", (uint8_t *)"RSA1024|PKCS1|SHA224|Recover", 28}, // 18 528 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|SHA256|OnlySign", (uint8_t *)"RSA1024|PKCS1|SHA256|Recover", 32}, // 19 529 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|SHA384|OnlySign", (uint8_t *)"RSA1024|PKCS1|SHA384|Recover", 48}, // 20 530 {(uint8_t *)"RSA1024", (uint8_t *)"RSA1024|PKCS1|SHA512|OnlySign", (uint8_t *)"RSA1024|PKCS1|SHA512|Recover", 64}, // 21 531 532 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|NoHash|OnlySign", (uint8_t *)"RSA2048|PKCS1|NoHash|Recover", 32}, // 22 533 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|NoPadding|NoHash|OnlySign", (uint8_t *)"RSA2048|NoPadding|NoHash|Recover", 256}, // 23 534 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|MD5|OnlySign", (uint8_t *)"RSA2048|PKCS1|MD5|Recover", 16}, // 24 535 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|SHA1|OnlySign", (uint8_t *)"RSA2048|PKCS1|SHA1|Recover", 20}, // 25 536 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|SHA224|OnlySign", (uint8_t *)"RSA2048|PKCS1|SHA224|Recover", 28}, // 26 537 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|SHA256|OnlySign", (uint8_t *)"RSA2048|PKCS1|SHA256|Recover", 32}, // 27 538 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|SHA384|OnlySign", (uint8_t *)"RSA2048|PKCS1|SHA384|Recover", 48}, // 28 539 {(uint8_t *)"RSA2048", (uint8_t *)"RSA2048|PKCS1|SHA512|OnlySign", (uint8_t *)"RSA2048|PKCS1|SHA512|Recover", 64}, // 29 540 541 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|NoHash|OnlySign", (uint8_t *)"RSA3072|PKCS1|NoHash|Recover", 32}, // 30 542 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|NoPadding|NoHash|OnlySign", (uint8_t *)"RSA3072|NoPadding|NoHash|Recover", 384}, // 31 543 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|MD5|OnlySign", (uint8_t *)"RSA3072|PKCS1|MD5|Recover", 16}, // 32 544 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|SHA1|OnlySign", (uint8_t *)"RSA3072|PKCS1|SHA1|Recover", 20}, // 33 545 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|SHA224|OnlySign", (uint8_t *)"RSA3072|PKCS1|SHA224|Recover", 28}, // 34 546 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|SHA256|OnlySign", (uint8_t *)"RSA3072|PKCS1|SHA256|Recover", 32}, // 35 547 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|SHA384|OnlySign", (uint8_t *)"RSA3072|PKCS1|SHA384|Recover", 48}, // 36 548 {(uint8_t *)"RSA3072", (uint8_t *)"RSA3072|PKCS1|SHA512|OnlySign", (uint8_t *)"RSA3072|PKCS1|SHA512|Recover", 64}, // 37 549 550 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|NoHash|OnlySign", (uint8_t *)"RSA4096|PKCS1|NoHash|Recover", 32}, // 38 551 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|NoPadding|NoHash|OnlySign", (uint8_t *)"RSA4096|NoPadding|NoHash|Recover", 512}, // 39 552 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|MD5|OnlySign", (uint8_t *)"RSA4096|PKCS1|MD5|Recover", 16}, // 40 553 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|SHA1|OnlySign", (uint8_t *)"RSA4096|PKCS1|SHA1|Recover", 20}, // 41 554 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|SHA224|OnlySign", (uint8_t *)"RSA4096|PKCS1|SHA224|Recover", 28}, // 42 555 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|SHA256|OnlySign", (uint8_t *)"RSA4096|PKCS1|SHA256|Recover", 32}, // 43 556 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|SHA384|OnlySign", (uint8_t *)"RSA4096|PKCS1|SHA384|Recover", 48}, // 44 557 {(uint8_t *)"RSA4096", (uint8_t *)"RSA4096|PKCS1|SHA512|OnlySign", (uint8_t *)"RSA4096|PKCS1|SHA512|Recover", 64}, // 45 558 559 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|NoHash|OnlySign", (uint8_t *)"RSA8192|PKCS1|NoHash|Recover", 32}, // 46 560 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|NoPadding|NoHash|OnlySign", (uint8_t *)"RSA8192|NoPadding|NoHash|Recover", 1024}, // 47 561 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|MD5|OnlySign", (uint8_t *)"RSA8192|PKCS1|MD5|Recover", 16}, // 48 562 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|SHA1|OnlySign", (uint8_t *)"RSA8192|PKCS1|SHA1|Recover", 20}, // 49 563 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|SHA224|OnlySign", (uint8_t *)"RSA8192|PKCS1|SHA224|Recover", 28}, // 50 564 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|SHA256|OnlySign", (uint8_t *)"RSA8192|PKCS1|SHA256|Recover", 32}, // 51 565 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|SHA384|OnlySign", (uint8_t *)"RSA8192|PKCS1|SHA384|Recover", 48}, // 52 566 {(uint8_t *)"RSA8192", (uint8_t *)"RSA8192|PKCS1|SHA512|OnlySign", (uint8_t *)"RSA8192|PKCS1|SHA512|Recover", 64}, // 53 567 568 {(uint8_t *)"RSA1024", (uint8_t *)"RSA|PKCS1|SHA1|OnlySign", (uint8_t *)"RSA|PKCS1|SHA1|Recover", 20}, // 54 569 }; 570 571 INSTANTIATE_TEST_CASE_P(OHCryptoFrameworkVerifyNapiTest, VERIFY_PKCS1_TEST, ::testing::ValuesIn(g_verifyPkcs1Data)); 572 INSTANTIATE_TEST_CASE_P(OHCryptoFrameworkVerifyNapiTest, VERIFY_PSS_TEST, ::testing::ValuesIn(g_verifyPssData)); 573 INSTANTIATE_TEST_CASE_P(OHCryptoFrameworkVerifyNapiTest, VERIFY_ECC_TEST, ::testing::ValuesIn(g_verifyEccData)); 574 INSTANTIATE_TEST_CASE_P(OHCryptoFrameworkVerifyNapiTest, VERIFY_DSA_TEST, ::testing::ValuesIn(g_verifyDsaData)); 575 INSTANTIATE_TEST_CASE_P(OHCryptoFrameworkVerifyNapiTest, VERIFY_RSA_ONLY_SIGN_TEST, ::testing::ValuesIn(g_verifyRsaOnlySignData)); 576 577 /** 578 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0100 579 * @tc.name OHCryptoFrameworkVerifyNapiTest/VERIFY_PKCS1_TEST.SUB_Security_CryptoFramework_NAPI_Verify_Test_0100/x 580 * @tc.desc algorithm is Verify 581 * @tc.size Medium 582 * @tc.type Func 583 * @tc.level Level0 584 */ 585 HWTEST_P(VERIFY_PKCS1_TEST, SUB_Security_CryptoFramework_NAPI_Verify_Test_0100, TestSize.Level0) 586 { 587 VerifySpec verifyData = GetParam(); 588 HcfSign *signObj = nullptr; 589 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 590 OH_CryptoKeyPair *keyPair = nullptr; 591 int32_t msgLen = verifyData.msgLen; 592 HcfRand *randomObj = nullptr; 593 HcfBlob msgBlob = {0}; 594 HcfBlob signData = {.data = nullptr, .len = 0}; 595 OH_CryptoVerify *verify = nullptr; 596 Crypto_DataBlob n = {.data = nullptr, .len = 0}; 597 598 HcfRandCreate(&randomObj); 599 ASSERT_TRUE(randomObj != nullptr); 600 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 601 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)verifyData.keyAlgName, &keyCtx), CRYPTO_SUCCESS); 602 // keypair 603 if (strcmp((const char *)verifyData.keyAlgName, "RSA8192") == 0) { 604 Crypto_DataBlob pubKeyBlob = { .data = g_rsa8192pubKey, .len = sizeof(g_rsa8192pubKey) }; 605 Crypto_DataBlob priKeyBlob = { .data = g_rsa8192priKey, .len = sizeof(g_rsa8192priKey) }; 606 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 607 } else if (strcmp((const char *)verifyData.keyAlgName, "RSA4096") == 0) { 608 Crypto_DataBlob pubKeyBlob = { .data = g_rsa4096pubKey, .len = sizeof(g_rsa4096pubKey) }; 609 Crypto_DataBlob priKeyBlob = { .data = g_rsa4096priKey, .len = sizeof(g_rsa4096priKey) }; 610 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 611 } else if (strcmp((const char *)verifyData.keyAlgName, "RSA3072") == 0) { 612 Crypto_DataBlob pubKeyBlob = { .data = g_rsa3072pubKey, .len = sizeof(g_rsa3072pubKey) }; 613 Crypto_DataBlob priKeyBlob = { .data = g_rsa3072priKey, .len = sizeof(g_rsa3072priKey) }; 614 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 615 } else { 616 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 617 } 618 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 619 ASSERT_EQ(OH_CryptoPubKey_GetParam(pubKey, CRYPTO_RSA_N_DATABLOB, &n), CRYPTO_SUCCESS); 620 // sign 621 ASSERT_EQ(HcfSignCreate((const char *)verifyData.signAlgName, &signObj), HCF_SUCCESS); 622 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 623 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 624 // verify 625 ASSERT_EQ(OH_CryptoVerify_Create((const char *)verifyData.verifyAlgName, &verify), CRYPTO_SUCCESS); 626 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 627 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 628 const char * getVerifyAlgName = OH_CryptoVerify_GetAlgoName(verify); 629 ASSERT_TRUE(memcmp(getVerifyAlgName, (const char *)verifyData.verifyAlgName, strlen((const char *)verifyData.verifyAlgName)) == 0); 630 631 HcfObjDestroy(signObj); 632 OH_CryptoVerify_Destroy(verify); 633 HcfObjDestroy(randomObj); 634 OH_Crypto_FreeDataBlob(&n); 635 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 636 OH_CryptoKeyPair_Destroy(keyPair); 637 HcfBlobDataClearAndFree(&msgBlob); 638 HcfBlobDataClearAndFree(&signData); 639 } 640 641 /** 642 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0200 643 * @tc.name OHCryptoFrameworkVerifyNapiTest/VERIFY_PSS_TEST.SUB_Security_CryptoFramework_NAPI_Verify_Test_0200/x 644 * @tc.desc algorithm is Verify 645 * @tc.size Medium 646 * @tc.type Func 647 * @tc.level Level0 648 */ 649 HWTEST_P(VERIFY_PSS_TEST, SUB_Security_CryptoFramework_NAPI_Verify_Test_0200, TestSize.Level0) 650 { 651 VerifySpec verifyData = GetParam(); 652 HcfSign *signObj = nullptr; 653 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 654 OH_CryptoKeyPair *keyPair = nullptr; 655 int32_t msgLen = verifyData.msgLen; 656 HcfRand *randomObj = nullptr; 657 HcfBlob msgBlob = {0}; 658 HcfBlob signData = {.data = nullptr, .len = 0}; 659 OH_CryptoVerify *verify = nullptr; 660 661 HcfRandCreate(&randomObj); 662 ASSERT_TRUE(randomObj != nullptr); 663 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 664 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)verifyData.keyAlgName, &keyCtx), CRYPTO_SUCCESS); 665 if (strcmp((const char *)verifyData.keyAlgName, "RSA8192") == 0) { 666 Crypto_DataBlob pubKeyBlob = { .data = g_rsa8192pubKey, .len = sizeof(g_rsa8192pubKey) }; 667 Crypto_DataBlob priKeyBlob = { .data = g_rsa8192priKey, .len = sizeof(g_rsa8192priKey) }; 668 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 669 } else if (strcmp((const char *)verifyData.keyAlgName, "RSA4096") == 0) { 670 Crypto_DataBlob pubKeyBlob = { .data = g_rsa4096pubKey, .len = sizeof(g_rsa4096pubKey) }; 671 Crypto_DataBlob priKeyBlob = { .data = g_rsa4096priKey, .len = sizeof(g_rsa4096priKey) }; 672 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 673 } else if (strcmp((const char *)verifyData.keyAlgName, "RSA3072") == 0) { 674 Crypto_DataBlob pubKeyBlob = { .data = g_rsa3072pubKey, .len = sizeof(g_rsa3072pubKey) }; 675 Crypto_DataBlob priKeyBlob = { .data = g_rsa3072priKey, .len = sizeof(g_rsa3072priKey) }; 676 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 677 } else { 678 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 679 } 680 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 681 ASSERT_EQ(HcfSignCreate((const char *)verifyData.signAlgName, &signObj), HCF_SUCCESS); 682 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 683 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 684 ASSERT_EQ(OH_CryptoVerify_Create((const char *)verifyData.verifyAlgName, &verify), CRYPTO_SUCCESS); 685 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 686 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 687 const char * getVerifyAlgName = OH_CryptoVerify_GetAlgoName(verify); 688 ASSERT_TRUE(memcmp(getVerifyAlgName, (const char *)verifyData.verifyAlgName, strlen((const char *)verifyData.verifyAlgName)) == 0); 689 690 HcfObjDestroy(signObj); 691 OH_CryptoVerify_Destroy(verify); 692 HcfObjDestroy(randomObj); 693 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 694 OH_CryptoKeyPair_Destroy(keyPair); 695 HcfBlobDataClearAndFree(&msgBlob); 696 HcfBlobDataClearAndFree(&signData); 697 } 698 699 /** 700 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0301 701 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_0301 702 * @tc.desc algorithm is Verify 703 * @tc.size Medium 704 * @tc.type Func 705 * @tc.level Level0 706 */ 707 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_0301, TestSize.Level0) 708 { 709 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 710 OH_CryptoKeyPair *keyPair = nullptr; 711 Crypto_DataBlob pubKeyBlob = { .data = g_rsa8192pubKey, .len = sizeof(g_rsa8192pubKey) }; 712 Crypto_DataBlob priKeyBlob = { .data = g_rsa8192priKey, .len = sizeof(g_rsa8192priKey) }; 713 714 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA8192", &keyCtx), CRYPTO_SUCCESS); 715 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 716 717 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 718 OH_CryptoKeyPair_Destroy(keyPair); 719 } 720 721 /** 722 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0300 723 * @tc.name OHCryptoFrameworkVerifyNapiTest/VERIFY_ECC_TEST.SUB_Security_CryptoFramework_NAPI_Verify_Test_0300/x 724 * @tc.desc algorithm is Verify 725 * @tc.size Medium 726 * @tc.type Func 727 * @tc.level Level0 728 */ 729 HWTEST_P(VERIFY_ECC_TEST, SUB_Security_CryptoFramework_NAPI_Verify_Test_0300, TestSize.Level0) 730 { 731 VerifySpec verifyData = GetParam(); 732 HcfSign *signObj = nullptr; 733 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 734 OH_CryptoKeyPair *keyPair = nullptr; 735 int32_t msgLen = verifyData.msgLen; 736 HcfRand *randomObj = nullptr; 737 HcfBlob msgBlob = {0}; 738 HcfBlob signData = {.data = nullptr, .len = 0}; 739 OH_CryptoVerify *verify = nullptr; 740 741 HcfRandCreate(&randomObj); 742 ASSERT_TRUE(randomObj != nullptr); 743 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 744 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)verifyData.keyAlgName, &keyCtx), CRYPTO_SUCCESS); 745 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 746 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 747 ASSERT_EQ(HcfSignCreate((const char *)verifyData.signAlgName, &signObj), HCF_SUCCESS); 748 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 749 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 750 ASSERT_EQ(OH_CryptoVerify_Create((const char *)verifyData.verifyAlgName, &verify), CRYPTO_SUCCESS); 751 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 752 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 753 const char * getVerifyAlgName = OH_CryptoVerify_GetAlgoName(verify); 754 ASSERT_TRUE(memcmp(getVerifyAlgName, (const char *)verifyData.verifyAlgName, strlen((const char *)verifyData.verifyAlgName)) == 0); 755 756 HcfObjDestroy(signObj); 757 OH_CryptoVerify_Destroy(verify); 758 HcfObjDestroy(randomObj); 759 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 760 OH_CryptoKeyPair_Destroy(keyPair); 761 HcfBlobDataClearAndFree(&msgBlob); 762 HcfBlobDataClearAndFree(&signData); 763 } 764 765 /** 766 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0400 767 * @tc.name OHCryptoFrameworkVerifyNapiTest/VERIFY_DSA_TEST.SUB_Security_CryptoFramework_NAPI_Verify_Test_0400/x 768 * @tc.desc algorithm is Verify 769 * @tc.size Medium 770 * @tc.type Func 771 * @tc.level Level0 772 */ 773 HWTEST_P(VERIFY_DSA_TEST, SUB_Security_CryptoFramework_NAPI_Verify_Test_0400, TestSize.Level0) 774 { 775 VerifySpec verifyData = GetParam(); 776 HcfSign *signObj = nullptr; 777 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 778 OH_CryptoKeyPair *keyPair = nullptr; 779 int32_t msgLen = verifyData.msgLen; 780 HcfRand *randomObj = nullptr; 781 HcfBlob msgBlob = {0}; 782 HcfBlob signData = {.data = nullptr, .len = 0}; 783 OH_CryptoVerify *verify = nullptr; 784 785 HcfRandCreate(&randomObj); 786 ASSERT_TRUE(randomObj != nullptr); 787 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 788 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)verifyData.keyAlgName, &keyCtx), CRYPTO_SUCCESS); 789 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 790 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 791 ASSERT_EQ(HcfSignCreate((const char *)verifyData.signAlgName, &signObj), HCF_SUCCESS); 792 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 793 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 794 ASSERT_EQ(OH_CryptoVerify_Create((const char *)verifyData.verifyAlgName, &verify), CRYPTO_SUCCESS); 795 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 796 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 797 const char * getVerifyAlgName = OH_CryptoVerify_GetAlgoName(verify); 798 ASSERT_TRUE(memcmp(getVerifyAlgName, (const char *)verifyData.verifyAlgName, strlen((const char *)verifyData.verifyAlgName)) == 0); 799 800 HcfObjDestroy(signObj); 801 OH_CryptoVerify_Destroy(verify); 802 HcfObjDestroy(randomObj); 803 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 804 OH_CryptoKeyPair_Destroy(keyPair); 805 HcfBlobDataClearAndFree(&msgBlob); 806 HcfBlobDataClearAndFree(&signData); 807 } 808 809 /** 810 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0500 811 * @tc.name OHCryptoFrameworkVerifyNapiTest/VERIFY_RSA_ONLY_SIGN_TEST.SUB_Security_CryptoFramework_NAPI_Verify_Test_0500/x 812 * @tc.desc algorithm is Verify 813 * @tc.size Medium 814 * @tc.type Func 815 * @tc.level Level0 816 */ 817 HWTEST_P(VERIFY_RSA_ONLY_SIGN_TEST, SUB_Security_CryptoFramework_NAPI_Verify_Test_0500, TestSize.Level0) 818 { 819 VerifySpec verifyData = GetParam(); 820 HcfSign *signObj = nullptr; 821 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 822 OH_CryptoKeyPair *keyPair = nullptr; 823 int32_t msgLen = verifyData.msgLen; 824 HcfRand *randomObj = nullptr; 825 HcfBlob msgBlob = {0}; 826 HcfBlob signData = {.data = nullptr, .len = 0}; 827 OH_CryptoVerify *verify = nullptr; 828 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 829 830 HcfRandCreate(&randomObj); 831 ASSERT_TRUE(randomObj != nullptr); 832 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 833 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)verifyData.keyAlgName, &keyCtx), CRYPTO_SUCCESS); 834 msgBlob.data[0] = 0; 835 if (strcmp((const char *)verifyData.keyAlgName, "RSA8192") == 0) { 836 Crypto_DataBlob pubKeyBlob = { .data = g_rsa8192pubKey, .len = sizeof(g_rsa8192pubKey) }; 837 Crypto_DataBlob priKeyBlob = { .data = g_rsa8192priKey, .len = sizeof(g_rsa8192priKey) }; 838 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 839 } else if (strcmp((const char *)verifyData.keyAlgName, "RSA4096") == 0) { 840 Crypto_DataBlob pubKeyBlob = { .data = g_rsa4096pubKey, .len = sizeof(g_rsa4096pubKey) }; 841 Crypto_DataBlob priKeyBlob = { .data = g_rsa4096priKey, .len = sizeof(g_rsa4096priKey) }; 842 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 843 } else if (strcmp((const char *)verifyData.keyAlgName, "RSA3072") == 0) { 844 Crypto_DataBlob pubKeyBlob = { .data = g_rsa3072pubKey, .len = sizeof(g_rsa3072pubKey) }; 845 Crypto_DataBlob priKeyBlob = { .data = g_rsa3072priKey, .len = sizeof(g_rsa3072priKey) }; 846 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 847 } else { 848 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 849 } 850 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 851 ASSERT_EQ(HcfSignCreate((const char *)verifyData.signAlgName, &signObj), HCF_SUCCESS); 852 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 853 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 854 ASSERT_EQ(OH_CryptoVerify_Create((const char *)verifyData.verifyAlgName, &verify), CRYPTO_SUCCESS); 855 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 856 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_SUCCESS); 857 const char * getVerifyAlgName = OH_CryptoVerify_GetAlgoName(verify); 858 ASSERT_TRUE(memcmp(getVerifyAlgName, (const char *)verifyData.verifyAlgName, strlen((const char *)verifyData.verifyAlgName)) == 0); 859 ASSERT_TRUE(memcmp(msgBlob.data, rawSignData.data, msgBlob.len) == 0); 860 ASSERT_EQ(msgBlob.len, rawSignData.len); 861 862 863 HcfObjDestroy(signObj); 864 HcfObjDestroy(verify); 865 HcfObjDestroy(randomObj); 866 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 867 OH_CryptoKeyPair_Destroy(keyPair); 868 HcfBlobDataClearAndFree(&msgBlob); 869 HcfBlobDataClearAndFree(&signData); 870 OH_Crypto_FreeDataBlob(&rawSignData); 871 } 872 873 /** 874 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0600 875 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_0600 876 * @tc.desc algorithm is Verify 877 * @tc.size Medium 878 * @tc.type Func 879 * @tc.level Level0 880 */ 881 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_0600, TestSize.Level0) 882 { 883 OH_CryptoVerify *verify = nullptr; 884 885 ASSERT_EQ(OH_CryptoVerify_Create(nullptr, &verify), CRYPTO_INVALID_PARAMS); 886 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD10", &verify), CRYPTO_INVALID_PARAMS); 887 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD5", nullptr), CRYPTO_INVALID_PARAMS); 888 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"SM9|SM3", &verify), CRYPTO_INVALID_PARAMS); 889 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS6|MD5", &verify), CRYPTO_INVALID_PARAMS); 890 } 891 892 /** 893 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0700 894 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_0700 895 * @tc.desc algorithm is Verify 896 * @tc.size Medium 897 * @tc.type Func 898 * @tc.level Level0 899 */ 900 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_0700, TestSize.Level0) 901 { 902 OH_CryptoVerify *verify = nullptr; 903 OH_CryptoKeyPair *keyPair = nullptr; 904 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 905 906 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 907 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 908 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 909 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA1", &verify), CRYPTO_SUCCESS); 910 ASSERT_EQ(OH_CryptoVerify_Init(nullptr, pubKey), CRYPTO_INVALID_PARAMS); 911 ASSERT_EQ(OH_CryptoVerify_Init(verify, nullptr), CRYPTO_INVALID_PARAMS); 912 913 OH_CryptoVerify_Destroy(verify); 914 OH_CryptoKeyPair_Destroy(keyPair); 915 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 916 } 917 918 /** 919 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0800 920 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_0800 921 * @tc.desc algorithm is Verify 922 * @tc.size Medium 923 * @tc.type Func 924 * @tc.level Level0 925 */ 926 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_0800, TestSize.Level0) 927 { 928 OH_CryptoVerify *verify = nullptr; 929 OH_CryptoKeyPair *keyPair = nullptr; 930 uint8_t testData[] = "0123456789"; 931 Crypto_DataBlob msgBlob = { 932 .data = reinterpret_cast<uint8_t *>(testData), 933 .len = sizeof(testData) 934 }; 935 Crypto_DataBlob rawBlob = { 936 .data = reinterpret_cast<uint8_t *>(testData), 937 .len = sizeof(testData) 938 }; 939 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 940 941 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx), CRYPTO_SUCCESS); 942 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 943 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 944 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA768|PKCS1|SHA224", &verify), CRYPTO_SUCCESS); 945 ASSERT_EQ(OH_CryptoVerify_Update(verify, &msgBlob), CRYPTO_INVALID_PARAMS); 946 ASSERT_FALSE(OH_CryptoVerify_Final(verify, &msgBlob, &rawBlob)); 947 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 948 ASSERT_EQ(OH_CryptoVerify_Update(nullptr, &msgBlob), CRYPTO_INVALID_PARAMS); 949 ASSERT_EQ(OH_CryptoVerify_Update(verify, nullptr), CRYPTO_INVALID_PARAMS); 950 ASSERT_FALSE(OH_CryptoVerify_Final(nullptr, &msgBlob, &rawBlob)); 951 ASSERT_FALSE(OH_CryptoVerify_Final(verify, nullptr, &rawBlob)); 952 ASSERT_FALSE(OH_CryptoVerify_Final(verify, &msgBlob, nullptr)); 953 ASSERT_FALSE(OH_CryptoVerify_GetAlgoName(nullptr)); 954 955 OH_CryptoVerify_Destroy(verify); 956 OH_CryptoKeyPair_Destroy(keyPair); 957 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 958 } 959 960 /** 961 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0900 962 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_0900 963 * @tc.desc algorithm is Verify 964 * @tc.size Medium 965 * @tc.type Func 966 * @tc.level Level0 967 */ 968 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_0900, TestSize.Level0) 969 { 970 HcfSign *signObj = nullptr; 971 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 972 OH_CryptoKeyPair *keyPair = nullptr; 973 int32_t msgLen = OH_CRYPTO_SHA1_DIGESTSIZE; 974 HcfRand *randomObj = nullptr; 975 HcfBlob msgBlob = {0}; 976 HcfBlob signData = {.data = nullptr, .len = 0}; 977 OH_CryptoVerify *verify = nullptr; 978 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 979 980 HcfRandCreate(&randomObj); 981 ASSERT_TRUE(randomObj != nullptr); 982 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 983 msgBlob.data[0] = 0; 984 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 985 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 986 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 987 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA1|OnlySign", &signObj), HCF_SUCCESS); 988 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 989 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 990 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA1|Recover", &verify), CRYPTO_SUCCESS); 991 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 992 ASSERT_EQ(OH_CryptoVerify_Recover(nullptr, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_INVALID_PARAMS); 993 ASSERT_EQ(OH_CryptoVerify_Recover(verify, nullptr, &rawSignData), CRYPTO_INVALID_PARAMS); 994 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, nullptr), CRYPTO_INVALID_PARAMS); 995 996 HcfObjDestroy(signObj); 997 OH_CryptoVerify_Destroy(verify); 998 HcfObjDestroy(randomObj); 999 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1000 OH_CryptoKeyPair_Destroy(keyPair); 1001 HcfBlobDataClearAndFree(&msgBlob); 1002 HcfBlobDataClearAndFree(&signData); 1003 OH_Crypto_FreeDataBlob(&rawSignData); 1004 } 1005 1006 /** 1007 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1000 1008 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1000 1009 * @tc.desc algorithm is Verify 1010 * @tc.size Medium 1011 * @tc.type Func 1012 * @tc.level Level0 1013 */ 1014 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1000, TestSize.Level0) 1015 { 1016 OH_CryptoVerify *verify1 = nullptr; 1017 OH_CryptoVerify *verify2 = nullptr; 1018 uint8_t MdName[] = "MD5"; 1019 Crypto_DataBlob inBlob = { 1020 .data = reinterpret_cast<uint8_t *>(MdName), 1021 .len = sizeof(MdName) 1022 }; 1023 OH_CryptoKeyPair *keyPair = nullptr; 1024 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1025 1026 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx), CRYPTO_SUCCESS); 1027 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1028 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1029 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA768|PSS|MD5|MGF1_SHA384", &verify1), CRYPTO_SUCCESS); 1030 ASSERT_EQ(OH_CryptoVerify_SetParam(nullptr, CRYPTO_PSS_MGF_NAME_STR, &inBlob), CRYPTO_INVALID_PARAMS); 1031 ASSERT_EQ(OH_CryptoVerify_SetParam(verify1, CRYPTO_PSS_MGF_NAME_STR, nullptr), CRYPTO_INVALID_PARAMS); 1032 ASSERT_EQ(OH_CryptoVerify_Init(verify1, pubKey), CRYPTO_SUCCESS); 1033 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA256", &verify2), CRYPTO_SUCCESS); 1034 ASSERT_EQ(OH_CryptoVerify_SetParam(verify2, CRYPTO_PSS_MD_NAME_STR, &inBlob), CRYPTO_NOT_SUPPORTED); 1035 ASSERT_EQ(OH_CryptoVerify_SetParam(verify2, CRYPTO_SM2_USER_ID_DATABLOB, &inBlob), CRYPTO_NOT_SUPPORTED); 1036 ASSERT_EQ(OH_CryptoVerify_SetParam(verify1, CRYPTO_PSS_MD_NAME_STR, &inBlob), CRYPTO_NOT_SUPPORTED); 1037 ASSERT_EQ(OH_CryptoVerify_GetParam(nullptr, CRYPTO_PSS_MGF_NAME_STR, &inBlob), CRYPTO_INVALID_PARAMS); 1038 ASSERT_EQ(OH_CryptoVerify_GetParam(verify1, CRYPTO_PSS_MGF_NAME_STR, nullptr), CRYPTO_INVALID_PARAMS); 1039 1040 OH_CryptoVerify_Destroy(verify1); 1041 OH_CryptoVerify_Destroy(verify2); 1042 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1043 OH_CryptoKeyPair_Destroy(keyPair); 1044 } 1045 1046 /** 1047 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1100 1048 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1100 1049 * @tc.desc algorithm is Verify 1050 * @tc.size Medium 1051 * @tc.type Func 1052 * @tc.level Level0 1053 */ 1054 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1100, TestSize.Level0) 1055 { 1056 HcfSign *signObj = nullptr; 1057 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1058 OH_CryptoKeyPair *keyPair = nullptr; 1059 HcfBlob signData = {.data = nullptr, .len = 0}; 1060 OH_CryptoVerify *verify = nullptr; 1061 uint8_t testData[] = "0123456789"; 1062 Crypto_DataBlob msgBlob = { 1063 .data = reinterpret_cast<uint8_t *>(testData), 1064 .len = sizeof(testData) 1065 }; 1066 1067 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA512", &keyCtx), CRYPTO_SUCCESS); 1068 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1069 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1070 ASSERT_EQ(HcfSignCreate((const char *)"RSA512|PKCS1|MD5", &signObj), HCF_SUCCESS); 1071 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1072 ASSERT_EQ(signObj->sign(signObj, (HcfBlob *)&msgBlob, &signData), HCF_SUCCESS); 1073 signData.data[signData.len-1]--; 1074 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD5", &verify), CRYPTO_SUCCESS); 1075 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1076 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1077 signData.data[signData.len-1]++; 1078 msgBlob.data[msgBlob.len-1]--; 1079 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1080 1081 HcfObjDestroy(signObj); 1082 OH_CryptoVerify_Destroy(verify); 1083 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1084 OH_CryptoKeyPair_Destroy(keyPair); 1085 HcfBlobDataClearAndFree(&signData); 1086 } 1087 1088 /** 1089 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1200 1090 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1200 1091 * @tc.desc algorithm is Verify 1092 * @tc.size Medium 1093 * @tc.type Func 1094 * @tc.level Level0 1095 */ 1096 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1200, TestSize.Level0) 1097 { 1098 HcfSign *signObj = nullptr; 1099 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1100 OH_CryptoKeyPair *keyPair = nullptr; 1101 HcfBlob signData = {.data = nullptr, .len = 0}; 1102 OH_CryptoVerify *verify = nullptr; 1103 uint8_t testData[] = "0123456789"; 1104 Crypto_DataBlob msgBlob = { 1105 .data = reinterpret_cast<uint8_t *>(testData), 1106 .len = sizeof(testData) 1107 }; 1108 1109 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx), CRYPTO_SUCCESS); 1110 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1111 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1112 ASSERT_EQ(HcfSignCreate((const char *)"RSA768|PKCS1|SHA1", &signObj), HCF_SUCCESS); 1113 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1114 ASSERT_EQ(signObj->sign(signObj, (HcfBlob *)&msgBlob, &signData), HCF_SUCCESS); 1115 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA1", &verify), CRYPTO_SUCCESS); 1116 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1117 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1118 1119 HcfObjDestroy(signObj); 1120 OH_CryptoVerify_Destroy(verify); 1121 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1122 OH_CryptoKeyPair_Destroy(keyPair); 1123 HcfBlobDataClearAndFree(&signData); 1124 } 1125 1126 /** 1127 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1300 1128 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1300 1129 * @tc.desc algorithm is Verify 1130 * @tc.size Medium 1131 * @tc.type Func 1132 * @tc.level Level0 1133 */ 1134 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1300, TestSize.Level0) 1135 { 1136 HcfSign *signObj = nullptr; 1137 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1138 OH_CryptoKeyPair *keyPair = nullptr; 1139 HcfBlob signData = {.data = nullptr, .len = 0}; 1140 OH_CryptoVerify *verify = nullptr; 1141 uint8_t testData[] = "0123456789"; 1142 Crypto_DataBlob msgBlob = { 1143 .data = reinterpret_cast<uint8_t *>(testData), 1144 .len = sizeof(testData) 1145 }; 1146 1147 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 1148 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1149 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1150 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA224", &signObj), HCF_SUCCESS); 1151 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1152 ASSERT_EQ(signObj->sign(signObj, (HcfBlob *)&msgBlob, &signData), HCF_SUCCESS); 1153 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA256", &verify), CRYPTO_SUCCESS); 1154 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1155 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1156 1157 HcfObjDestroy(signObj); 1158 OH_CryptoVerify_Destroy(verify); 1159 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1160 OH_CryptoKeyPair_Destroy(keyPair); 1161 HcfBlobDataClearAndFree(&signData); 1162 } 1163 1164 /** 1165 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1400 1166 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1400 1167 * @tc.desc algorithm is Verify 1168 * @tc.size Medium 1169 * @tc.type Func 1170 * @tc.level Level0 1171 */ 1172 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1400, TestSize.Level0) 1173 { 1174 HcfSign *signObj = nullptr; 1175 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1176 OH_CryptoKeyPair *keyPair = nullptr; 1177 HcfBlob signData = {.data = nullptr, .len = 0}; 1178 OH_CryptoVerify *verify = nullptr; 1179 int32_t msgLen = OH_CRYPTO_MD5_DIGESTSIZE; 1180 HcfRand *randomObj = nullptr; 1181 HcfBlob msgBlob = {0}; 1182 1183 HcfRandCreate(&randomObj); 1184 ASSERT_TRUE(randomObj != nullptr); 1185 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1186 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA512", &keyCtx), CRYPTO_SUCCESS); 1187 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1188 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1189 ASSERT_EQ(HcfSignCreate((const char *)"RSA512|PKCS1|MD5|OnlySign", &signObj), HCF_SUCCESS); 1190 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1191 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1192 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD5", &verify), CRYPTO_SUCCESS); 1193 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1194 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1195 1196 HcfObjDestroy(signObj); 1197 HcfObjDestroy(randomObj); 1198 OH_CryptoVerify_Destroy(verify); 1199 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1200 OH_CryptoKeyPair_Destroy(keyPair); 1201 HcfBlobDataClearAndFree(&signData); 1202 HcfBlobDataClearAndFree(&msgBlob); 1203 } 1204 1205 /** 1206 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1500 1207 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1500 1208 * @tc.desc algorithm is Verify 1209 * @tc.size Medium 1210 * @tc.type Func 1211 * @tc.level Level0 1212 */ 1213 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1500, TestSize.Level0) 1214 { 1215 HcfSign *signObj = nullptr; 1216 OH_CryptoAsymKeyGenerator *keyCtx_A = nullptr; 1217 OH_CryptoKeyPair *keyPair_A = nullptr; 1218 OH_CryptoAsymKeyGenerator *keyCtx_B = nullptr; 1219 OH_CryptoKeyPair *keyPair_B = nullptr; 1220 HcfBlob signData = {.data = nullptr, .len = 0}; 1221 OH_CryptoVerify *verify = nullptr; 1222 int32_t msgLen = 16; 1223 HcfRand *randomObj = nullptr; 1224 HcfBlob msgBlob = {0}; 1225 1226 HcfRandCreate(&randomObj); 1227 ASSERT_TRUE(randomObj != nullptr); 1228 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1229 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx_A), CRYPTO_SUCCESS); 1230 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx_A, &keyPair_A), CRYPTO_SUCCESS); 1231 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx_B), CRYPTO_SUCCESS); 1232 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx_B, &keyPair_B), CRYPTO_SUCCESS); 1233 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair_B); 1234 ASSERT_EQ(HcfSignCreate((const char *)"RSA768|PKCS1|SHA256", &signObj), HCF_SUCCESS); 1235 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair_A)->priKey), HCF_SUCCESS); 1236 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1237 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA768|PKCS1|SHA256", &verify), CRYPTO_SUCCESS); 1238 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1239 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1240 1241 HcfObjDestroy(signObj); 1242 HcfObjDestroy(randomObj); 1243 OH_CryptoVerify_Destroy(verify); 1244 OH_CryptoAsymKeyGenerator_Destroy(keyCtx_A); 1245 OH_CryptoKeyPair_Destroy(keyPair_A); 1246 OH_CryptoAsymKeyGenerator_Destroy(keyCtx_B); 1247 OH_CryptoKeyPair_Destroy(keyPair_B); 1248 HcfBlobDataClearAndFree(&signData); 1249 HcfBlobDataClearAndFree(&msgBlob); 1250 } 1251 1252 /** 1253 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1600 1254 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1600 1255 * @tc.desc algorithm is Verify 1256 * @tc.size Medium 1257 * @tc.type Func 1258 * @tc.level Level0 1259 */ 1260 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1600, TestSize.Level0) 1261 { 1262 HcfSign *signObj = nullptr; 1263 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1264 OH_CryptoKeyPair *keyPair = nullptr; 1265 HcfBlob signData = {.data = nullptr, .len = 0}; 1266 OH_CryptoVerify *verify = nullptr; 1267 int32_t msgLen = OH_CRYPTO_MD5_DIGESTSIZE; 1268 HcfRand *randomObj = nullptr; 1269 HcfBlob msgBlob = {0}; 1270 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1271 1272 HcfRandCreate(&randomObj); 1273 ASSERT_TRUE(randomObj != nullptr); 1274 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1275 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA512", &keyCtx), CRYPTO_SUCCESS); 1276 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1277 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1278 ASSERT_EQ(HcfSignCreate((const char *)"RSA512|PKCS1|MD5|OnlySign", &signObj), HCF_SUCCESS); 1279 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1280 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1281 signData.data[signData.len-1]--; 1282 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD5|Recover", &verify), CRYPTO_SUCCESS); 1283 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1284 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_OPERTION_ERROR); 1285 1286 HcfObjDestroy(signObj); 1287 HcfObjDestroy(randomObj); 1288 OH_CryptoVerify_Destroy(verify); 1289 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1290 OH_CryptoKeyPair_Destroy(keyPair); 1291 HcfBlobDataClearAndFree(&signData); 1292 OH_Crypto_FreeDataBlob(&rawSignData); 1293 HcfBlobDataClearAndFree(&msgBlob); 1294 } 1295 1296 /** 1297 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1700 1298 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1700 1299 * @tc.desc algorithm is Verify 1300 * @tc.size Medium 1301 * @tc.type Func 1302 * @tc.level Level0 1303 */ 1304 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1700, TestSize.Level0) 1305 { 1306 HcfSign *signObj = nullptr; 1307 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1308 OH_CryptoKeyPair *keyPair = nullptr; 1309 HcfBlob signData = {.data = nullptr, .len = 0}; 1310 OH_CryptoVerify *verify = nullptr; 1311 int32_t msgLen = OH_CRYPTO_SHA1_DIGESTSIZE; 1312 HcfRand *randomObj = nullptr; 1313 HcfBlob msgBlob = {0}; 1314 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1315 1316 HcfRandCreate(&randomObj); 1317 ASSERT_TRUE(randomObj != nullptr); 1318 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1319 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx), CRYPTO_SUCCESS); 1320 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1321 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1322 ASSERT_EQ(HcfSignCreate((const char *)"RSA768|PKCS1|SHA1|OnlySign", &signObj), HCF_SUCCESS); 1323 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1324 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1325 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA1|Recover", &verify), CRYPTO_SUCCESS); 1326 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1327 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_SUCCESS); 1328 1329 HcfObjDestroy(signObj); 1330 HcfObjDestroy(randomObj); 1331 OH_CryptoVerify_Destroy(verify); 1332 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1333 OH_CryptoKeyPair_Destroy(keyPair); 1334 HcfBlobDataClearAndFree(&signData); 1335 OH_Crypto_FreeDataBlob(&rawSignData); 1336 HcfBlobDataClearAndFree(&msgBlob); 1337 } 1338 1339 /** 1340 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1800 1341 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1800 1342 * @tc.desc algorithm is Verify 1343 * @tc.size Medium 1344 * @tc.type Func 1345 * @tc.level Level0 1346 */ 1347 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1800, TestSize.Level0) 1348 { 1349 HcfSign *signObj = nullptr; 1350 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1351 OH_CryptoKeyPair *keyPair = nullptr; 1352 HcfBlob signData = {.data = nullptr, .len = 0}; 1353 OH_CryptoVerify *verify = nullptr; 1354 int32_t msgLen = OH_CRYPTO_SHA224_DIGESTSIZE; 1355 HcfRand *randomObj = nullptr; 1356 HcfBlob msgBlob = {0}; 1357 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1358 1359 HcfRandCreate(&randomObj); 1360 ASSERT_TRUE(randomObj != nullptr); 1361 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1362 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 1363 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1364 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1365 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA224|OnlySign", &signObj), HCF_SUCCESS); 1366 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1367 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1368 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA256|Recover", &verify), CRYPTO_SUCCESS); 1369 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1370 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_OPERTION_ERROR); 1371 1372 HcfObjDestroy(signObj); 1373 HcfObjDestroy(randomObj); 1374 OH_CryptoVerify_Destroy(verify); 1375 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1376 OH_CryptoKeyPair_Destroy(keyPair); 1377 HcfBlobDataClearAndFree(&signData); 1378 OH_Crypto_FreeDataBlob(&rawSignData); 1379 HcfBlobDataClearAndFree(&msgBlob); 1380 } 1381 1382 /** 1383 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1900 1384 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1900 1385 * @tc.desc algorithm is Verify 1386 * @tc.size Medium 1387 * @tc.type Func 1388 * @tc.level Level0 1389 */ 1390 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1900, TestSize.Level0) 1391 { 1392 HcfSign *signObj = nullptr; 1393 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1394 OH_CryptoKeyPair *keyPair = nullptr; 1395 HcfBlob signData = {.data = nullptr, .len = 0}; 1396 OH_CryptoVerify *verify = nullptr; 1397 int32_t msgLen = 64; 1398 HcfRand *randomObj = nullptr; 1399 HcfBlob msgBlob = {0}; 1400 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1401 OH_CryptoDigest *ctx = nullptr; 1402 Crypto_DataBlob out = {.data = nullptr, .len = 0}; 1403 1404 HcfRandCreate(&randomObj); 1405 ASSERT_TRUE(randomObj != nullptr); 1406 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1407 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA512", &keyCtx), CRYPTO_SUCCESS); 1408 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1409 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1410 ASSERT_EQ(HcfSignCreate((const char *)"RSA512|PKCS1|MD5", &signObj), HCF_SUCCESS); 1411 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1412 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1413 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD5|Recover", &verify), CRYPTO_SUCCESS); 1414 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1415 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_SUCCESS); 1416 ASSERT_EQ(rawSignData.len, OH_CRYPTO_MD5_DIGESTSIZE); 1417 ASSERT_EQ(OH_CryptoDigest_Create((const char *)"MD5", &ctx), CRYPTO_SUCCESS); 1418 ASSERT_EQ(OH_CryptoDigest_Update(ctx, (Crypto_DataBlob *)&msgBlob), CRYPTO_SUCCESS); 1419 ASSERT_EQ(OH_CryptoDigest_Final(ctx, &out), CRYPTO_SUCCESS); 1420 ASSERT_TRUE(memcmp(out.data, rawSignData.data, out.len) == 0); 1421 1422 OH_DigestCrypto_Destroy(ctx); 1423 HcfObjDestroy(signObj); 1424 HcfObjDestroy(randomObj); 1425 OH_CryptoVerify_Destroy(verify); 1426 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1427 OH_CryptoKeyPair_Destroy(keyPair); 1428 HcfBlobDataClearAndFree(&signData); 1429 OH_Crypto_FreeDataBlob(&rawSignData); 1430 OH_Crypto_FreeDataBlob(&out); 1431 HcfBlobDataClearAndFree(&msgBlob); 1432 } 1433 1434 /** 1435 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2000 1436 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2000 1437 * @tc.desc algorithm is Verify 1438 * @tc.size Medium 1439 * @tc.type Func 1440 * @tc.level Level0 1441 */ 1442 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2000, TestSize.Level0) 1443 { 1444 HcfSign *signObj = nullptr; 1445 OH_CryptoAsymKeyGenerator *keyCtx_A = nullptr; 1446 OH_CryptoKeyPair *keyPair_A = nullptr; 1447 OH_CryptoAsymKeyGenerator *keyCtx_B = nullptr; 1448 OH_CryptoKeyPair *keyPair_B = nullptr; 1449 HcfBlob signData = {.data = nullptr, .len = 0}; 1450 OH_CryptoVerify *verify = nullptr; 1451 int32_t msgLen = 20; 1452 HcfRand *randomObj = nullptr; 1453 HcfBlob msgBlob = {0}; 1454 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1455 1456 HcfRandCreate(&randomObj); 1457 ASSERT_TRUE(randomObj != nullptr); 1458 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1459 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx_A), CRYPTO_SUCCESS); 1460 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx_A, &keyPair_A), CRYPTO_SUCCESS); 1461 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx_B), CRYPTO_SUCCESS); 1462 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx_B, &keyPair_B), CRYPTO_SUCCESS); 1463 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair_B); 1464 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA1|OnlySign", &signObj), HCF_SUCCESS); 1465 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair_A)->priKey), HCF_SUCCESS); 1466 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1467 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA1|Recover", &verify), CRYPTO_SUCCESS); 1468 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1469 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_OPERTION_ERROR); 1470 1471 HcfObjDestroy(signObj); 1472 HcfObjDestroy(randomObj); 1473 OH_CryptoVerify_Destroy(verify); 1474 OH_CryptoAsymKeyGenerator_Destroy(keyCtx_A); 1475 OH_CryptoKeyPair_Destroy(keyPair_A); 1476 OH_CryptoAsymKeyGenerator_Destroy(keyCtx_B); 1477 OH_CryptoKeyPair_Destroy(keyPair_B); 1478 HcfBlobDataClearAndFree(&signData); 1479 OH_Crypto_FreeDataBlob(&rawSignData); 1480 HcfBlobDataClearAndFree(&msgBlob); 1481 } 1482 1483 /** 1484 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2100 1485 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2100 1486 * @tc.desc algorithm is Verify 1487 * @tc.size Medium 1488 * @tc.type Func 1489 * @tc.level Level0 1490 */ 1491 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2100, TestSize.Level0) 1492 { 1493 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1494 OH_CryptoKeyPair *keyPair = nullptr; 1495 OH_CryptoVerify *verify = nullptr; 1496 1497 uint8_t plainText[] = { 1498 0xe4, 0x2b, 0xcc, 0x08, 0x11, 0x79, 0x16, 0x1b, 0x35, 0x7f, 0xb3, 0xaf, 0x40, 0x3b, 0x3f, 0x7c 1499 }; 1500 Crypto_DataBlob msgBlob = { 1501 .data = reinterpret_cast<uint8_t *>(plainText), 1502 .len = sizeof(plainText) 1503 }; 1504 uint8_t pubKeyText[] = { 1505 0x30, 0x39, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 1506 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x22, 0x00, 0x03, 0x4d, 0xe4, 0xbb, 0x11, 0x10, 1507 0x1a, 0xd2, 0x05, 0x74, 0xf1, 0x0b, 0xb4, 0x75, 0x57, 0xf4, 0x3e, 0x55, 0x14, 0x17, 0x05, 0x4a, 1508 0xb2, 0xfb, 0x8c, 0x84, 0x64, 0x38, 0x02, 0xa0, 0x2a, 0xa6, 0xf0 1509 }; 1510 Crypto_DataBlob keyBlob = { 1511 .data = reinterpret_cast<uint8_t *>(pubKeyText), 1512 .len = sizeof(pubKeyText) 1513 }; 1514 uint8_t signText[] = { 1515 0x30, 0x44, 0x02, 0x20, 0x21, 0x89, 0x99, 0xb1, 0x56, 0x4e, 0x3a, 0x2c, 0x16, 0x08, 0xb5, 0x8a, 1516 0x06, 0x6f, 0x67, 0x47, 0x1b, 0x04, 0x18, 0x7d, 0x53, 0x2d, 0xba, 0x00, 0x38, 0xd9, 0xe3, 0xe7, 1517 0x8c, 0xcf, 0x76, 0x83, 0x02, 0x20, 0x13, 0x54, 0x84, 0x9d, 0x73, 0x40, 0xc3, 0x92, 0x66, 0xdc, 1518 0x3e, 0xc9, 0xf1, 0x4c, 0x33, 0x84, 0x2a, 0x76, 0xaf, 0xc6, 0x61, 0x84, 0x5c, 0xae, 0x4b, 0x0d, 1519 0x3c, 0xb0, 0xc8, 0x04, 0x89, 0x71 1520 }; 1521 Crypto_DataBlob signBlob = { 1522 .data = reinterpret_cast<uint8_t *>(signText), 1523 .len = sizeof(signText) 1524 }; 1525 1526 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"ECC256", &keyCtx), CRYPTO_SUCCESS); 1527 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &keyBlob, nullptr, &keyPair), CRYPTO_SUCCESS); 1528 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1529 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"ECC|SHA256", &verify), CRYPTO_SUCCESS); 1530 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1531 ASSERT_TRUE(OH_CryptoVerify_Final(verify, &msgBlob, &signBlob)); 1532 1533 OH_CryptoVerify_Destroy(verify); 1534 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1535 OH_CryptoKeyPair_Destroy(keyPair); 1536 } 1537 1538 /** 1539 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2200 1540 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2200 1541 * @tc.desc algorithm is Verify 1542 * @tc.size Medium 1543 * @tc.type Func 1544 * @tc.level Level0 1545 */ 1546 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2200, TestSize.Level0) 1547 { 1548 HcfSign *signObj = nullptr; 1549 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1550 OH_CryptoKeyPair *keyPair = nullptr; 1551 int32_t msgLen = 16; 1552 HcfRand *randomObj = nullptr; 1553 HcfBlob msgBlob = {0}; 1554 HcfBlob signData = {.data = nullptr, .len = 0}; 1555 OH_CryptoVerify *verify = nullptr; 1556 uint8_t mdText[] = "MD5"; 1557 Crypto_DataBlob mdBlob = { 1558 .data = reinterpret_cast<uint8_t *>(mdText), 1559 .len = sizeof(mdText) 1560 }; 1561 uint8_t MFGText[] = "MGF1"; 1562 Crypto_DataBlob mfgBlob = { 1563 .data = reinterpret_cast<uint8_t *>(MFGText), 1564 .len = sizeof(MFGText) 1565 }; 1566 uint8_t MFG1MdText[] = "SHA1"; 1567 Crypto_DataBlob mgf1MddBlob = { 1568 .data = reinterpret_cast<uint8_t *>(MFG1MdText), 1569 .len = sizeof(MFG1MdText) 1570 }; 1571 int32_t saltText1 = 32; 1572 Crypto_DataBlob saltBlob1 = { 1573 .data = (uint8_t *)&saltText1, 1574 .len = sizeof(int32_t) 1575 }; 1576 int32_t saltText2 = -1; 1577 Crypto_DataBlob saltBlob2 = { 1578 .data = (uint8_t *)&saltText2, 1579 .len = sizeof(int32_t) 1580 }; 1581 1582 Crypto_DataBlob outMdBlob = {.data = nullptr, .len = 0}; 1583 Crypto_DataBlob outMfgBlob = {.data = nullptr, .len = 0}; 1584 Crypto_DataBlob outMfg1MdBlob = {.data = nullptr, .len = 0}; 1585 Crypto_DataBlob outSaltBlob = {.data = nullptr, .len = 0}; 1586 Crypto_DataBlob outTrailerFieldBlob = {.data = nullptr, .len = 0}; 1587 1588 HcfRandCreate(&randomObj); 1589 ASSERT_TRUE(randomObj != nullptr); 1590 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1591 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA512", &keyCtx), CRYPTO_SUCCESS); 1592 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1593 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1594 ASSERT_EQ(HcfSignCreate((const char *)"RSA512|PSS|MD5|MGF1_SHA1", &signObj), HCF_SUCCESS); 1595 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1596 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1597 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PSS|SHA1|MGF1_MD5", &verify), CRYPTO_SUCCESS); 1598 ASSERT_EQ(OH_CryptoVerify_SetParam(verify, CRYPTO_PSS_MD_NAME_STR, &mdBlob), CRYPTO_NOT_SUPPORTED); 1599 ASSERT_EQ(OH_CryptoVerify_SetParam(verify, CRYPTO_PSS_MGF_NAME_STR, &mfgBlob), CRYPTO_NOT_SUPPORTED); 1600 ASSERT_EQ(OH_CryptoVerify_SetParam(verify, CRYPTO_PSS_MGF1_NAME_STR, &mgf1MddBlob), CRYPTO_NOT_SUPPORTED); 1601 ASSERT_EQ(OH_CryptoVerify_SetParam(verify, CRYPTO_PSS_SALT_LEN_INT, &saltBlob1), CRYPTO_SUCCESS); 1602 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1603 ASSERT_EQ(OH_CryptoVerify_SetParam(verify, CRYPTO_PSS_SALT_LEN_INT, &saltBlob2), CRYPTO_SUCCESS); 1604 EXPECT_EQ(OH_CryptoVerify_GetParam(verify, CRYPTO_PSS_MD_NAME_STR, &outMdBlob), CRYPTO_SUCCESS); 1605 EXPECT_EQ(OH_CryptoVerify_GetParam(verify, CRYPTO_PSS_MGF_NAME_STR, &outMfgBlob), CRYPTO_SUCCESS); 1606 EXPECT_EQ(OH_CryptoVerify_GetParam(verify, CRYPTO_PSS_MGF1_NAME_STR, &outMfg1MdBlob), CRYPTO_SUCCESS); 1607 EXPECT_EQ(OH_CryptoVerify_GetParam(verify, CRYPTO_PSS_TRAILER_FIELD_INT, &outTrailerFieldBlob), CRYPTO_SUCCESS); 1608 EXPECT_EQ(OH_CryptoVerify_GetParam(verify, CRYPTO_PSS_SALT_LEN_INT, &outSaltBlob), CRYPTO_SUCCESS); 1609 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1610 1611 HcfObjDestroy(signObj); 1612 OH_CryptoVerify_Destroy(verify); 1613 HcfObjDestroy(randomObj); 1614 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1615 OH_CryptoKeyPair_Destroy(keyPair); 1616 HcfBlobDataClearAndFree(&msgBlob); 1617 HcfBlobDataClearAndFree(&signData); 1618 OH_Crypto_FreeDataBlob(&outMdBlob); 1619 OH_Crypto_FreeDataBlob(&outMfgBlob); 1620 OH_Crypto_FreeDataBlob(&outMfg1MdBlob); 1621 OH_Crypto_FreeDataBlob(&outTrailerFieldBlob); 1622 OH_Crypto_FreeDataBlob(&outSaltBlob); 1623 } 1624 1625 /** 1626 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2300 1627 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2300 1628 * @tc.desc algorithm is Verify 1629 * @tc.size Medium 1630 * @tc.type Func 1631 * @tc.level Level0 1632 */ 1633 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2300, TestSize.Level0) 1634 { 1635 HcfSign *signObj = nullptr; 1636 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1637 OH_CryptoKeyPair *keyPair = nullptr; 1638 int32_t msgLen = 16; 1639 HcfRand *randomObj = nullptr; 1640 HcfBlob msgBlob = {0}; 1641 HcfBlob signData = {.data = nullptr, .len = 0}; 1642 OH_CryptoVerify *verify = nullptr; 1643 1644 HcfRandCreate(&randomObj); 1645 ASSERT_TRUE(randomObj != nullptr); 1646 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1647 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA2048", &keyCtx), CRYPTO_SUCCESS); 1648 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1649 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1650 Crypto_DataBlob retBlob = { .data = nullptr, .len = 0 }; 1651 ASSERT_EQ(OH_CryptoPubKey_Encode(pubKey, CRYPTO_PEM, "PKCS1", &retBlob), CRYPTO_SUCCESS); 1652 ASSERT_EQ(HcfSignCreate((const char *)"RSA2048|PSS|SHA256|MGF1_SHA256", &signObj), HCF_SUCCESS); 1653 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1654 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1655 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA2048|PSS|SHA256|MGF1_SHA256", &verify), CRYPTO_SUCCESS); 1656 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1657 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1658 1659 HcfObjDestroy(signObj); 1660 OH_CryptoVerify_Destroy(verify); 1661 HcfObjDestroy(randomObj); 1662 OH_Crypto_FreeDataBlob(&retBlob); 1663 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1664 OH_CryptoKeyPair_Destroy(keyPair); 1665 HcfBlobDataClearAndFree(&msgBlob); 1666 HcfBlobDataClearAndFree(&signData); 1667 } 1668 1669 /** 1670 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2400 1671 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2400 1672 * @tc.desc algorithm is Verify 1673 * @tc.size Medium 1674 * @tc.type Func 1675 * @tc.level Level0 1676 */ 1677 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2400, TestSize.Level0) 1678 { 1679 HcfSign *signObj = nullptr; 1680 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1681 OH_CryptoKeyPair *keyPair = nullptr; 1682 HcfBlob signData = {.data = nullptr, .len = 0}; 1683 OH_CryptoVerify *verify = nullptr; 1684 int32_t msgLen = 32; 1685 HcfRand *randomObj = nullptr; 1686 HcfBlob msgBlob = {0}; 1687 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1688 1689 HcfRandCreate(&randomObj); 1690 ASSERT_TRUE(randomObj != nullptr); 1691 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1692 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 1693 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1694 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1695 Crypto_DataBlob retBlob = { .data = nullptr, .len = 0 }; 1696 ASSERT_EQ(OH_CryptoPubKey_Encode(pubKey, CRYPTO_PEM, "PKCS1", &retBlob), CRYPTO_SUCCESS); 1697 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA256|OnlySign", &signObj), HCF_SUCCESS); 1698 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1699 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1700 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA256|Recover", &verify), CRYPTO_SUCCESS); 1701 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1702 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_SUCCESS); 1703 1704 OH_CryptoVerify_Destroy(verify); 1705 OH_Crypto_FreeDataBlob(&rawSignData); 1706 HcfObjDestroy(signObj); 1707 OH_Crypto_FreeDataBlob(&retBlob); 1708 OH_Crypto_FreeDataBlob((Crypto_DataBlob *)&msgBlob); 1709 HcfObjDestroy(randomObj); 1710 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1711 OH_CryptoKeyPair_Destroy(keyPair); 1712 HcfBlobDataClearAndFree(&signData); 1713 } 1714 1715 /** 1716 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2500 1717 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2500 1718 * @tc.desc algorithm is Verify 1719 * @tc.size Medium 1720 * @tc.type Func 1721 * @tc.level Level0 1722 */ 1723 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2500, TestSize.Level0) 1724 { 1725 HcfSign *signObj = nullptr; 1726 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1727 OH_CryptoKeyPair *keyPair = nullptr; 1728 int32_t msgLen = 32; 1729 HcfRand *randomObj = nullptr; 1730 HcfBlob msgBlob = {0}; 1731 HcfBlob signData = {.data = nullptr, .len = 0}; 1732 OH_CryptoVerify *verify = nullptr; 1733 1734 HcfRandCreate(&randomObj); 1735 ASSERT_TRUE(randomObj != nullptr); 1736 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1737 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"SM2_256", &keyCtx), CRYPTO_SUCCESS); 1738 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1739 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1740 Crypto_DataBlob retBlob = { .data = nullptr, .len = 0 }; 1741 ASSERT_EQ(OH_CryptoPubKey_Encode(pubKey, CRYPTO_DER, nullptr, &retBlob), CRYPTO_SUCCESS); 1742 ASSERT_EQ(HcfSignCreate((const char *)"SM2_256|SM3", &signObj), HCF_SUCCESS); 1743 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1744 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1745 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"SM2_256|SM3", &verify), CRYPTO_SUCCESS); 1746 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1747 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1748 1749 HcfObjDestroy(signObj); 1750 OH_CryptoVerify_Destroy(verify); 1751 HcfObjDestroy(randomObj); 1752 OH_Crypto_FreeDataBlob(&retBlob); 1753 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1754 OH_CryptoKeyPair_Destroy(keyPair); 1755 HcfBlobDataClearAndFree(&msgBlob); 1756 HcfBlobDataClearAndFree(&signData); 1757 } 1758 1759 /** 1760 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2600 1761 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2600 1762 * @tc.desc algorithm is Verify 1763 * @tc.size Medium 1764 * @tc.type Func 1765 * @tc.level Level0 1766 */ 1767 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2600, TestSize.Level0) 1768 { 1769 HcfSign *signObj = nullptr; 1770 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1771 OH_CryptoKeyPair *keyPair = nullptr; 1772 int32_t msgLen = 64; 1773 HcfRand *randomObj = nullptr; 1774 HcfBlob msgBlob = {0}; 1775 HcfBlob signData = {.data = nullptr, .len = 0}; 1776 OH_CryptoVerify *verify = nullptr; 1777 int blockSize = 20; 1778 int cnt_s = 64 / blockSize; 1779 int rem_s = 64 % blockSize; 1780 1781 HcfRandCreate(&randomObj); 1782 ASSERT_TRUE(randomObj != nullptr); 1783 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1784 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 1785 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1786 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1787 Crypto_DataBlob retBlob = { .data = nullptr, .len = 0 }; 1788 ASSERT_EQ(OH_CryptoPubKey_Encode(pubKey, CRYPTO_PEM, "PKCS1", &retBlob), CRYPTO_SUCCESS); 1789 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA256", &signObj), HCF_SUCCESS); 1790 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1791 1792 for (int i = 0; i < cnt_s; i++) { 1793 msgBlob.len = blockSize; 1794 ASSERT_EQ(signObj->update(signObj, &msgBlob), HCF_SUCCESS); 1795 msgBlob.data += blockSize; 1796 } 1797 if (rem_s > 0) { 1798 msgBlob.len = rem_s; 1799 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1800 } 1801 msgBlob.data -= 64 - rem_s; 1802 msgBlob.len = 64; 1803 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA256", &verify), CRYPTO_SUCCESS); 1804 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1805 for (int i = 0; i < cnt_s; i++) { 1806 msgBlob.len = blockSize; 1807 ASSERT_EQ(OH_CryptoVerify_Update(verify, (Crypto_DataBlob *)&msgBlob), CRYPTO_SUCCESS); 1808 msgBlob.data += blockSize; 1809 } 1810 if (rem_s > 0) { 1811 msgBlob.len = rem_s; 1812 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1813 } 1814 1815 msgBlob.data -= 64 - rem_s; 1816 msgBlob.len = 64; 1817 HcfObjDestroy(signObj); 1818 OH_CryptoVerify_Destroy(verify); 1819 HcfObjDestroy(randomObj); 1820 OH_Crypto_FreeDataBlob(&retBlob); 1821 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1822 OH_CryptoKeyPair_Destroy(keyPair); 1823 HcfBlobDataClearAndFree(&msgBlob); 1824 HcfBlobDataClearAndFree(&signData); 1825 } 1826 1827 } // namespace Unittest::CryptoFrameworkVerifyNapiTest