else
return gnutls_assert_val(GNUTLS_GOST_PARAMSET_UNKNOWN);
}
+
+int _gnutls_x509_get_version(ASN1_TYPE root, const char *name)
+{
+ uint8_t version[8];
+ int len, result;
+
+ len = sizeof(version);
+ result = asn1_read_value(root, name, version, &len);
+ if (result != ASN1_SUCCESS) {
+ if (result == ASN1_ELEMENT_NOT_FOUND)
+ return 1; /* the DEFAULT version */
+ gnutls_assert();
+ return _gnutls_asn2err(result);
+ }
+
+ if (len != 1 || version[0] >= 0x80)
+ return gnutls_assert_val(GNUTLS_E_ASN1_DER_ERROR);
+
+ return (int) version[0] + 1;
+}
int _gnutls_x509_raw_crt_to_raw_pubkey(const gnutls_datum_t * cert,
gnutls_datum_t * rpubkey);
+int _gnutls_x509_get_version(ASN1_TYPE root, const char *name);
+
int x509_crt_to_raw_pubkey(gnutls_x509_crt_t crt,
gnutls_datum_t * rpubkey);
**/
int gnutls_x509_crl_get_version(gnutls_x509_crl_t crl)
{
- uint8_t version[8];
- int len, result;
-
if (crl == NULL) {
gnutls_assert();
return GNUTLS_E_INVALID_REQUEST;
}
- len = sizeof(version);
- if ((result =
- asn1_read_value(crl->crl, "tbsCertList.version", version,
- &len)) != ASN1_SUCCESS) {
- gnutls_assert();
- return _gnutls_asn2err(result);
- }
-
- return (int) version[0] + 1;
+ return _gnutls_x509_get_version(crl->crl, "tbsCertList.version");
}
/**
**/
int gnutls_ocsp_req_get_version(gnutls_ocsp_req_const_t req)
{
- uint8_t version[8];
- int len, ret;
-
if (req == NULL) {
gnutls_assert();
return GNUTLS_E_INVALID_REQUEST;
}
- len = sizeof(version);
- ret =
- asn1_read_value(req->req, "tbsRequest.version", version, &len);
- if (ret != ASN1_SUCCESS) {
- if (ret == ASN1_ELEMENT_NOT_FOUND)
- return 1; /* the DEFAULT version */
- gnutls_assert();
- return _gnutls_asn2err(ret);
- }
-
- return (int) version[0] + 1;
+ return _gnutls_x509_get_version(req->req, "tbsRequest.version");
}
/**
**/
int gnutls_ocsp_resp_get_version(gnutls_ocsp_resp_const_t resp)
{
- uint8_t version[8];
- int len, ret;
-
if (resp == NULL) {
gnutls_assert();
return GNUTLS_E_INVALID_REQUEST;
}
- len = sizeof(version);
- ret =
- asn1_read_value(resp->resp, "tbsResponseData.version", version,
- &len);
- if (ret != ASN1_SUCCESS) {
- if (ret == ASN1_ELEMENT_NOT_FOUND)
- return 1; /* the DEFAULT version */
- gnutls_assert();
- return _gnutls_asn2err(ret);
- }
-
- return (int) version[0] + 1;
+ return _gnutls_x509_get_version(resp->resp, "tbsResponseData.version");
}
/**
/* Version. */
{
int version = gnutls_x509_crl_get_version(crl);
- if (version == GNUTLS_E_ASN1_ELEMENT_NOT_FOUND)
- adds(str, _("\tVersion: 1 (default)\n"));
- else if (version < 0)
+ if (version < 0)
addf(str, "error: get_version: %s\n",
gnutls_strerror(version));
else
**/
int gnutls_x509_crt_get_version(gnutls_x509_crt_t cert)
{
- uint8_t version[8];
- int len, result;
-
if (cert == NULL) {
gnutls_assert();
return GNUTLS_E_INVALID_REQUEST;
}
- len = sizeof(version);
- if ((result =
- asn1_read_value(cert->cert, "tbsCertificate.version", version,
- &len)) != ASN1_SUCCESS) {
-
- if (result == ASN1_ELEMENT_NOT_FOUND)
- return 1; /* the DEFAULT version */
- gnutls_assert();
- return _gnutls_asn2err(result);
- }
-
- if (len != 1 || version[0] >= 0x80)
- return gnutls_assert_val(GNUTLS_E_CERTIFICATE_ERROR);
-
- return (int) version[0] + 1;
+ return _gnutls_x509_get_version(cert->cert, "tbsCertificate.version");
}
/**
X.509 Certificate Revocation List Information:
- Version: 1 (default)
+ Version: 1
Issuer: OU=VeriSign Commercial Software Publishers CA,O=VeriSign\, Inc.,L=Internet
Update dates:
Issued: Wed Mar 08 09:00:11 UTC 2017