mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Display serial number as HEX (DECIMAL) when showing certificates.
https://fedorahosted.org/freeipa/ticket/1991
This commit is contained in:
@@ -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 || '';
|
||||
@@ -367,6 +368,12 @@ IPA.cert.view_dialog = function(spec) {
|
||||
text: that.serial_number
|
||||
}).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,
|
||||
@@ -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'],
|
||||
|
||||
@@ -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'),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -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'),
|
||||
),
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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'],
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)*$')
|
||||
|
||||
Reference in New Issue
Block a user