summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xinstall/ui/certificate.js8
-rw-r--r--ipalib/plugins/cert.py36
-rw-r--r--ipalib/plugins/host.py3
-rw-r--r--ipalib/plugins/internal.py1
-rw-r--r--ipalib/plugins/service.py4
-rw-r--r--ipaserver/plugins/dogtag.py6
-rw-r--r--ipaserver/plugins/selfsign.py1
-rw-r--r--tests/test_xmlrpc/test_host_plugin.py5
-rw-r--r--tests/test_xmlrpc/test_service_plugin.py3
-rw-r--r--tests/test_xmlrpc/xmlrpc_test.py2
10 files changed, 50 insertions, 19 deletions
diff --git a/install/ui/certificate.js b/install/ui/certificate.js
index 9645aad39..b5356224f 100755
--- a/install/ui/certificate.js
+++ b/install/ui/certificate.js
@@ -319,6 +319,7 @@ IPA.cert.view_dialog = function(spec) {
that.subject = IPA.cert.parse_dn(spec.subject);
that.serial_number = spec.serial_number || '';
+ that.serial_number_hex = spec.serial_number_hex || '';
that.issuer = IPA.cert.parse_dn(spec.issuer);
that.issued_on = spec.issued_on || '';
that.expires_on = spec.expires_on || '';
@@ -368,6 +369,12 @@ IPA.cert.view_dialog = function(spec) {
}).appendTo(tr);
tr = $('<tr/>').appendTo(table);
+ $('<td>'+IPA.messages.objects.cert.serial_number_hex+':</td>').appendTo(tr);
+ $('<td/>', {
+ text: that.serial_number_hex
+ }).appendTo(tr);
+
+ tr = $('<tr/>').appendTo(table);
$('<td/>', {
'colspan': 2,
'html': '<h3>'+IPA.messages.objects.cert.issued_by+'</h3>'
@@ -785,6 +792,7 @@ IPA.cert.status_widget = function(spec) {
'title': title,
'subject': result['subject'],
'serial_number': result['serial_number'],
+ 'serial_number_hex': result['serial_number_hex'],
'issuer': result['issuer'],
'issued_on': result['valid_not_before'],
'expires_on': result['valid_not_after'],
diff --git a/ipalib/plugins/cert.py b/ipalib/plugins/cert.py
index 130ebc79f..7a3888121 100644
--- a/ipalib/plugins/cert.py
+++ b/ipalib/plugins/cert.py
@@ -232,37 +232,32 @@ class cert_request(VirtualCommand):
)
has_output_params = (
- Str('certificate?',
+ Str('certificate',
label=_('Certificate'),
- flags=['no_create', 'no_update', 'no_search'],
),
- Str('subject?',
+ Str('subject',
label=_('Subject'),
- flags=['no_create', 'no_update', 'no_search'],
),
- Str('issuer?',
+ Str('issuer',
label=_('Issuer'),
- flags=['no_create', 'no_update', 'no_search'],
),
- Str('valid_not_before?',
+ Str('valid_not_before',
label=_('Not Before'),
- flags=['no_create', 'no_update', 'no_search'],
),
- Str('valid_not_after?',
+ Str('valid_not_after',
label=_('Not After'),
- flags=['no_create', 'no_update', 'no_search'],
),
- Str('md5_fingerprint?',
+ Str('md5_fingerprint',
label=_('Fingerprint (MD5)'),
- flags=['no_create', 'no_update', 'no_search'],
),
- Str('sha1_fingerprint?',
+ Str('sha1_fingerprint',
label=_('Fingerprint (SHA1)'),
- flags=['no_create', 'no_update', 'no_search'],
),
- Str('serial_number?',
+ Str('serial_number',
label=_('Serial number'),
- flags=['no_create', 'no_update', 'no_search'],
+ ),
+ Str('serial_number_hex',
+ label=_('Serial number (hex)'),
),
)
@@ -456,9 +451,12 @@ class cert_show(VirtualCommand):
Str('sha1_fingerprint',
label=_('Fingerprint (SHA1)'),
),
- Str('revocation_reason?',
+ Str('revocation_reason',
label=_('Revocation reason'),
),
+ Str('serial_number_hex',
+ label=_('Serial number (hex)'),
+ ),
)
takes_options = (
@@ -565,10 +563,10 @@ class cert_remove_hold(VirtualCommand):
takes_args = _serial_number
has_output_params = (
- Flag('unrevoked?',
+ Flag('unrevoked',
label=_('Unrevoked'),
),
- Str('error_string?',
+ Str('error_string',
label=_('Error'),
),
)
diff --git a/ipalib/plugins/host.py b/ipalib/plugins/host.py
index 3814215cb..9db98e713 100644
--- a/ipalib/plugins/host.py
+++ b/ipalib/plugins/host.py
@@ -146,6 +146,9 @@ host_output_params = (
Str('serial_number',
label=_('Serial Number'),
),
+ Str('serial_number_hex',
+ label=_('Serial Number (hex)'),
+ ),
Str('issuer',
label=_('Issuer'),
),
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index deff866ee..160b40154 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -313,6 +313,7 @@ class i18n_messages(Command):
"revoke_confirmation": _("To confirm your intention to revoke this certificate, select a reason from the pull-down list, and click the \"Revoke\" button."),
"revoked": _("Certificate Revoked"),
"serial_number": _("Serial Number"),
+ "serial_number_hex": _("Serial Number (hex)"),
"sha1_fingerprint": _("SHA1 Fingerprint"),
"superseded": _("Superseded"),
"unspecified": _("Unspecified"),
diff --git a/ipalib/plugins/service.py b/ipalib/plugins/service.py
index 71e4ac465..e75d71f03 100644
--- a/ipalib/plugins/service.py
+++ b/ipalib/plugins/service.py
@@ -96,6 +96,9 @@ output_params = (
Str('serial_number',
label=_('Serial Number'),
),
+ Str('serial_number_hex',
+ label=_('Serial Number (hex)'),
+ ),
Str('issuer',
label=_('Issuer'),
),
@@ -190,6 +193,7 @@ def set_certificate_attrs(entry_attrs):
cert = x509.load_certificate(cert, datatype=x509.DER)
entry_attrs['subject'] = unicode(cert.subject)
entry_attrs['serial_number'] = unicode(cert.serial_number)
+ entry_attrs['serial_number_hex'] = u'0x%X' % cert.serial_number
entry_attrs['issuer'] = unicode(cert.issuer)
entry_attrs['valid_not_before'] = unicode(cert.valid_not_before_str)
entry_attrs['valid_not_after'] = unicode(cert.valid_not_after_str)
diff --git a/ipaserver/plugins/dogtag.py b/ipaserver/plugins/dogtag.py
index b31058c14..b56e04f4d 100644
--- a/ipaserver/plugins/dogtag.py
+++ b/ipaserver/plugins/dogtag.py
@@ -609,6 +609,7 @@ def parse_profile_submit_result_xml(doc):
if len(serial_number) == 1:
serial_number = int(serial_number[0].text, 16) # parse as hex
response_request['serial_number'] = serial_number
+ response['serial_number_hex'] = u'0x%X' % serial_number
certificate = request.xpath('b64[1]')
if len(certificate) == 1:
@@ -834,6 +835,7 @@ def parse_display_cert_xml(doc):
if len(serial_number) == 1:
serial_number = int(serial_number[0].text, 16) # parse as hex
response['serial_number'] = serial_number
+ response['serial_number_hex'] = u'0x%X' % serial_number
pkcs7_chain = doc.xpath('//xml/header/pkcs7ChainBase64[1]')
if len(pkcs7_chain) == 1:
@@ -1026,6 +1028,7 @@ def parse_revoke_cert_xml(doc):
if len(serial_number) == 1:
serial_number = int(serial_number[0].text, 16) # parse as hex
response_record['serial_number'] = serial_number
+ response['serial_number_hex'] = u'0x%X' % serial_number
error_string = record.xpath('error[1]')
if len(error_string) == 1:
@@ -1187,6 +1190,7 @@ def parse_unrevoke_cert_xml(doc):
if len(serial_number) == 1:
serial_number = int(serial_number[0].text, 16) # parse as hex
response['serial_number'] = serial_number
+ response['serial_number_hex'] = u'0x%X' % serial_number
return response
@@ -1471,6 +1475,7 @@ class ra(rabase.rabase):
if parse_result.has_key('serial_number'):
# see module documentation concerning serial numbers and XMLRPC
cmd_result['serial_number'] = unicode(parse_result['serial_number'])
+ cmd_result['serial_number_hex'] = u'0x%X' % int(cmd_result['serial_number'])
if parse_result.has_key('revocation_reason'):
cmd_result['revocation_reason'] = parse_result['revocation_reason']
@@ -1539,6 +1544,7 @@ class ra(rabase.rabase):
if request.has_key('serial_number'):
# see module documentation concerning serial numbers and XMLRPC
cmd_result['serial_number'] = unicode(request['serial_number'])
+ cmd_result['serial_number_hex'] = u'0x%X' % request['serial_number']
if request.has_key('certificate'):
cmd_result['certificate'] = request['certificate']
diff --git a/ipaserver/plugins/selfsign.py b/ipaserver/plugins/selfsign.py
index 2f13b1fd5..bbf8fa78a 100644
--- a/ipaserver/plugins/selfsign.py
+++ b/ipaserver/plugins/selfsign.py
@@ -221,6 +221,7 @@ class ra(rabase.rabase):
cmd_result = {}
cmd_result['serial_number'] = unicode(serial) # convert long to decimal unicode string
+ cmd_result['serial_number_hex'] = u'0x%X' % serial
cmd_result['certificate'] = unicode(cert)
cmd_result['subject'] = unicode(subject)
diff --git a/tests/test_xmlrpc/test_host_plugin.py b/tests/test_xmlrpc/test_host_plugin.py
index 4f24b6e39..7068d9a3f 100644
--- a/tests/test_xmlrpc/test_host_plugin.py
+++ b/tests/test_xmlrpc/test_host_plugin.py
@@ -26,6 +26,7 @@ from ipalib import api, errors, x509
from ipalib.dn import *
from tests.test_xmlrpc.xmlrpc_test import Declarative, fuzzy_uuid, fuzzy_digits
from tests.test_xmlrpc.xmlrpc_test import fuzzy_hash, fuzzy_date, fuzzy_issuer
+from tests.test_xmlrpc.xmlrpc_test import fuzzy_hex
from tests.test_xmlrpc import objectclasses
import base64
@@ -253,6 +254,7 @@ class test_host(Declarative):
subject=lambda x: DN(x) == \
DN(('CN',api.env.host),('O',api.env.realm)),
serial_number=fuzzy_digits,
+ serial_number_hex=fuzzy_hex,
md5_fingerprint=fuzzy_hash,
sha1_fingerprint=fuzzy_hash,
issuer=fuzzy_issuer,
@@ -284,6 +286,7 @@ class test_host(Declarative):
subject=lambda x: DN(x) == \
DN(('CN',api.env.host),('O',api.env.realm)),
serial_number=fuzzy_digits,
+ serial_number_hex=fuzzy_hex,
md5_fingerprint=fuzzy_hash,
sha1_fingerprint=fuzzy_hash,
issuer=fuzzy_issuer,
@@ -482,6 +485,7 @@ class test_host(Declarative):
subject=lambda x: DN(x) == \
DN(('CN',api.env.host),('O',api.env.realm)),
serial_number=fuzzy_digits,
+ serial_number_hex=fuzzy_hex,
md5_fingerprint=fuzzy_hash,
sha1_fingerprint=fuzzy_hash,
macaddress=[u'00:50:56:30:F6:5F'],
@@ -511,6 +515,7 @@ class test_host(Declarative):
subject=lambda x: DN(x) == \
DN(('CN',api.env.host),('O',api.env.realm)),
serial_number=fuzzy_digits,
+ serial_number_hex=fuzzy_hex,
md5_fingerprint=fuzzy_hash,
sha1_fingerprint=fuzzy_hash,
macaddress=[u'00:50:56:30:F6:5F', u'00:50:56:2C:8D:82'],
diff --git a/tests/test_xmlrpc/test_service_plugin.py b/tests/test_xmlrpc/test_service_plugin.py
index e97fb7c87..7eccd2066 100644
--- a/tests/test_xmlrpc/test_service_plugin.py
+++ b/tests/test_xmlrpc/test_service_plugin.py
@@ -24,6 +24,7 @@ Test the `ipalib/plugins/service.py` module.
from ipalib import api, errors, x509
from tests.test_xmlrpc.xmlrpc_test import Declarative, fuzzy_uuid, fuzzy_hash
from tests.test_xmlrpc.xmlrpc_test import fuzzy_digits, fuzzy_date, fuzzy_issuer
+from tests.test_xmlrpc.xmlrpc_test import fuzzy_hex
from tests.test_xmlrpc import objectclasses
import base64
from ipalib.dn import *
@@ -380,6 +381,7 @@ class test_service(Declarative):
subject=lambda x: DN(x) == \
DN(('CN',api.env.host),('O',api.env.realm)),
serial_number=fuzzy_digits,
+ serial_number_hex=fuzzy_hex,
md5_fingerprint=fuzzy_hash,
sha1_fingerprint=fuzzy_hash,
issuer=fuzzy_issuer,
@@ -407,6 +409,7 @@ class test_service(Declarative):
subject=lambda x: DN(x) == \
DN(('CN',api.env.host),('O',api.env.realm)),
serial_number=fuzzy_digits,
+ serial_number_hex=fuzzy_hex,
md5_fingerprint=fuzzy_hash,
sha1_fingerprint=fuzzy_hash,
issuer=fuzzy_issuer,
diff --git a/tests/test_xmlrpc/xmlrpc_test.py b/tests/test_xmlrpc/xmlrpc_test.py
index fd30cc63b..716ce03a0 100644
--- a/tests/test_xmlrpc/xmlrpc_test.py
+++ b/tests/test_xmlrpc/xmlrpc_test.py
@@ -53,6 +53,8 @@ fuzzy_date = Fuzzy('^[a-zA-Z]{3} [a-zA-Z]{3} \d{2} \d{2}:\d{2}:\d{2} \d{4} UTC$'
fuzzy_issuer = Fuzzy(type=basestring, test=lambda issuer: valid_issuer(issuer, api.env.realm))
+fuzzy_hex = Fuzzy('^0x[0-9a-fA-F]+$', type=basestring)
+
# Matches password - password consists of all printable characters without whitespaces
# The only exception is space, but space cannot be at the beggingin or end of the pwd
fuzzy_password = Fuzzy('^\S([\S ]*\S)*$')