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_rsa8192_pubKey, .len = sizeof(g_rsa8192_pubKey) }; 605 Crypto_DataBlob priKeyBlob = { .data = g_rsa8192_priKey, .len = sizeof(g_rsa8192_priKey) }; 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_rsa4096_pubKey, .len = sizeof(g_rsa4096_pubKey) }; 609 Crypto_DataBlob priKeyBlob = { .data = g_rsa4096_priKey, .len = sizeof(g_rsa4096_priKey) }; 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_rsa3072_pubKey, .len = sizeof(g_rsa3072_pubKey) }; 613 Crypto_DataBlob priKeyBlob = { .data = g_rsa3072_priKey, .len = sizeof(g_rsa3072_priKey) }; 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_CryptoAsymKeyGenerator_Destroy(keyCtx); 635 OH_CryptoKeyPair_Destroy(keyPair); 636 HcfBlobDataClearAndFree(&msgBlob); 637 HcfBlobDataClearAndFree(&signData); 638 } 639 640 /** 641 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0200 642 * @tc.name OHCryptoFrameworkVerifyNapiTest/VERIFY_PSS_TEST.SUB_Security_CryptoFramework_NAPI_Verify_Test_0200/x 643 * @tc.desc algorithm is Verify 644 * @tc.size Medium 645 * @tc.type Func 646 * @tc.level Level0 647 */ 648 HWTEST_P(VERIFY_PSS_TEST, SUB_Security_CryptoFramework_NAPI_Verify_Test_0200, TestSize.Level0) 649 { 650 VerifySpec verifyData = GetParam(); 651 HcfSign *signObj = nullptr; 652 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 653 OH_CryptoKeyPair *keyPair = nullptr; 654 int32_t msgLen = verifyData.msgLen; 655 HcfRand *randomObj = nullptr; 656 HcfBlob msgBlob = {0}; 657 HcfBlob signData = {.data = nullptr, .len = 0}; 658 OH_CryptoVerify *verify = nullptr; 659 660 HcfRandCreate(&randomObj); 661 ASSERT_TRUE(randomObj != nullptr); 662 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 663 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)verifyData.keyAlgName, &keyCtx), CRYPTO_SUCCESS); 664 if (strcmp((const char *)verifyData.keyAlgName, "RSA8192") == 0) { 665 Crypto_DataBlob pubKeyBlob = { .data = g_rsa8192_pubKey, .len = sizeof(g_rsa8192_pubKey) }; 666 Crypto_DataBlob priKeyBlob = { .data = g_rsa8192_priKey, .len = sizeof(g_rsa8192_priKey) }; 667 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 668 } else if (strcmp((const char *)verifyData.keyAlgName, "RSA4096") == 0) { 669 Crypto_DataBlob pubKeyBlob = { .data = g_rsa4096_pubKey, .len = sizeof(g_rsa4096_pubKey) }; 670 Crypto_DataBlob priKeyBlob = { .data = g_rsa4096_priKey, .len = sizeof(g_rsa4096_priKey) }; 671 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 672 } else if (strcmp((const char *)verifyData.keyAlgName, "RSA3072") == 0) { 673 Crypto_DataBlob pubKeyBlob = { .data = g_rsa3072_pubKey, .len = sizeof(g_rsa3072_pubKey) }; 674 Crypto_DataBlob priKeyBlob = { .data = g_rsa3072_priKey, .len = sizeof(g_rsa3072_priKey) }; 675 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 676 } else { 677 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 678 } 679 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 680 ASSERT_EQ(HcfSignCreate((const char *)verifyData.signAlgName, &signObj), HCF_SUCCESS); 681 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 682 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 683 ASSERT_EQ(OH_CryptoVerify_Create((const char *)verifyData.verifyAlgName, &verify), CRYPTO_SUCCESS); 684 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 685 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 686 const char * getVerifyAlgName = OH_CryptoVerify_GetAlgoName(verify); 687 ASSERT_TRUE(memcmp(getVerifyAlgName, (const char *)verifyData.verifyAlgName, strlen((const char *)verifyData.verifyAlgName)) == 0); 688 689 HcfObjDestroy(signObj); 690 OH_CryptoVerify_Destroy(verify); 691 HcfObjDestroy(randomObj); 692 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 693 OH_CryptoKeyPair_Destroy(keyPair); 694 HcfBlobDataClearAndFree(&msgBlob); 695 HcfBlobDataClearAndFree(&signData); 696 } 697 698 /** 699 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0301 700 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_0301 701 * @tc.desc algorithm is Verify 702 * @tc.size Medium 703 * @tc.type Func 704 * @tc.level Level0 705 */ 706 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_0301, TestSize.Level0) 707 { 708 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 709 OH_CryptoKeyPair *keyPair = nullptr; 710 Crypto_DataBlob pubKeyBlob = { .data = g_rsa8192_pubKey, .len = sizeof(g_rsa8192_pubKey) }; 711 Crypto_DataBlob priKeyBlob = { .data = g_rsa8192_priKey, .len = sizeof(g_rsa8192_priKey) }; 712 713 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA8192", &keyCtx), CRYPTO_SUCCESS); 714 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 715 716 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 717 OH_CryptoKeyPair_Destroy(keyPair); 718 } 719 720 /** 721 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0300 722 * @tc.name OHCryptoFrameworkVerifyNapiTest/VERIFY_ECC_TEST.SUB_Security_CryptoFramework_NAPI_Verify_Test_0300/x 723 * @tc.desc algorithm is Verify 724 * @tc.size Medium 725 * @tc.type Func 726 * @tc.level Level0 727 */ 728 HWTEST_P(VERIFY_ECC_TEST, SUB_Security_CryptoFramework_NAPI_Verify_Test_0300, TestSize.Level0) 729 { 730 VerifySpec verifyData = GetParam(); 731 HcfSign *signObj = nullptr; 732 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 733 OH_CryptoKeyPair *keyPair = nullptr; 734 int32_t msgLen = verifyData.msgLen; 735 HcfRand *randomObj = nullptr; 736 HcfBlob msgBlob = {0}; 737 HcfBlob signData = {.data = nullptr, .len = 0}; 738 OH_CryptoVerify *verify = nullptr; 739 740 HcfRandCreate(&randomObj); 741 ASSERT_TRUE(randomObj != nullptr); 742 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 743 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)verifyData.keyAlgName, &keyCtx), CRYPTO_SUCCESS); 744 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 745 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 746 ASSERT_EQ(HcfSignCreate((const char *)verifyData.signAlgName, &signObj), HCF_SUCCESS); 747 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 748 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 749 ASSERT_EQ(OH_CryptoVerify_Create((const char *)verifyData.verifyAlgName, &verify), CRYPTO_SUCCESS); 750 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 751 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 752 const char * getVerifyAlgName = OH_CryptoVerify_GetAlgoName(verify); 753 ASSERT_TRUE(memcmp(getVerifyAlgName, (const char *)verifyData.verifyAlgName, strlen((const char *)verifyData.verifyAlgName)) == 0); 754 755 HcfObjDestroy(signObj); 756 OH_CryptoVerify_Destroy(verify); 757 HcfObjDestroy(randomObj); 758 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 759 OH_CryptoKeyPair_Destroy(keyPair); 760 HcfBlobDataClearAndFree(&msgBlob); 761 HcfBlobDataClearAndFree(&signData); 762 } 763 764 /** 765 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0400 766 * @tc.name OHCryptoFrameworkVerifyNapiTest/VERIFY_DSA_TEST.SUB_Security_CryptoFramework_NAPI_Verify_Test_0400/x 767 * @tc.desc algorithm is Verify 768 * @tc.size Medium 769 * @tc.type Func 770 * @tc.level Level0 771 */ 772 HWTEST_P(VERIFY_DSA_TEST, SUB_Security_CryptoFramework_NAPI_Verify_Test_0400, TestSize.Level0) 773 { 774 VerifySpec verifyData = GetParam(); 775 HcfSign *signObj = nullptr; 776 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 777 OH_CryptoKeyPair *keyPair = nullptr; 778 int32_t msgLen = verifyData.msgLen; 779 HcfRand *randomObj = nullptr; 780 HcfBlob msgBlob = {0}; 781 HcfBlob signData = {.data = nullptr, .len = 0}; 782 OH_CryptoVerify *verify = nullptr; 783 784 HcfRandCreate(&randomObj); 785 ASSERT_TRUE(randomObj != nullptr); 786 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 787 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)verifyData.keyAlgName, &keyCtx), CRYPTO_SUCCESS); 788 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 789 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 790 ASSERT_EQ(HcfSignCreate((const char *)verifyData.signAlgName, &signObj), HCF_SUCCESS); 791 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 792 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 793 ASSERT_EQ(OH_CryptoVerify_Create((const char *)verifyData.verifyAlgName, &verify), CRYPTO_SUCCESS); 794 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 795 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 796 const char * getVerifyAlgName = OH_CryptoVerify_GetAlgoName(verify); 797 ASSERT_TRUE(memcmp(getVerifyAlgName, (const char *)verifyData.verifyAlgName, strlen((const char *)verifyData.verifyAlgName)) == 0); 798 799 HcfObjDestroy(signObj); 800 OH_CryptoVerify_Destroy(verify); 801 HcfObjDestroy(randomObj); 802 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 803 OH_CryptoKeyPair_Destroy(keyPair); 804 HcfBlobDataClearAndFree(&msgBlob); 805 HcfBlobDataClearAndFree(&signData); 806 } 807 808 /** 809 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0500 810 * @tc.name OHCryptoFrameworkVerifyNapiTest/VERIFY_RSA_ONLY_SIGN_TEST.SUB_Security_CryptoFramework_NAPI_Verify_Test_0500/x 811 * @tc.desc algorithm is Verify 812 * @tc.size Medium 813 * @tc.type Func 814 * @tc.level Level0 815 */ 816 HWTEST_P(VERIFY_RSA_ONLY_SIGN_TEST, SUB_Security_CryptoFramework_NAPI_Verify_Test_0500, TestSize.Level0) 817 { 818 VerifySpec verifyData = GetParam(); 819 HcfSign *signObj = nullptr; 820 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 821 OH_CryptoKeyPair *keyPair = nullptr; 822 int32_t msgLen = verifyData.msgLen; 823 HcfRand *randomObj = nullptr; 824 HcfBlob msgBlob = {0}; 825 HcfBlob signData = {.data = nullptr, .len = 0}; 826 OH_CryptoVerify *verify = nullptr; 827 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 828 829 HcfRandCreate(&randomObj); 830 ASSERT_TRUE(randomObj != nullptr); 831 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 832 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)verifyData.keyAlgName, &keyCtx), CRYPTO_SUCCESS); 833 msgBlob.data[0] = 0; 834 if (strcmp((const char *)verifyData.keyAlgName, "RSA8192") == 0) { 835 Crypto_DataBlob pubKeyBlob = { .data = g_rsa8192_pubKey, .len = sizeof(g_rsa8192_pubKey) }; 836 Crypto_DataBlob priKeyBlob = { .data = g_rsa8192_priKey, .len = sizeof(g_rsa8192_priKey) }; 837 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 838 } else if (strcmp((const char *)verifyData.keyAlgName, "RSA4096") == 0) { 839 Crypto_DataBlob pubKeyBlob = { .data = g_rsa4096_pubKey, .len = sizeof(g_rsa4096_pubKey) }; 840 Crypto_DataBlob priKeyBlob = { .data = g_rsa4096_priKey, .len = sizeof(g_rsa4096_priKey) }; 841 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 842 } else if (strcmp((const char *)verifyData.keyAlgName, "RSA3072") == 0) { 843 Crypto_DataBlob pubKeyBlob = { .data = g_rsa3072_pubKey, .len = sizeof(g_rsa3072_pubKey) }; 844 Crypto_DataBlob priKeyBlob = { .data = g_rsa3072_priKey, .len = sizeof(g_rsa3072_priKey) }; 845 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &pubKeyBlob, &priKeyBlob, &keyPair), CRYPTO_SUCCESS); 846 } else { 847 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 848 } 849 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 850 ASSERT_EQ(HcfSignCreate((const char *)verifyData.signAlgName, &signObj), HCF_SUCCESS); 851 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 852 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 853 ASSERT_EQ(OH_CryptoVerify_Create((const char *)verifyData.verifyAlgName, &verify), CRYPTO_SUCCESS); 854 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 855 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_SUCCESS); 856 const char * getVerifyAlgName = OH_CryptoVerify_GetAlgoName(verify); 857 ASSERT_TRUE(memcmp(getVerifyAlgName, (const char *)verifyData.verifyAlgName, strlen((const char *)verifyData.verifyAlgName)) == 0); 858 ASSERT_TRUE(memcmp(msgBlob.data, rawSignData.data, msgBlob.len) == 0); 859 ASSERT_EQ(msgBlob.len, rawSignData.len); 860 861 862 HcfObjDestroy(signObj); 863 HcfObjDestroy(verify); 864 HcfObjDestroy(randomObj); 865 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 866 OH_CryptoKeyPair_Destroy(keyPair); 867 HcfBlobDataClearAndFree(&msgBlob); 868 HcfBlobDataClearAndFree(&signData); 869 OH_Crypto_FreeDataBlob(&rawSignData); 870 } 871 872 /** 873 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0600 874 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_0600 875 * @tc.desc algorithm is Verify 876 * @tc.size Medium 877 * @tc.type Func 878 * @tc.level Level0 879 */ 880 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_0600, TestSize.Level0) 881 { 882 OH_CryptoVerify *verify = nullptr; 883 884 ASSERT_EQ(OH_CryptoVerify_Create(nullptr, &verify), CRYPTO_INVALID_PARAMS); 885 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD10", &verify), CRYPTO_INVALID_PARAMS); 886 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD5", nullptr), CRYPTO_INVALID_PARAMS); 887 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"SM9|SM3", &verify), CRYPTO_INVALID_PARAMS); 888 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS6|MD5", &verify), CRYPTO_INVALID_PARAMS); 889 } 890 891 /** 892 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0700 893 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_0700 894 * @tc.desc algorithm is Verify 895 * @tc.size Medium 896 * @tc.type Func 897 * @tc.level Level0 898 */ 899 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_0700, TestSize.Level0) 900 { 901 OH_CryptoVerify *verify = nullptr; 902 OH_CryptoKeyPair *keyPair = nullptr; 903 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 904 905 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 906 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 907 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 908 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA1", &verify), CRYPTO_SUCCESS); 909 ASSERT_EQ(OH_CryptoVerify_Init(nullptr, pubKey), CRYPTO_INVALID_PARAMS); 910 ASSERT_EQ(OH_CryptoVerify_Init(verify, nullptr), CRYPTO_INVALID_PARAMS); 911 912 OH_CryptoVerify_Destroy(verify); 913 OH_CryptoKeyPair_Destroy(keyPair); 914 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 915 } 916 917 /** 918 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0800 919 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_0800 920 * @tc.desc algorithm is Verify 921 * @tc.size Medium 922 * @tc.type Func 923 * @tc.level Level0 924 */ 925 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_0800, TestSize.Level0) 926 { 927 OH_CryptoVerify *verify = nullptr; 928 OH_CryptoKeyPair *keyPair = nullptr; 929 uint8_t testData[] = "0123456789"; 930 Crypto_DataBlob msgBlob = { 931 .data = reinterpret_cast<uint8_t *>(testData), 932 .len = sizeof(testData) 933 }; 934 Crypto_DataBlob rawBlob = { 935 .data = reinterpret_cast<uint8_t *>(testData), 936 .len = sizeof(testData) 937 }; 938 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 939 940 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx), CRYPTO_SUCCESS); 941 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 942 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 943 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA768|PKCS1|SHA224", &verify), CRYPTO_SUCCESS); 944 ASSERT_EQ(OH_CryptoVerify_Update(verify, &msgBlob), CRYPTO_INVALID_PARAMS); 945 ASSERT_FALSE(OH_CryptoVerify_Final(verify, &msgBlob, &rawBlob)); 946 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 947 ASSERT_EQ(OH_CryptoVerify_Update(nullptr, &msgBlob), CRYPTO_INVALID_PARAMS); 948 ASSERT_EQ(OH_CryptoVerify_Update(verify, nullptr), CRYPTO_INVALID_PARAMS); 949 ASSERT_FALSE(OH_CryptoVerify_Final(nullptr, &msgBlob, &rawBlob)); 950 ASSERT_FALSE(OH_CryptoVerify_Final(verify, nullptr, &rawBlob)); 951 ASSERT_FALSE(OH_CryptoVerify_Final(verify, &msgBlob, nullptr)); 952 ASSERT_FALSE(OH_CryptoVerify_GetAlgoName(nullptr)); 953 954 OH_CryptoVerify_Destroy(verify); 955 OH_CryptoKeyPair_Destroy(keyPair); 956 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 957 } 958 959 /** 960 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_0900 961 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_0900 962 * @tc.desc algorithm is Verify 963 * @tc.size Medium 964 * @tc.type Func 965 * @tc.level Level0 966 */ 967 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_0900, TestSize.Level0) 968 { 969 HcfSign *signObj = nullptr; 970 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 971 OH_CryptoKeyPair *keyPair = nullptr; 972 int32_t msgLen = OH_CRYPTO_SHA1_DIGESTSIZE; 973 HcfRand *randomObj = nullptr; 974 HcfBlob msgBlob = {0}; 975 HcfBlob signData = {.data = nullptr, .len = 0}; 976 OH_CryptoVerify *verify = nullptr; 977 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 978 979 HcfRandCreate(&randomObj); 980 ASSERT_TRUE(randomObj != nullptr); 981 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 982 msgBlob.data[0] = 0; 983 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 984 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 985 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 986 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA1|OnlySign", &signObj), HCF_SUCCESS); 987 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 988 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 989 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA1|Recover", &verify), CRYPTO_SUCCESS); 990 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 991 ASSERT_EQ(OH_CryptoVerify_Recover(nullptr, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_INVALID_PARAMS); 992 ASSERT_EQ(OH_CryptoVerify_Recover(verify, nullptr, &rawSignData), CRYPTO_INVALID_PARAMS); 993 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, nullptr), CRYPTO_INVALID_PARAMS); 994 995 HcfObjDestroy(signObj); 996 OH_CryptoVerify_Destroy(verify); 997 HcfObjDestroy(randomObj); 998 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 999 OH_CryptoKeyPair_Destroy(keyPair); 1000 HcfBlobDataClearAndFree(&msgBlob); 1001 HcfBlobDataClearAndFree(&signData); 1002 OH_Crypto_FreeDataBlob(&rawSignData); 1003 } 1004 1005 /** 1006 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1000 1007 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1000 1008 * @tc.desc algorithm is Verify 1009 * @tc.size Medium 1010 * @tc.type Func 1011 * @tc.level Level0 1012 */ 1013 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1000, TestSize.Level0) 1014 { 1015 OH_CryptoVerify *verify1 = nullptr; 1016 OH_CryptoVerify *verify2 = nullptr; 1017 uint8_t MdName[] = "MD5"; 1018 Crypto_DataBlob inBlob = { 1019 .data = reinterpret_cast<uint8_t *>(MdName), 1020 .len = sizeof(MdName) 1021 }; 1022 OH_CryptoKeyPair *keyPair = nullptr; 1023 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1024 1025 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx), CRYPTO_SUCCESS); 1026 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1027 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1028 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA768|PSS|MD5|MGF1_SHA384", &verify1), CRYPTO_SUCCESS); 1029 ASSERT_EQ(OH_CryptoVerify_SetParam(nullptr, CRYPTO_PSS_MGF_NAME_STR, &inBlob), CRYPTO_INVALID_PARAMS); 1030 ASSERT_EQ(OH_CryptoVerify_SetParam(verify1, CRYPTO_PSS_MGF_NAME_STR, nullptr), CRYPTO_INVALID_PARAMS); 1031 ASSERT_EQ(OH_CryptoVerify_Init(verify1, pubKey), CRYPTO_SUCCESS); 1032 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA256", &verify2), CRYPTO_SUCCESS); 1033 ASSERT_EQ(OH_CryptoVerify_SetParam(verify2, CRYPTO_PSS_MD_NAME_STR, &inBlob), CRYPTO_NOT_SUPPORTED); 1034 ASSERT_EQ(OH_CryptoVerify_SetParam(verify2, CRYPTO_SM2_USER_ID_DATABLOB, &inBlob), CRYPTO_NOT_SUPPORTED); 1035 ASSERT_EQ(OH_CryptoVerify_SetParam(verify1, CRYPTO_PSS_MD_NAME_STR, &inBlob), CRYPTO_NOT_SUPPORTED); 1036 ASSERT_EQ(OH_CryptoVerify_GetParam(nullptr, CRYPTO_PSS_MGF_NAME_STR, &inBlob), CRYPTO_INVALID_PARAMS); 1037 ASSERT_EQ(OH_CryptoVerify_GetParam(verify1, CRYPTO_PSS_MGF_NAME_STR, nullptr), CRYPTO_INVALID_PARAMS); 1038 1039 OH_CryptoVerify_Destroy(verify1); 1040 OH_CryptoVerify_Destroy(verify2); 1041 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1042 OH_CryptoKeyPair_Destroy(keyPair); 1043 } 1044 1045 /** 1046 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1100 1047 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1100 1048 * @tc.desc algorithm is Verify 1049 * @tc.size Medium 1050 * @tc.type Func 1051 * @tc.level Level0 1052 */ 1053 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1100, TestSize.Level0) 1054 { 1055 HcfSign *signObj = nullptr; 1056 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1057 OH_CryptoKeyPair *keyPair = nullptr; 1058 HcfBlob signData = {.data = nullptr, .len = 0}; 1059 OH_CryptoVerify *verify = nullptr; 1060 uint8_t testData[] = "0123456789"; 1061 Crypto_DataBlob msgBlob = { 1062 .data = reinterpret_cast<uint8_t *>(testData), 1063 .len = sizeof(testData) 1064 }; 1065 1066 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA512", &keyCtx), CRYPTO_SUCCESS); 1067 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1068 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1069 ASSERT_EQ(HcfSignCreate((const char *)"RSA512|PKCS1|MD5", &signObj), HCF_SUCCESS); 1070 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1071 ASSERT_EQ(signObj->sign(signObj, (HcfBlob *)&msgBlob, &signData), HCF_SUCCESS); 1072 signData.data[signData.len-1]--; 1073 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD5", &verify), CRYPTO_SUCCESS); 1074 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1075 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1076 signData.data[signData.len-1]++; 1077 msgBlob.data[msgBlob.len-1]--; 1078 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1079 1080 HcfObjDestroy(signObj); 1081 OH_CryptoVerify_Destroy(verify); 1082 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1083 OH_CryptoKeyPair_Destroy(keyPair); 1084 HcfBlobDataClearAndFree(&signData); 1085 } 1086 1087 /** 1088 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1200 1089 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1200 1090 * @tc.desc algorithm is Verify 1091 * @tc.size Medium 1092 * @tc.type Func 1093 * @tc.level Level0 1094 */ 1095 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1200, TestSize.Level0) 1096 { 1097 HcfSign *signObj = nullptr; 1098 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1099 OH_CryptoKeyPair *keyPair = nullptr; 1100 HcfBlob signData = {.data = nullptr, .len = 0}; 1101 OH_CryptoVerify *verify = nullptr; 1102 uint8_t testData[] = "0123456789"; 1103 Crypto_DataBlob msgBlob = { 1104 .data = reinterpret_cast<uint8_t *>(testData), 1105 .len = sizeof(testData) 1106 }; 1107 1108 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx), CRYPTO_SUCCESS); 1109 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1110 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1111 ASSERT_EQ(HcfSignCreate((const char *)"RSA768|PKCS1|SHA1", &signObj), HCF_SUCCESS); 1112 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1113 ASSERT_EQ(signObj->sign(signObj, (HcfBlob *)&msgBlob, &signData), HCF_SUCCESS); 1114 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA1", &verify), CRYPTO_SUCCESS); 1115 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1116 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1117 1118 HcfObjDestroy(signObj); 1119 OH_CryptoVerify_Destroy(verify); 1120 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1121 OH_CryptoKeyPair_Destroy(keyPair); 1122 HcfBlobDataClearAndFree(&signData); 1123 } 1124 1125 /** 1126 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1300 1127 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1300 1128 * @tc.desc algorithm is Verify 1129 * @tc.size Medium 1130 * @tc.type Func 1131 * @tc.level Level0 1132 */ 1133 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1300, TestSize.Level0) 1134 { 1135 HcfSign *signObj = nullptr; 1136 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1137 OH_CryptoKeyPair *keyPair = nullptr; 1138 HcfBlob signData = {.data = nullptr, .len = 0}; 1139 OH_CryptoVerify *verify = nullptr; 1140 uint8_t testData[] = "0123456789"; 1141 Crypto_DataBlob msgBlob = { 1142 .data = reinterpret_cast<uint8_t *>(testData), 1143 .len = sizeof(testData) 1144 }; 1145 1146 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 1147 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1148 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1149 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA224", &signObj), HCF_SUCCESS); 1150 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1151 ASSERT_EQ(signObj->sign(signObj, (HcfBlob *)&msgBlob, &signData), HCF_SUCCESS); 1152 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA256", &verify), CRYPTO_SUCCESS); 1153 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1154 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1155 1156 HcfObjDestroy(signObj); 1157 OH_CryptoVerify_Destroy(verify); 1158 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1159 OH_CryptoKeyPair_Destroy(keyPair); 1160 HcfBlobDataClearAndFree(&signData); 1161 } 1162 1163 /** 1164 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1400 1165 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1400 1166 * @tc.desc algorithm is Verify 1167 * @tc.size Medium 1168 * @tc.type Func 1169 * @tc.level Level0 1170 */ 1171 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1400, TestSize.Level0) 1172 { 1173 HcfSign *signObj = nullptr; 1174 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1175 OH_CryptoKeyPair *keyPair = nullptr; 1176 HcfBlob signData = {.data = nullptr, .len = 0}; 1177 OH_CryptoVerify *verify = nullptr; 1178 int32_t msgLen = OH_CRYPTO_MD5_DIGESTSIZE; 1179 HcfRand *randomObj = nullptr; 1180 HcfBlob msgBlob = {0}; 1181 1182 HcfRandCreate(&randomObj); 1183 ASSERT_TRUE(randomObj != nullptr); 1184 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1185 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA512", &keyCtx), CRYPTO_SUCCESS); 1186 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1187 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1188 ASSERT_EQ(HcfSignCreate((const char *)"RSA512|PKCS1|MD5|OnlySign", &signObj), HCF_SUCCESS); 1189 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1190 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1191 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD5", &verify), CRYPTO_SUCCESS); 1192 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1193 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1194 1195 HcfObjDestroy(signObj); 1196 HcfObjDestroy(randomObj); 1197 OH_CryptoVerify_Destroy(verify); 1198 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1199 OH_CryptoKeyPair_Destroy(keyPair); 1200 HcfBlobDataClearAndFree(&signData); 1201 } 1202 1203 /** 1204 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1500 1205 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1500 1206 * @tc.desc algorithm is Verify 1207 * @tc.size Medium 1208 * @tc.type Func 1209 * @tc.level Level0 1210 */ 1211 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1500, TestSize.Level0) 1212 { 1213 HcfSign *signObj = nullptr; 1214 OH_CryptoAsymKeyGenerator *keyCtx_A = nullptr; 1215 OH_CryptoKeyPair *keyPair_A = nullptr; 1216 OH_CryptoAsymKeyGenerator *keyCtx_B = nullptr; 1217 OH_CryptoKeyPair *keyPair_B = nullptr; 1218 HcfBlob signData = {.data = nullptr, .len = 0}; 1219 OH_CryptoVerify *verify = nullptr; 1220 int32_t msgLen = 16; 1221 HcfRand *randomObj = nullptr; 1222 HcfBlob msgBlob = {0}; 1223 1224 HcfRandCreate(&randomObj); 1225 ASSERT_TRUE(randomObj != nullptr); 1226 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1227 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx_A), CRYPTO_SUCCESS); 1228 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx_A, &keyPair_A), CRYPTO_SUCCESS); 1229 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx_B), CRYPTO_SUCCESS); 1230 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx_B, &keyPair_B), CRYPTO_SUCCESS); 1231 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair_B); 1232 ASSERT_EQ(HcfSignCreate((const char *)"RSA768|PKCS1|SHA256", &signObj), HCF_SUCCESS); 1233 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair_A)->priKey), HCF_SUCCESS); 1234 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1235 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA768|PKCS1|SHA256", &verify), CRYPTO_SUCCESS); 1236 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1237 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1238 1239 HcfObjDestroy(signObj); 1240 HcfObjDestroy(randomObj); 1241 OH_CryptoVerify_Destroy(verify); 1242 OH_CryptoAsymKeyGenerator_Destroy(keyCtx_A); 1243 OH_CryptoKeyPair_Destroy(keyPair_A); 1244 OH_CryptoAsymKeyGenerator_Destroy(keyCtx_B); 1245 OH_CryptoKeyPair_Destroy(keyPair_B); 1246 HcfBlobDataClearAndFree(&signData); 1247 } 1248 1249 /** 1250 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1600 1251 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1600 1252 * @tc.desc algorithm is Verify 1253 * @tc.size Medium 1254 * @tc.type Func 1255 * @tc.level Level0 1256 */ 1257 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1600, TestSize.Level0) 1258 { 1259 HcfSign *signObj = nullptr; 1260 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1261 OH_CryptoKeyPair *keyPair = nullptr; 1262 HcfBlob signData = {.data = nullptr, .len = 0}; 1263 OH_CryptoVerify *verify = nullptr; 1264 int32_t msgLen = OH_CRYPTO_MD5_DIGESTSIZE; 1265 HcfRand *randomObj = nullptr; 1266 HcfBlob msgBlob = {0}; 1267 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1268 1269 HcfRandCreate(&randomObj); 1270 ASSERT_TRUE(randomObj != nullptr); 1271 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1272 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA512", &keyCtx), CRYPTO_SUCCESS); 1273 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1274 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1275 ASSERT_EQ(HcfSignCreate((const char *)"RSA512|PKCS1|MD5|OnlySign", &signObj), HCF_SUCCESS); 1276 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1277 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1278 signData.data[signData.len-1]--; 1279 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD5|Recover", &verify), CRYPTO_SUCCESS); 1280 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1281 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_OPERTION_ERROR); 1282 1283 HcfObjDestroy(signObj); 1284 HcfObjDestroy(randomObj); 1285 OH_CryptoVerify_Destroy(verify); 1286 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1287 OH_CryptoKeyPair_Destroy(keyPair); 1288 HcfBlobDataClearAndFree(&signData); 1289 OH_Crypto_FreeDataBlob(&rawSignData); 1290 } 1291 1292 /** 1293 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1700 1294 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1700 1295 * @tc.desc algorithm is Verify 1296 * @tc.size Medium 1297 * @tc.type Func 1298 * @tc.level Level0 1299 */ 1300 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1700, TestSize.Level0) 1301 { 1302 HcfSign *signObj = nullptr; 1303 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1304 OH_CryptoKeyPair *keyPair = nullptr; 1305 HcfBlob signData = {.data = nullptr, .len = 0}; 1306 OH_CryptoVerify *verify = nullptr; 1307 int32_t msgLen = OH_CRYPTO_SHA1_DIGESTSIZE; 1308 HcfRand *randomObj = nullptr; 1309 HcfBlob msgBlob = {0}; 1310 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1311 1312 HcfRandCreate(&randomObj); 1313 ASSERT_TRUE(randomObj != nullptr); 1314 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1315 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA768", &keyCtx), CRYPTO_SUCCESS); 1316 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1317 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1318 ASSERT_EQ(HcfSignCreate((const char *)"RSA768|PKCS1|SHA1|OnlySign", &signObj), HCF_SUCCESS); 1319 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1320 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1321 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA1|Recover", &verify), CRYPTO_SUCCESS); 1322 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1323 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_SUCCESS); 1324 1325 HcfObjDestroy(signObj); 1326 HcfObjDestroy(randomObj); 1327 OH_CryptoVerify_Destroy(verify); 1328 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1329 OH_CryptoKeyPair_Destroy(keyPair); 1330 HcfBlobDataClearAndFree(&signData); 1331 OH_Crypto_FreeDataBlob(&rawSignData); 1332 } 1333 1334 /** 1335 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1800 1336 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1800 1337 * @tc.desc algorithm is Verify 1338 * @tc.size Medium 1339 * @tc.type Func 1340 * @tc.level Level0 1341 */ 1342 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1800, TestSize.Level0) 1343 { 1344 HcfSign *signObj = nullptr; 1345 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1346 OH_CryptoKeyPair *keyPair = nullptr; 1347 HcfBlob signData = {.data = nullptr, .len = 0}; 1348 OH_CryptoVerify *verify = nullptr; 1349 int32_t msgLen = OH_CRYPTO_SHA224_DIGESTSIZE; 1350 HcfRand *randomObj = nullptr; 1351 HcfBlob msgBlob = {0}; 1352 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1353 1354 HcfRandCreate(&randomObj); 1355 ASSERT_TRUE(randomObj != nullptr); 1356 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1357 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 1358 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1359 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1360 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA224|OnlySign", &signObj), HCF_SUCCESS); 1361 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1362 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1363 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA256|Recover", &verify), CRYPTO_SUCCESS); 1364 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1365 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_OPERTION_ERROR); 1366 1367 HcfObjDestroy(signObj); 1368 HcfObjDestroy(randomObj); 1369 OH_CryptoVerify_Destroy(verify); 1370 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1371 OH_CryptoKeyPair_Destroy(keyPair); 1372 HcfBlobDataClearAndFree(&signData); 1373 OH_Crypto_FreeDataBlob(&rawSignData); 1374 } 1375 1376 /** 1377 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_1900 1378 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_1900 1379 * @tc.desc algorithm is Verify 1380 * @tc.size Medium 1381 * @tc.type Func 1382 * @tc.level Level0 1383 */ 1384 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_1900, TestSize.Level0) 1385 { 1386 HcfSign *signObj = nullptr; 1387 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1388 OH_CryptoKeyPair *keyPair = nullptr; 1389 HcfBlob signData = {.data = nullptr, .len = 0}; 1390 OH_CryptoVerify *verify = nullptr; 1391 int32_t msgLen = 64; 1392 HcfRand *randomObj = nullptr; 1393 HcfBlob msgBlob = {0}; 1394 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1395 OH_CryptoDigest *ctx = nullptr; 1396 Crypto_DataBlob out = {.data = nullptr, .len = 0}; 1397 1398 HcfRandCreate(&randomObj); 1399 ASSERT_TRUE(randomObj != nullptr); 1400 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1401 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA512", &keyCtx), CRYPTO_SUCCESS); 1402 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1403 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1404 ASSERT_EQ(HcfSignCreate((const char *)"RSA512|PKCS1|MD5", &signObj), HCF_SUCCESS); 1405 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1406 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1407 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PKCS1|MD5|Recover", &verify), CRYPTO_SUCCESS); 1408 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1409 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_SUCCESS); 1410 ASSERT_EQ(rawSignData.len, OH_CRYPTO_MD5_DIGESTSIZE); 1411 ASSERT_EQ(OH_CryptoDigest_Create((const char *)"MD5", &ctx), CRYPTO_SUCCESS); 1412 ASSERT_EQ(OH_CryptoDigest_Update(ctx, (Crypto_DataBlob *)&msgBlob), CRYPTO_SUCCESS); 1413 ASSERT_EQ(OH_CryptoDigest_Final(ctx, &out), CRYPTO_SUCCESS); 1414 ASSERT_TRUE(memcmp(out.data, rawSignData.data, out.len) == 0); 1415 1416 OH_DigestCrypto_Destroy(ctx); 1417 HcfObjDestroy(signObj); 1418 HcfObjDestroy(randomObj); 1419 OH_CryptoVerify_Destroy(verify); 1420 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1421 OH_CryptoKeyPair_Destroy(keyPair); 1422 HcfBlobDataClearAndFree(&signData); 1423 OH_Crypto_FreeDataBlob(&rawSignData); 1424 OH_Crypto_FreeDataBlob(&out); 1425 } 1426 1427 /** 1428 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2000 1429 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2000 1430 * @tc.desc algorithm is Verify 1431 * @tc.size Medium 1432 * @tc.type Func 1433 * @tc.level Level0 1434 */ 1435 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2000, TestSize.Level0) 1436 { 1437 HcfSign *signObj = nullptr; 1438 OH_CryptoAsymKeyGenerator *keyCtx_A = nullptr; 1439 OH_CryptoKeyPair *keyPair_A = nullptr; 1440 OH_CryptoAsymKeyGenerator *keyCtx_B = nullptr; 1441 OH_CryptoKeyPair *keyPair_B = nullptr; 1442 HcfBlob signData = {.data = nullptr, .len = 0}; 1443 OH_CryptoVerify *verify = nullptr; 1444 int32_t msgLen = 20; 1445 HcfRand *randomObj = nullptr; 1446 HcfBlob msgBlob = {0}; 1447 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1448 1449 HcfRandCreate(&randomObj); 1450 ASSERT_TRUE(randomObj != nullptr); 1451 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1452 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx_A), CRYPTO_SUCCESS); 1453 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx_A, &keyPair_A), CRYPTO_SUCCESS); 1454 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx_B), CRYPTO_SUCCESS); 1455 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx_B, &keyPair_B), CRYPTO_SUCCESS); 1456 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair_B); 1457 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA1|OnlySign", &signObj), HCF_SUCCESS); 1458 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair_A)->priKey), HCF_SUCCESS); 1459 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1460 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA1|Recover", &verify), CRYPTO_SUCCESS); 1461 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1462 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_OPERTION_ERROR); 1463 1464 HcfObjDestroy(signObj); 1465 HcfObjDestroy(randomObj); 1466 OH_CryptoVerify_Destroy(verify); 1467 OH_CryptoAsymKeyGenerator_Destroy(keyCtx_A); 1468 OH_CryptoKeyPair_Destroy(keyPair_A); 1469 OH_CryptoAsymKeyGenerator_Destroy(keyCtx_B); 1470 OH_CryptoKeyPair_Destroy(keyPair_B); 1471 HcfBlobDataClearAndFree(&signData); 1472 OH_Crypto_FreeDataBlob(&rawSignData); 1473 } 1474 1475 /** 1476 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2100 1477 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2100 1478 * @tc.desc algorithm is Verify 1479 * @tc.size Medium 1480 * @tc.type Func 1481 * @tc.level Level0 1482 */ 1483 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2100, TestSize.Level0) 1484 { 1485 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1486 OH_CryptoKeyPair *keyPair = nullptr; 1487 OH_CryptoVerify *verify = nullptr; 1488 1489 uint8_t plainText[] = { 1490 0xe4, 0x2b, 0xcc, 0x08, 0x11, 0x79, 0x16, 0x1b, 0x35, 0x7f, 0xb3, 0xaf, 0x40, 0x3b, 0x3f, 0x7c 1491 }; 1492 Crypto_DataBlob msgBlob = { 1493 .data = reinterpret_cast<uint8_t *>(plainText), 1494 .len = sizeof(plainText) 1495 }; 1496 uint8_t pubKeyText[] = { 1497 0x30, 0x39, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 1498 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x22, 0x00, 0x03, 0x4d, 0xe4, 0xbb, 0x11, 0x10, 1499 0x1a, 0xd2, 0x05, 0x74, 0xf1, 0x0b, 0xb4, 0x75, 0x57, 0xf4, 0x3e, 0x55, 0x14, 0x17, 0x05, 0x4a, 1500 0xb2, 0xfb, 0x8c, 0x84, 0x64, 0x38, 0x02, 0xa0, 0x2a, 0xa6, 0xf0 1501 }; 1502 Crypto_DataBlob keyBlob = { 1503 .data = reinterpret_cast<uint8_t *>(pubKeyText), 1504 .len = sizeof(pubKeyText) 1505 }; 1506 uint8_t signText[] = { 1507 0x30, 0x44, 0x02, 0x20, 0x21, 0x89, 0x99, 0xb1, 0x56, 0x4e, 0x3a, 0x2c, 0x16, 0x08, 0xb5, 0x8a, 1508 0x06, 0x6f, 0x67, 0x47, 0x1b, 0x04, 0x18, 0x7d, 0x53, 0x2d, 0xba, 0x00, 0x38, 0xd9, 0xe3, 0xe7, 1509 0x8c, 0xcf, 0x76, 0x83, 0x02, 0x20, 0x13, 0x54, 0x84, 0x9d, 0x73, 0x40, 0xc3, 0x92, 0x66, 0xdc, 1510 0x3e, 0xc9, 0xf1, 0x4c, 0x33, 0x84, 0x2a, 0x76, 0xaf, 0xc6, 0x61, 0x84, 0x5c, 0xae, 0x4b, 0x0d, 1511 0x3c, 0xb0, 0xc8, 0x04, 0x89, 0x71 1512 }; 1513 Crypto_DataBlob signBlob = { 1514 .data = reinterpret_cast<uint8_t *>(signText), 1515 .len = sizeof(signText) 1516 }; 1517 1518 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"ECC256", &keyCtx), CRYPTO_SUCCESS); 1519 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Convert(keyCtx, CRYPTO_DER, &keyBlob, nullptr, &keyPair), CRYPTO_SUCCESS); 1520 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1521 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"ECC|SHA256", &verify), CRYPTO_SUCCESS); 1522 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1523 ASSERT_TRUE(OH_CryptoVerify_Final(verify, &msgBlob, &signBlob)); 1524 1525 OH_CryptoVerify_Destroy(verify); 1526 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1527 OH_CryptoKeyPair_Destroy(keyPair); 1528 } 1529 1530 /** 1531 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2200 1532 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2200 1533 * @tc.desc algorithm is Verify 1534 * @tc.size Medium 1535 * @tc.type Func 1536 * @tc.level Level0 1537 */ 1538 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2200, TestSize.Level0) 1539 { 1540 HcfSign *signObj = nullptr; 1541 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1542 OH_CryptoKeyPair *keyPair = nullptr; 1543 int32_t msgLen = 16; 1544 HcfRand *randomObj = nullptr; 1545 HcfBlob msgBlob = {0}; 1546 HcfBlob signData = {.data = nullptr, .len = 0}; 1547 OH_CryptoVerify *verify = nullptr; 1548 uint8_t mdText[] = "MD5"; 1549 Crypto_DataBlob mdBlob = { 1550 .data = reinterpret_cast<uint8_t *>(mdText), 1551 .len = sizeof(mdText) 1552 }; 1553 uint8_t MFGText[] = "MGF1"; 1554 Crypto_DataBlob mfgBlob = { 1555 .data = reinterpret_cast<uint8_t *>(MFGText), 1556 .len = sizeof(MFGText) 1557 }; 1558 uint8_t MFG1MdText[] = "SHA1"; 1559 Crypto_DataBlob mgf1MddBlob = { 1560 .data = reinterpret_cast<uint8_t *>(MFG1MdText), 1561 .len = sizeof(MFG1MdText) 1562 }; 1563 int32_t saltText1 = 32; 1564 Crypto_DataBlob saltBlob1 = { 1565 .data = (uint8_t *)&saltText1, 1566 .len = sizeof(int32_t) 1567 }; 1568 int32_t saltText2 = -1; 1569 Crypto_DataBlob saltBlob2 = { 1570 .data = (uint8_t *)&saltText2, 1571 .len = sizeof(int32_t) 1572 }; 1573 1574 Crypto_DataBlob outMdBlob = {.data = nullptr, .len = 0}; 1575 Crypto_DataBlob outMfgBlob = {.data = nullptr, .len = 0}; 1576 Crypto_DataBlob outMfg1MdBlob = {.data = nullptr, .len = 0}; 1577 Crypto_DataBlob outSaltBlob = {.data = nullptr, .len = 0}; 1578 Crypto_DataBlob outTrailerFieldBlob = {.data = nullptr, .len = 0}; 1579 1580 HcfRandCreate(&randomObj); 1581 ASSERT_TRUE(randomObj != nullptr); 1582 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1583 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA512", &keyCtx), CRYPTO_SUCCESS); 1584 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1585 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1586 ASSERT_EQ(HcfSignCreate((const char *)"RSA512|PSS|MD5|MGF1_SHA1", &signObj), HCF_SUCCESS); 1587 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1588 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1589 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA512|PSS|SHA1|MGF1_MD5", &verify), CRYPTO_SUCCESS); 1590 ASSERT_EQ(OH_CryptoVerify_SetParam(verify, CRYPTO_PSS_MD_NAME_STR, &mdBlob), CRYPTO_NOT_SUPPORTED); 1591 ASSERT_EQ(OH_CryptoVerify_SetParam(verify, CRYPTO_PSS_MGF_NAME_STR, &mfgBlob), CRYPTO_NOT_SUPPORTED); 1592 ASSERT_EQ(OH_CryptoVerify_SetParam(verify, CRYPTO_PSS_MGF1_NAME_STR, &mgf1MddBlob), CRYPTO_NOT_SUPPORTED); 1593 ASSERT_EQ(OH_CryptoVerify_SetParam(verify, CRYPTO_PSS_SALT_LEN_INT, &saltBlob1), CRYPTO_SUCCESS); 1594 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1595 ASSERT_EQ(OH_CryptoVerify_SetParam(verify, CRYPTO_PSS_SALT_LEN_INT, &saltBlob2), CRYPTO_SUCCESS); 1596 EXPECT_EQ(OH_CryptoVerify_GetParam(verify, CRYPTO_PSS_MD_NAME_STR, &outMdBlob), CRYPTO_SUCCESS); 1597 EXPECT_EQ(OH_CryptoVerify_GetParam(verify, CRYPTO_PSS_MGF_NAME_STR, &outMfgBlob), CRYPTO_SUCCESS); 1598 EXPECT_EQ(OH_CryptoVerify_GetParam(verify, CRYPTO_PSS_MGF1_NAME_STR, &outMfg1MdBlob), CRYPTO_SUCCESS); 1599 EXPECT_EQ(OH_CryptoVerify_GetParam(verify, CRYPTO_PSS_TRAILER_FIELD_INT, &outTrailerFieldBlob), CRYPTO_SUCCESS); 1600 EXPECT_EQ(OH_CryptoVerify_GetParam(verify, CRYPTO_PSS_SALT_LEN_INT, &outSaltBlob), CRYPTO_SUCCESS); 1601 ASSERT_FALSE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1602 1603 HcfObjDestroy(signObj); 1604 OH_CryptoVerify_Destroy(verify); 1605 HcfObjDestroy(randomObj); 1606 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1607 OH_CryptoKeyPair_Destroy(keyPair); 1608 HcfBlobDataClearAndFree(&msgBlob); 1609 HcfBlobDataClearAndFree(&signData); 1610 OH_Crypto_FreeDataBlob(&outMdBlob); 1611 OH_Crypto_FreeDataBlob(&outMfgBlob); 1612 OH_Crypto_FreeDataBlob(&outMfg1MdBlob); 1613 OH_Crypto_FreeDataBlob(&outTrailerFieldBlob); 1614 OH_Crypto_FreeDataBlob(&outSaltBlob); 1615 } 1616 1617 /** 1618 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2300 1619 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2300 1620 * @tc.desc algorithm is Verify 1621 * @tc.size Medium 1622 * @tc.type Func 1623 * @tc.level Level0 1624 */ 1625 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2300, TestSize.Level0) 1626 { 1627 HcfSign *signObj = nullptr; 1628 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1629 OH_CryptoKeyPair *keyPair = nullptr; 1630 int32_t msgLen = 16; 1631 HcfRand *randomObj = nullptr; 1632 HcfBlob msgBlob = {0}; 1633 HcfBlob signData = {.data = nullptr, .len = 0}; 1634 OH_CryptoVerify *verify = nullptr; 1635 1636 HcfRandCreate(&randomObj); 1637 ASSERT_TRUE(randomObj != nullptr); 1638 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1639 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA2048", &keyCtx), CRYPTO_SUCCESS); 1640 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1641 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1642 Crypto_DataBlob retBlob = { .data = nullptr, .len = 0 }; 1643 ASSERT_EQ(OH_CryptoPubKey_Encode(pubKey, CRYPTO_PEM, "PKCS1", &retBlob), CRYPTO_SUCCESS); 1644 ASSERT_EQ(HcfSignCreate((const char *)"RSA2048|PSS|SHA256|MGF1_SHA256", &signObj), HCF_SUCCESS); 1645 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1646 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1647 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA2048|PSS|SHA256|MGF1_SHA256", &verify), CRYPTO_SUCCESS); 1648 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1649 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1650 1651 HcfObjDestroy(signObj); 1652 OH_CryptoVerify_Destroy(verify); 1653 HcfObjDestroy(randomObj); 1654 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1655 OH_CryptoKeyPair_Destroy(keyPair); 1656 HcfBlobDataClearAndFree(&msgBlob); 1657 HcfBlobDataClearAndFree(&signData); 1658 } 1659 1660 /** 1661 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2400 1662 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2400 1663 * @tc.desc algorithm is Verify 1664 * @tc.size Medium 1665 * @tc.type Func 1666 * @tc.level Level0 1667 */ 1668 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2400, TestSize.Level0) 1669 { 1670 HcfSign *signObj = nullptr; 1671 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1672 OH_CryptoKeyPair *keyPair = nullptr; 1673 HcfBlob signData = {.data = nullptr, .len = 0}; 1674 OH_CryptoVerify *verify = nullptr; 1675 int32_t msgLen = 32; 1676 HcfRand *randomObj = nullptr; 1677 HcfBlob msgBlob = {0}; 1678 Crypto_DataBlob rawSignData = {.data = nullptr, .len = 0}; 1679 1680 HcfRandCreate(&randomObj); 1681 ASSERT_TRUE(randomObj != nullptr); 1682 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1683 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 1684 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1685 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1686 Crypto_DataBlob retBlob = { .data = nullptr, .len = 0 }; 1687 ASSERT_EQ(OH_CryptoPubKey_Encode(pubKey, CRYPTO_PEM, "PKCS1", &retBlob), CRYPTO_SUCCESS); 1688 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA256|OnlySign", &signObj), HCF_SUCCESS); 1689 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1690 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1691 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA256|Recover", &verify), CRYPTO_SUCCESS); 1692 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1693 ASSERT_EQ(OH_CryptoVerify_Recover(verify, (Crypto_DataBlob *)&signData, &rawSignData), CRYPTO_SUCCESS); 1694 1695 OH_CryptoVerify_Destroy(verify); 1696 OH_Crypto_FreeDataBlob(&rawSignData); 1697 HcfObjDestroy(signObj); 1698 HcfObjDestroy(randomObj); 1699 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1700 OH_CryptoKeyPair_Destroy(keyPair); 1701 HcfBlobDataClearAndFree(&signData); 1702 } 1703 1704 /** 1705 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2500 1706 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2500 1707 * @tc.desc algorithm is Verify 1708 * @tc.size Medium 1709 * @tc.type Func 1710 * @tc.level Level0 1711 */ 1712 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2500, TestSize.Level0) 1713 { 1714 HcfSign *signObj = nullptr; 1715 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1716 OH_CryptoKeyPair *keyPair = nullptr; 1717 int32_t msgLen = 32; 1718 HcfRand *randomObj = nullptr; 1719 HcfBlob msgBlob = {0}; 1720 HcfBlob signData = {.data = nullptr, .len = 0}; 1721 OH_CryptoVerify *verify = nullptr; 1722 1723 HcfRandCreate(&randomObj); 1724 ASSERT_TRUE(randomObj != nullptr); 1725 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1726 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"SM2_256", &keyCtx), CRYPTO_SUCCESS); 1727 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1728 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1729 Crypto_DataBlob retBlob = { .data = nullptr, .len = 0 }; 1730 ASSERT_EQ(OH_CryptoPubKey_Encode(pubKey, CRYPTO_DER, nullptr, &retBlob), CRYPTO_SUCCESS); 1731 ASSERT_EQ(HcfSignCreate((const char *)"SM2_256|SM3", &signObj), HCF_SUCCESS); 1732 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1733 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1734 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"SM2_256|SM3", &verify), CRYPTO_SUCCESS); 1735 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1736 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1737 1738 HcfObjDestroy(signObj); 1739 OH_CryptoVerify_Destroy(verify); 1740 HcfObjDestroy(randomObj); 1741 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1742 OH_CryptoKeyPair_Destroy(keyPair); 1743 HcfBlobDataClearAndFree(&msgBlob); 1744 HcfBlobDataClearAndFree(&signData); 1745 } 1746 1747 /** 1748 * @tc.number SUB_Security_CryptoFramework_NAPI_Verify_Test_2600 1749 * @tc.name OHCryptoFrameworkVerifyNapiTest.SUB_Security_CryptoFramework_NAPI_Verify_Test_2600 1750 * @tc.desc algorithm is Verify 1751 * @tc.size Medium 1752 * @tc.type Func 1753 * @tc.level Level0 1754 */ 1755 HWTEST_F(OHCryptoFrameworkVerifyNapiTest, SUB_Security_CryptoFramework_NAPI_Verify_Test_2600, TestSize.Level0) 1756 { 1757 HcfSign *signObj = nullptr; 1758 OH_CryptoAsymKeyGenerator *keyCtx = nullptr; 1759 OH_CryptoKeyPair *keyPair = nullptr; 1760 int32_t msgLen = 64; 1761 HcfRand *randomObj = nullptr; 1762 HcfBlob msgBlob = {0}; 1763 HcfBlob signData = {.data = nullptr, .len = 0}; 1764 OH_CryptoVerify *verify = nullptr; 1765 int blockSize = 20; 1766 int cnt_s = 64 / blockSize; 1767 int rem_s = 64 % blockSize; 1768 1769 HcfRandCreate(&randomObj); 1770 ASSERT_TRUE(randomObj != nullptr); 1771 ASSERT_EQ(randomObj->generateRandom(randomObj, msgLen, &msgBlob), HCF_SUCCESS); 1772 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Create((const char *)"RSA1024", &keyCtx), CRYPTO_SUCCESS); 1773 ASSERT_EQ(OH_CryptoAsymKeyGenerator_Generate(keyCtx, &keyPair), CRYPTO_SUCCESS); 1774 OH_CryptoPubKey *pubKey = OH_CryptoKeyPair_GetPubKey(keyPair); 1775 Crypto_DataBlob retBlob = { .data = nullptr, .len = 0 }; 1776 ASSERT_EQ(OH_CryptoPubKey_Encode(pubKey, CRYPTO_PEM, "PKCS1", &retBlob), CRYPTO_SUCCESS); 1777 ASSERT_EQ(HcfSignCreate((const char *)"RSA1024|PKCS1|SHA256", &signObj), HCF_SUCCESS); 1778 ASSERT_EQ(signObj->init(signObj, nullptr, ((HcfKeyPair *)keyPair)->priKey), HCF_SUCCESS); 1779 1780 for (int i = 0; i < cnt_s; i++) { 1781 msgBlob.len = blockSize; 1782 ASSERT_EQ(signObj->update(signObj, &msgBlob), HCF_SUCCESS); 1783 msgBlob.data += blockSize; 1784 } 1785 if (rem_s > 0) { 1786 msgBlob.len = rem_s; 1787 ASSERT_EQ(signObj->sign(signObj, &msgBlob, &signData), HCF_SUCCESS); 1788 } 1789 msgBlob.data -= 64 - rem_s; 1790 msgBlob.len = 64; 1791 ASSERT_EQ(OH_CryptoVerify_Create((const char *)"RSA1024|PKCS1|SHA256", &verify), CRYPTO_SUCCESS); 1792 ASSERT_EQ(OH_CryptoVerify_Init(verify, pubKey), CRYPTO_SUCCESS); 1793 for (int i = 0; i < cnt_s; i++) { 1794 msgBlob.len = blockSize; 1795 ASSERT_EQ(OH_CryptoVerify_Update(verify, (Crypto_DataBlob *)&msgBlob), CRYPTO_SUCCESS); 1796 msgBlob.data += blockSize; 1797 } 1798 if (rem_s > 0) { 1799 msgBlob.len = rem_s; 1800 ASSERT_TRUE(OH_CryptoVerify_Final(verify, (Crypto_DataBlob *)&msgBlob, (Crypto_DataBlob *)&signData)); 1801 } 1802 1803 msgBlob.data -= 64 - rem_s; 1804 msgBlob.len = 64; 1805 HcfObjDestroy(signObj); 1806 OH_CryptoVerify_Destroy(verify); 1807 HcfObjDestroy(randomObj); 1808 OH_CryptoAsymKeyGenerator_Destroy(keyCtx); 1809 OH_CryptoKeyPair_Destroy(keyPair); 1810 HcfBlobDataClearAndFree(&msgBlob); 1811 HcfBlobDataClearAndFree(&signData); 1812 } 1813 1814 } // namespace Unittest::CryptoFrameworkVerifyNapiTest