diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2008-03-19 19:34:30 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2008-03-19 19:34:30 +0000 |
commit | 054307e7ed58b53f36e4dd28066b8f7c4315dfd7 (patch) | |
tree | 74d232f1d9ee2496c5c952dfd666cd43de4431c5 /crypto/cms | |
parent | 8cd358bef8c818916d32e4aed0a46d4e14f3a202 (diff) |
Allow alternate eContentType oids to be set in cms utility.
Add id-ct-asciiTextWithCRLF OID.
Give more meaninful error message is attempt to use key ID from a certificate
without a key ID.
Diffstat (limited to 'crypto/cms')
-rw-r--r-- | crypto/cms/cms.h | 1 | ||||
-rw-r--r-- | crypto/cms/cms_err.c | 1 | ||||
-rw-r--r-- | crypto/cms/cms_sd.c | 6 |
3 files changed, 8 insertions, 0 deletions
diff --git a/crypto/cms/cms.h b/crypto/cms/cms.h index 4f74cd14bf..1a316d7fd8 100644 --- a/crypto/cms/cms.h +++ b/crypto/cms/cms.h @@ -352,6 +352,7 @@ void ERR_load_CMS_strings(void); /* Reason codes. */ #define CMS_R_ADD_SIGNER_ERROR 99 +#define CMS_R_CERTIFICATE_HAS_NO_KEYID 160 #define CMS_R_CERTIFICATE_VERIFY_ERROR 100 #define CMS_R_CIPHER_INITIALISATION_ERROR 101 #define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR 102 diff --git a/crypto/cms/cms_err.c b/crypto/cms/cms_err.c index 494544d836..51a3ade0cc 100644 --- a/crypto/cms/cms_err.c +++ b/crypto/cms/cms_err.c @@ -135,6 +135,7 @@ static ERR_STRING_DATA CMS_str_functs[]= static ERR_STRING_DATA CMS_str_reasons[]= { {ERR_REASON(CMS_R_ADD_SIGNER_ERROR) ,"add signer error"}, +{ERR_REASON(CMS_R_CERTIFICATE_HAS_NO_KEYID),"certificate has no keyid"}, {ERR_REASON(CMS_R_CERTIFICATE_VERIFY_ERROR),"certificate verify error"}, {ERR_REASON(CMS_R_CIPHER_INITIALISATION_ERROR),"cipher initialisation error"}, {ERR_REASON(CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR),"cipher parameter initialisation error"}, diff --git a/crypto/cms/cms_sd.c b/crypto/cms/cms_sd.c index 302b93f805..6f31f6309f 100644 --- a/crypto/cms/cms_sd.c +++ b/crypto/cms/cms_sd.c @@ -226,6 +226,12 @@ int cms_set1_SignerIdentifier(CMS_SignerIdentifier *sid, X509 *cert, int type) break; case CMS_SIGNERINFO_KEYIDENTIFIER: + if (!cert->skid) + { + CMSerr(CMS_F_CMS_SET1_SIGNERIDENTIFIER, + CMS_R_CERTIFICATE_HAS_NO_KEYID); + return 0; + } sid->d.subjectKeyIdentifier = ASN1_STRING_dup(cert->skid); if (!sid->d.subjectKeyIdentifier) goto merr; |