Line data Source code
1 : /**
2 : * Copyright Soramitsu Co., Ltd. 2018 All Rights Reserved.
3 : * http://soramitsu.co.jp
4 : *
5 : * Licensed under the Apache License, Version 2.0 (the "License");
6 : * you may not use this file except in compliance with the License.
7 : * You may obtain a copy of the License at
8 : *
9 : * http://www.apache.org/licenses/LICENSE-2.0
10 : *
11 : * Unless required by applicable law or agreed to in writing, software
12 : * distributed under the License is distributed on an "AS IS" BASIS,
13 : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 : * See the License for the specific language governing permissions and
15 : * limitations under the License.
16 : */
17 :
18 : #ifndef IROHA_CRYPTO_VERIFIER_HPP
19 : #define IROHA_CRYPTO_VERIFIER_HPP
20 :
21 : #include "cryptography/crypto_provider/crypto_defaults.hpp"
22 :
23 : namespace shared_model {
24 : namespace crypto {
25 :
26 : class Signed;
27 : class Blob;
28 : class PublicKey;
29 :
30 : /**
31 : * CryptoVerifier - adapter for generalization verification of cryptographic
32 : * signatures
33 : * @tparam Algorithm - cryptographic algorithm for verification
34 : */
35 : template <typename Algorithm = DefaultCryptoAlgorithmType>
36 : class CryptoVerifier {
37 : public:
38 : /**
39 : * Verify signature attached to source data
40 : * @param signedData - cryptographic signature
41 : * @param source - data that was signed
42 : * @param pubKey - public key of signatory
43 : * @return true if signature correct
44 : */
45 : static bool verify(const Signed &signedData,
46 : const Blob &source,
47 : const PublicKey &pubKey) {
48 4636 : return Algorithm::verify(signedData, source, pubKey);
49 : }
50 :
51 : /// close constructor for forbidding instantiation
52 : CryptoVerifier() = delete;
53 : };
54 : } // namespace crypto
55 : } // namespace shared_model
56 :
57 : #endif // IROHA_CRYPTO_VERIFIER_HPP
|