]>
Commit | Line | Data |
---|---|---|
ece9304c | 1 | /* |
a28d06f3 | 2 | * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. |
ece9304c RL |
3 | * |
4 | * Licensed under the Apache License 2.0 (the "License"). You may not use | |
5 | * this file except in compliance with the License. You can obtain a copy | |
6 | * in the file LICENSE in the source distribution or at | |
7 | * https://www.openssl.org/source/license.html | |
8 | */ | |
9 | ||
2c090c1d RL |
10 | #ifndef DECODER_PROVIDER |
11 | # error Macro DECODER_PROVIDER undefined | |
ece9304c RL |
12 | #endif |
13 | ||
2c090c1d RL |
14 | #define DECODER_STRUCTURE_type_specific_keypair "type-specific" |
15 | #define DECODER_STRUCTURE_type_specific_params "type-specific" | |
16 | #define DECODER_STRUCTURE_type_specific "type-specific" | |
17 | #define DECODER_STRUCTURE_type_specific_no_pub "type-specific" | |
6a2b8ff3 RL |
18 | #define DECODER_STRUCTURE_EncryptedPrivateKeyInfo "EncryptedPrivateKeyInfo" |
19 | #define DECODER_STRUCTURE_PrivateKeyInfo "PrivateKeyInfo" | |
2c090c1d RL |
20 | #define DECODER_STRUCTURE_SubjectPublicKeyInfo "SubjectPublicKeyInfo" |
21 | #define DECODER_STRUCTURE_DH "dh" | |
22 | #define DECODER_STRUCTURE_DHX "dhx" | |
23 | #define DECODER_STRUCTURE_DSA "dsa" | |
24 | #define DECODER_STRUCTURE_EC "ec" | |
25 | #define DECODER_STRUCTURE_RSA "rsa" | |
26 | ||
27 | /* Arguments are prefixed with '_' to avoid build breaks on certain platforms */ | |
28 | #define DECODER(_name, _input, _output, _fips) \ | |
29 | { _name, \ | |
30 | "provider=" DECODER_PROVIDER ",fips=" #_fips ",input=" #_input, \ | |
31 | (ossl_##_input##_to_##_output##_decoder_functions) } | |
32 | #define DECODER_w_structure(_name, _input, _structure, _output, _fips) \ | |
33 | { _name, \ | |
34 | "provider=" DECODER_PROVIDER ",fips=" #_fips ",input=" #_input \ | |
35 | ",structure=" DECODER_STRUCTURE_##_structure, \ | |
36 | (ossl_##_structure##_##_input##_to_##_output##_decoder_functions) } | |
37 | ||
ece9304c | 38 | #ifndef OPENSSL_NO_DH |
6a2b8ff3 | 39 | DECODER_w_structure("DH", der, PrivateKeyInfo, dh, yes), |
2c090c1d RL |
40 | DECODER_w_structure("DH", der, SubjectPublicKeyInfo, dh, yes), |
41 | DECODER_w_structure("DH", der, type_specific_params, dh, yes), | |
42 | DECODER_w_structure("DH", der, DH, dh, yes), | |
6a2b8ff3 | 43 | DECODER_w_structure("DHX", der, PrivateKeyInfo, dhx, yes), |
2c090c1d RL |
44 | DECODER_w_structure("DHX", der, SubjectPublicKeyInfo, dhx, yes), |
45 | DECODER_w_structure("DHX", der, type_specific_params, dhx, yes), | |
46 | DECODER_w_structure("DHX", der, DHX, dhx, yes), | |
ece9304c RL |
47 | #endif |
48 | #ifndef OPENSSL_NO_DSA | |
6a2b8ff3 | 49 | DECODER_w_structure("DSA", der, PrivateKeyInfo, dsa, yes), |
2c090c1d RL |
50 | DECODER_w_structure("DSA", der, SubjectPublicKeyInfo, dsa, yes), |
51 | DECODER_w_structure("DSA", der, type_specific, dsa, yes), | |
52 | DECODER_w_structure("DSA", der, DSA, dsa, yes), | |
53 | DECODER("DSA", msblob, dsa, yes), | |
2c090c1d | 54 | DECODER("DSA", pvk, dsa, yes), |
ece9304c RL |
55 | #endif |
56 | #ifndef OPENSSL_NO_EC | |
6a2b8ff3 | 57 | DECODER_w_structure("EC", der, PrivateKeyInfo, ec, yes), |
2c090c1d RL |
58 | DECODER_w_structure("EC", der, SubjectPublicKeyInfo, ec, yes), |
59 | DECODER_w_structure("EC", der, type_specific_no_pub, ec, yes), | |
60 | DECODER_w_structure("EC", der, EC, ec, yes), | |
6a2b8ff3 | 61 | DECODER_w_structure("ED25519", der, PrivateKeyInfo, ed25519, yes), |
2c090c1d | 62 | DECODER_w_structure("ED25519", der, SubjectPublicKeyInfo, ed25519, yes), |
6a2b8ff3 | 63 | DECODER_w_structure("ED448", der, PrivateKeyInfo, ed448, yes), |
2c090c1d | 64 | DECODER_w_structure("ED448", der, SubjectPublicKeyInfo, ed448, yes), |
6a2b8ff3 | 65 | DECODER_w_structure("X25519", der, PrivateKeyInfo, x25519, yes), |
2c090c1d | 66 | DECODER_w_structure("X25519", der, SubjectPublicKeyInfo, x25519, yes), |
6a2b8ff3 | 67 | DECODER_w_structure("X448", der, PrivateKeyInfo, x448, yes), |
2c090c1d | 68 | DECODER_w_structure("X448", der, SubjectPublicKeyInfo, x448, yes), |
f2db0528 | 69 | # ifndef OPENSSL_NO_SM2 |
6a2b8ff3 | 70 | DECODER_w_structure("SM2", der, PrivateKeyInfo, sm2, yes), |
f2db0528 RL |
71 | DECODER_w_structure("SM2", der, SubjectPublicKeyInfo, sm2, yes), |
72 | # endif | |
ece9304c | 73 | #endif |
6a2b8ff3 | 74 | DECODER_w_structure("RSA", der, PrivateKeyInfo, rsa, yes), |
2c090c1d RL |
75 | DECODER_w_structure("RSA", der, SubjectPublicKeyInfo, rsa, yes), |
76 | DECODER_w_structure("RSA", der, type_specific_keypair, rsa, yes), | |
77 | DECODER_w_structure("RSA", der, RSA, rsa, yes), | |
6a2b8ff3 | 78 | DECODER_w_structure("RSA-PSS", der, PrivateKeyInfo, rsapss, yes), |
2c090c1d | 79 | DECODER_w_structure("RSA-PSS", der, SubjectPublicKeyInfo, rsapss, yes), |
2c090c1d | 80 | DECODER("RSA", msblob, rsa, yes), |
2c090c1d | 81 | DECODER("RSA", pvk, rsa, yes), |
ece9304c | 82 | |
2c090c1d | 83 | DECODER("DER", pem, der, yes), |
6a2b8ff3 RL |
84 | /* |
85 | * A decoder that recognises PKCS#8 EncryptedPrivateKeyInfo structure | |
86 | * and decrypts it, passing on the unencrypted PrivateKeyInfo in DER | |
87 | * form to the next decoder. | |
88 | */ | |
89 | DECODER_w_structure("DER", der, EncryptedPrivateKeyInfo, der, yes), |