OLD | NEW |
1 /* crypto/pkcs7/pkcs7err.c */ | 1 /* crypto/pkcs7/pkcs7err.c */ |
2 /* ==================================================================== | 2 /* ==================================================================== |
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. | 3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * | 8 * |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
11 * | 11 * |
12 * 2. Redistributions in binary form must reproduce the above copyright | 12 * 2. Redistributions in binary form must reproduce the above copyright |
13 * notice, this list of conditions and the following disclaimer in | 13 * notice, this list of conditions and the following disclaimer in |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 /* BEGIN ERROR CODES */ | 65 /* BEGIN ERROR CODES */ |
66 #ifndef OPENSSL_NO_ERR | 66 #ifndef OPENSSL_NO_ERR |
67 | 67 |
68 #define ERR_FUNC(func) ERR_PACK(ERR_LIB_PKCS7,func,0) | 68 #define ERR_FUNC(func) ERR_PACK(ERR_LIB_PKCS7,func,0) |
69 #define ERR_REASON(reason) ERR_PACK(ERR_LIB_PKCS7,0,reason) | 69 #define ERR_REASON(reason) ERR_PACK(ERR_LIB_PKCS7,0,reason) |
70 | 70 |
71 static ERR_STRING_DATA PKCS7_str_functs[]= | 71 static ERR_STRING_DATA PKCS7_str_functs[]= |
72 { | 72 { |
73 {ERR_FUNC(PKCS7_F_B64_READ_PKCS7), "B64_READ_PKCS7"}, | 73 {ERR_FUNC(PKCS7_F_B64_READ_PKCS7), "B64_READ_PKCS7"}, |
74 {ERR_FUNC(PKCS7_F_B64_WRITE_PKCS7), "B64_WRITE_PKCS7"}, | 74 {ERR_FUNC(PKCS7_F_B64_WRITE_PKCS7), "B64_WRITE_PKCS7"}, |
| 75 {ERR_FUNC(PKCS7_F_DO_PKCS7_SIGNED_ATTRIB), "DO_PKCS7_SIGNED_ATTRIB"}, |
| 76 {ERR_FUNC(PKCS7_F_I2D_PKCS7_BIO_STREAM), "i2d_PKCS7_bio_stream"}, |
| 77 {ERR_FUNC(PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME), "PKCS7_add0_attrib_signi
ng_time"}, |
75 {ERR_FUNC(PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP), "PKCS7_add_attrib_smimecap"}, | 78 {ERR_FUNC(PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP), "PKCS7_add_attrib_smimecap"}, |
76 {ERR_FUNC(PKCS7_F_PKCS7_ADD_CERTIFICATE), "PKCS7_add_certificate"}, | 79 {ERR_FUNC(PKCS7_F_PKCS7_ADD_CERTIFICATE), "PKCS7_add_certificate"}, |
77 {ERR_FUNC(PKCS7_F_PKCS7_ADD_CRL), "PKCS7_add_crl"}, | 80 {ERR_FUNC(PKCS7_F_PKCS7_ADD_CRL), "PKCS7_add_crl"}, |
78 {ERR_FUNC(PKCS7_F_PKCS7_ADD_RECIPIENT_INFO), "PKCS7_add_recipient_info"}, | 81 {ERR_FUNC(PKCS7_F_PKCS7_ADD_RECIPIENT_INFO), "PKCS7_add_recipient_info"}, |
| 82 {ERR_FUNC(PKCS7_F_PKCS7_ADD_SIGNATURE), "PKCS7_add_signature"}, |
79 {ERR_FUNC(PKCS7_F_PKCS7_ADD_SIGNER), "PKCS7_add_signer"}, | 83 {ERR_FUNC(PKCS7_F_PKCS7_ADD_SIGNER), "PKCS7_add_signer"}, |
80 {ERR_FUNC(PKCS7_F_PKCS7_BIO_ADD_DIGEST), "PKCS7_BIO_ADD_DIGEST"}, | 84 {ERR_FUNC(PKCS7_F_PKCS7_BIO_ADD_DIGEST), "PKCS7_BIO_ADD_DIGEST"}, |
| 85 {ERR_FUNC(PKCS7_F_PKCS7_COPY_EXISTING_DIGEST), "PKCS7_COPY_EXISTING_DIGEST"}, |
81 {ERR_FUNC(PKCS7_F_PKCS7_CTRL), "PKCS7_ctrl"}, | 86 {ERR_FUNC(PKCS7_F_PKCS7_CTRL), "PKCS7_ctrl"}, |
82 {ERR_FUNC(PKCS7_F_PKCS7_DATADECODE), "PKCS7_dataDecode"}, | 87 {ERR_FUNC(PKCS7_F_PKCS7_DATADECODE), "PKCS7_dataDecode"}, |
83 {ERR_FUNC(PKCS7_F_PKCS7_DATAFINAL), "PKCS7_dataFinal"}, | 88 {ERR_FUNC(PKCS7_F_PKCS7_DATAFINAL), "PKCS7_dataFinal"}, |
84 {ERR_FUNC(PKCS7_F_PKCS7_DATAINIT), "PKCS7_dataInit"}, | 89 {ERR_FUNC(PKCS7_F_PKCS7_DATAINIT), "PKCS7_dataInit"}, |
85 {ERR_FUNC(PKCS7_F_PKCS7_DATASIGN), "PKCS7_DATASIGN"}, | 90 {ERR_FUNC(PKCS7_F_PKCS7_DATASIGN), "PKCS7_DATASIGN"}, |
86 {ERR_FUNC(PKCS7_F_PKCS7_DATAVERIFY), "PKCS7_dataVerify"}, | 91 {ERR_FUNC(PKCS7_F_PKCS7_DATAVERIFY), "PKCS7_dataVerify"}, |
87 {ERR_FUNC(PKCS7_F_PKCS7_DECRYPT), "PKCS7_decrypt"}, | 92 {ERR_FUNC(PKCS7_F_PKCS7_DECRYPT), "PKCS7_decrypt"}, |
| 93 {ERR_FUNC(PKCS7_F_PKCS7_DECRYPT_RINFO), "PKCS7_DECRYPT_RINFO"}, |
| 94 {ERR_FUNC(PKCS7_F_PKCS7_ENCODE_RINFO), "PKCS7_ENCODE_RINFO"}, |
88 {ERR_FUNC(PKCS7_F_PKCS7_ENCRYPT), "PKCS7_encrypt"}, | 95 {ERR_FUNC(PKCS7_F_PKCS7_ENCRYPT), "PKCS7_encrypt"}, |
| 96 {ERR_FUNC(PKCS7_F_PKCS7_FINAL), "PKCS7_final"}, |
89 {ERR_FUNC(PKCS7_F_PKCS7_FIND_DIGEST), "PKCS7_FIND_DIGEST"}, | 97 {ERR_FUNC(PKCS7_F_PKCS7_FIND_DIGEST), "PKCS7_FIND_DIGEST"}, |
90 {ERR_FUNC(PKCS7_F_PKCS7_GET0_SIGNERS), "PKCS7_get0_signers"}, | 98 {ERR_FUNC(PKCS7_F_PKCS7_GET0_SIGNERS), "PKCS7_get0_signers"}, |
| 99 {ERR_FUNC(PKCS7_F_PKCS7_RECIP_INFO_SET), "PKCS7_RECIP_INFO_set"}, |
91 {ERR_FUNC(PKCS7_F_PKCS7_SET_CIPHER), "PKCS7_set_cipher"}, | 100 {ERR_FUNC(PKCS7_F_PKCS7_SET_CIPHER), "PKCS7_set_cipher"}, |
92 {ERR_FUNC(PKCS7_F_PKCS7_SET_CONTENT), "PKCS7_set_content"}, | 101 {ERR_FUNC(PKCS7_F_PKCS7_SET_CONTENT), "PKCS7_set_content"}, |
93 {ERR_FUNC(PKCS7_F_PKCS7_SET_DIGEST), "PKCS7_set_digest"}, | 102 {ERR_FUNC(PKCS7_F_PKCS7_SET_DIGEST), "PKCS7_set_digest"}, |
94 {ERR_FUNC(PKCS7_F_PKCS7_SET_TYPE), "PKCS7_set_type"}, | 103 {ERR_FUNC(PKCS7_F_PKCS7_SET_TYPE), "PKCS7_set_type"}, |
95 {ERR_FUNC(PKCS7_F_PKCS7_SIGN), "PKCS7_sign"}, | 104 {ERR_FUNC(PKCS7_F_PKCS7_SIGN), "PKCS7_sign"}, |
96 {ERR_FUNC(PKCS7_F_PKCS7_SIGNATUREVERIFY), "PKCS7_signatureVerify"}, | 105 {ERR_FUNC(PKCS7_F_PKCS7_SIGNATUREVERIFY), "PKCS7_signatureVerify"}, |
| 106 {ERR_FUNC(PKCS7_F_PKCS7_SIGNER_INFO_SET), "PKCS7_SIGNER_INFO_set"}, |
| 107 {ERR_FUNC(PKCS7_F_PKCS7_SIGNER_INFO_SIGN), "PKCS7_SIGNER_INFO_sign"}, |
| 108 {ERR_FUNC(PKCS7_F_PKCS7_SIGN_ADD_SIGNER), "PKCS7_sign_add_signer"}, |
97 {ERR_FUNC(PKCS7_F_PKCS7_SIMPLE_SMIMECAP), "PKCS7_simple_smimecap"}, | 109 {ERR_FUNC(PKCS7_F_PKCS7_SIMPLE_SMIMECAP), "PKCS7_simple_smimecap"}, |
98 {ERR_FUNC(PKCS7_F_PKCS7_VERIFY), "PKCS7_verify"}, | 110 {ERR_FUNC(PKCS7_F_PKCS7_VERIFY), "PKCS7_verify"}, |
99 {ERR_FUNC(PKCS7_F_SMIME_READ_PKCS7), "SMIME_read_PKCS7"}, | 111 {ERR_FUNC(PKCS7_F_SMIME_READ_PKCS7), "SMIME_read_PKCS7"}, |
100 {ERR_FUNC(PKCS7_F_SMIME_TEXT), "SMIME_text"}, | 112 {ERR_FUNC(PKCS7_F_SMIME_TEXT), "SMIME_text"}, |
101 {0,NULL} | 113 {0,NULL} |
102 }; | 114 }; |
103 | 115 |
104 static ERR_STRING_DATA PKCS7_str_reasons[]= | 116 static ERR_STRING_DATA PKCS7_str_reasons[]= |
105 { | 117 { |
106 {ERR_REASON(PKCS7_R_CERTIFICATE_VERIFY_ERROR),"certificate verify error"}, | 118 {ERR_REASON(PKCS7_R_CERTIFICATE_VERIFY_ERROR),"certificate verify error"}, |
107 {ERR_REASON(PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER),"cipher has no object ident
ifier"}, | 119 {ERR_REASON(PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER),"cipher has no object ident
ifier"}, |
108 {ERR_REASON(PKCS7_R_CIPHER_NOT_INITIALIZED),"cipher not initialized"}, | 120 {ERR_REASON(PKCS7_R_CIPHER_NOT_INITIALIZED),"cipher not initialized"}, |
109 {ERR_REASON(PKCS7_R_CONTENT_AND_DATA_PRESENT),"content and data present"}, | 121 {ERR_REASON(PKCS7_R_CONTENT_AND_DATA_PRESENT),"content and data present"}, |
| 122 {ERR_REASON(PKCS7_R_CTRL_ERROR) ,"ctrl error"}, |
110 {ERR_REASON(PKCS7_R_DECODE_ERROR) ,"decode error"}, | 123 {ERR_REASON(PKCS7_R_DECODE_ERROR) ,"decode error"}, |
111 {ERR_REASON(PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH),"decrypted key is wrong lengt
h"}, | 124 {ERR_REASON(PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH),"decrypted key is wrong lengt
h"}, |
112 {ERR_REASON(PKCS7_R_DECRYPT_ERROR) ,"decrypt error"}, | 125 {ERR_REASON(PKCS7_R_DECRYPT_ERROR) ,"decrypt error"}, |
113 {ERR_REASON(PKCS7_R_DIGEST_FAILURE) ,"digest failure"}, | 126 {ERR_REASON(PKCS7_R_DIGEST_FAILURE) ,"digest failure"}, |
| 127 {ERR_REASON(PKCS7_R_ENCRYPTION_CTRL_FAILURE),"encryption ctrl failure"}, |
| 128 {ERR_REASON(PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE),"encryption not
supported for this key type"}, |
114 {ERR_REASON(PKCS7_R_ERROR_ADDING_RECIPIENT),"error adding recipient"}, | 129 {ERR_REASON(PKCS7_R_ERROR_ADDING_RECIPIENT),"error adding recipient"}, |
115 {ERR_REASON(PKCS7_R_ERROR_SETTING_CIPHER),"error setting cipher"}, | 130 {ERR_REASON(PKCS7_R_ERROR_SETTING_CIPHER),"error setting cipher"}, |
116 {ERR_REASON(PKCS7_R_INVALID_MIME_TYPE) ,"invalid mime type"}, | 131 {ERR_REASON(PKCS7_R_INVALID_MIME_TYPE) ,"invalid mime type"}, |
117 {ERR_REASON(PKCS7_R_INVALID_NULL_POINTER),"invalid null pointer"}, | 132 {ERR_REASON(PKCS7_R_INVALID_NULL_POINTER),"invalid null pointer"}, |
118 {ERR_REASON(PKCS7_R_MIME_NO_CONTENT_TYPE),"mime no content type"}, | 133 {ERR_REASON(PKCS7_R_MIME_NO_CONTENT_TYPE),"mime no content type"}, |
119 {ERR_REASON(PKCS7_R_MIME_PARSE_ERROR) ,"mime parse error"}, | 134 {ERR_REASON(PKCS7_R_MIME_PARSE_ERROR) ,"mime parse error"}, |
120 {ERR_REASON(PKCS7_R_MIME_SIG_PARSE_ERROR),"mime sig parse error"}, | 135 {ERR_REASON(PKCS7_R_MIME_SIG_PARSE_ERROR),"mime sig parse error"}, |
121 {ERR_REASON(PKCS7_R_MISSING_CERIPEND_INFO),"missing ceripend info"}, | 136 {ERR_REASON(PKCS7_R_MISSING_CERIPEND_INFO),"missing ceripend info"}, |
122 {ERR_REASON(PKCS7_R_NO_CONTENT) ,"no content"}, | 137 {ERR_REASON(PKCS7_R_NO_CONTENT) ,"no content"}, |
123 {ERR_REASON(PKCS7_R_NO_CONTENT_TYPE) ,"no content type"}, | 138 {ERR_REASON(PKCS7_R_NO_CONTENT_TYPE) ,"no content type"}, |
| 139 {ERR_REASON(PKCS7_R_NO_DEFAULT_DIGEST) ,"no default digest"}, |
| 140 {ERR_REASON(PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND),"no matching digest type foun
d"}, |
124 {ERR_REASON(PKCS7_R_NO_MULTIPART_BODY_FAILURE),"no multipart body failure"}, | 141 {ERR_REASON(PKCS7_R_NO_MULTIPART_BODY_FAILURE),"no multipart body failure"}, |
125 {ERR_REASON(PKCS7_R_NO_MULTIPART_BOUNDARY),"no multipart boundary"}, | 142 {ERR_REASON(PKCS7_R_NO_MULTIPART_BOUNDARY),"no multipart boundary"}, |
126 {ERR_REASON(PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE),"no recipient matches cert
ificate"}, | 143 {ERR_REASON(PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE),"no recipient matches cert
ificate"}, |
127 {ERR_REASON(PKCS7_R_NO_RECIPIENT_MATCHES_KEY),"no recipient matches key"}, | 144 {ERR_REASON(PKCS7_R_NO_RECIPIENT_MATCHES_KEY),"no recipient matches key"}, |
128 {ERR_REASON(PKCS7_R_NO_SIGNATURES_ON_DATA),"no signatures on data"}, | 145 {ERR_REASON(PKCS7_R_NO_SIGNATURES_ON_DATA),"no signatures on data"}, |
129 {ERR_REASON(PKCS7_R_NO_SIGNERS) ,"no signers"}, | 146 {ERR_REASON(PKCS7_R_NO_SIGNERS) ,"no signers"}, |
130 {ERR_REASON(PKCS7_R_NO_SIG_CONTENT_TYPE) ,"no sig content type"}, | 147 {ERR_REASON(PKCS7_R_NO_SIG_CONTENT_TYPE) ,"no sig content type"}, |
131 {ERR_REASON(PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE),"operation not support
ed on this type"}, | 148 {ERR_REASON(PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE),"operation not support
ed on this type"}, |
132 {ERR_REASON(PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR),"pkcs7 add signature error"}, | 149 {ERR_REASON(PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR),"pkcs7 add signature error"}, |
| 150 {ERR_REASON(PKCS7_R_PKCS7_ADD_SIGNER_ERROR),"pkcs7 add signer error"}, |
133 {ERR_REASON(PKCS7_R_PKCS7_DATAFINAL) ,"pkcs7 datafinal"}, | 151 {ERR_REASON(PKCS7_R_PKCS7_DATAFINAL) ,"pkcs7 datafinal"}, |
134 {ERR_REASON(PKCS7_R_PKCS7_DATAFINAL_ERROR),"pkcs7 datafinal error"}, | 152 {ERR_REASON(PKCS7_R_PKCS7_DATAFINAL_ERROR),"pkcs7 datafinal error"}, |
135 {ERR_REASON(PKCS7_R_PKCS7_DATASIGN) ,"pkcs7 datasign"}, | 153 {ERR_REASON(PKCS7_R_PKCS7_DATASIGN) ,"pkcs7 datasign"}, |
136 {ERR_REASON(PKCS7_R_PKCS7_PARSE_ERROR) ,"pkcs7 parse error"}, | 154 {ERR_REASON(PKCS7_R_PKCS7_PARSE_ERROR) ,"pkcs7 parse error"}, |
137 {ERR_REASON(PKCS7_R_PKCS7_SIG_PARSE_ERROR),"pkcs7 sig parse error"}, | 155 {ERR_REASON(PKCS7_R_PKCS7_SIG_PARSE_ERROR),"pkcs7 sig parse error"}, |
138 {ERR_REASON(PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE),"private key does no
t match certificate"}, | 156 {ERR_REASON(PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE),"private key does no
t match certificate"}, |
139 {ERR_REASON(PKCS7_R_SIGNATURE_FAILURE) ,"signature failure"}, | 157 {ERR_REASON(PKCS7_R_SIGNATURE_FAILURE) ,"signature failure"}, |
140 {ERR_REASON(PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND),"signer certificate not found"
}, | 158 {ERR_REASON(PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND),"signer certificate not found"
}, |
| 159 {ERR_REASON(PKCS7_R_SIGNING_CTRL_FAILURE),"signing ctrl failure"}, |
| 160 {ERR_REASON(PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE),"signing not suppor
ted for this key type"}, |
141 {ERR_REASON(PKCS7_R_SIG_INVALID_MIME_TYPE),"sig invalid mime type"}, | 161 {ERR_REASON(PKCS7_R_SIG_INVALID_MIME_TYPE),"sig invalid mime type"}, |
142 {ERR_REASON(PKCS7_R_SMIME_TEXT_ERROR) ,"smime text error"}, | 162 {ERR_REASON(PKCS7_R_SMIME_TEXT_ERROR) ,"smime text error"}, |
143 {ERR_REASON(PKCS7_R_UNABLE_TO_FIND_CERTIFICATE),"unable to find certificate"}, | 163 {ERR_REASON(PKCS7_R_UNABLE_TO_FIND_CERTIFICATE),"unable to find certificate"}, |
144 {ERR_REASON(PKCS7_R_UNABLE_TO_FIND_MEM_BIO),"unable to find mem bio"}, | 164 {ERR_REASON(PKCS7_R_UNABLE_TO_FIND_MEM_BIO),"unable to find mem bio"}, |
145 {ERR_REASON(PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST),"unable to find message diges
t"}, | 165 {ERR_REASON(PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST),"unable to find message diges
t"}, |
146 {ERR_REASON(PKCS7_R_UNKNOWN_DIGEST_TYPE) ,"unknown digest type"}, | 166 {ERR_REASON(PKCS7_R_UNKNOWN_DIGEST_TYPE) ,"unknown digest type"}, |
147 {ERR_REASON(PKCS7_R_UNKNOWN_OPERATION) ,"unknown operation"}, | 167 {ERR_REASON(PKCS7_R_UNKNOWN_OPERATION) ,"unknown operation"}, |
148 {ERR_REASON(PKCS7_R_UNSUPPORTED_CIPHER_TYPE),"unsupported cipher type"}, | 168 {ERR_REASON(PKCS7_R_UNSUPPORTED_CIPHER_TYPE),"unsupported cipher type"}, |
149 {ERR_REASON(PKCS7_R_UNSUPPORTED_CONTENT_TYPE),"unsupported content type"}, | 169 {ERR_REASON(PKCS7_R_UNSUPPORTED_CONTENT_TYPE),"unsupported content type"}, |
150 {ERR_REASON(PKCS7_R_WRONG_CONTENT_TYPE) ,"wrong content type"}, | 170 {ERR_REASON(PKCS7_R_WRONG_CONTENT_TYPE) ,"wrong content type"}, |
151 {ERR_REASON(PKCS7_R_WRONG_PKCS7_TYPE) ,"wrong pkcs7 type"}, | 171 {ERR_REASON(PKCS7_R_WRONG_PKCS7_TYPE) ,"wrong pkcs7 type"}, |
152 {0,NULL} | 172 {0,NULL} |
153 }; | 173 }; |
154 | 174 |
155 #endif | 175 #endif |
156 | 176 |
157 void ERR_load_PKCS7_strings(void) | 177 void ERR_load_PKCS7_strings(void) |
158 { | 178 { |
159 #ifndef OPENSSL_NO_ERR | 179 #ifndef OPENSSL_NO_ERR |
160 | 180 |
161 if (ERR_func_error_string(PKCS7_str_functs[0].error) == NULL) | 181 if (ERR_func_error_string(PKCS7_str_functs[0].error) == NULL) |
162 { | 182 { |
163 ERR_load_strings(0,PKCS7_str_functs); | 183 ERR_load_strings(0,PKCS7_str_functs); |
164 ERR_load_strings(0,PKCS7_str_reasons); | 184 ERR_load_strings(0,PKCS7_str_reasons); |
165 } | 185 } |
166 #endif | 186 #endif |
167 } | 187 } |
OLD | NEW |