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.subject = IPA.cert.parse_dn(spec.subject);
|
||||||
that.serial_number = spec.serial_number || '';
|
that.serial_number = spec.serial_number || '';
|
||||||
|
that.serial_number_hex = spec.serial_number_hex || '';
|
||||||
that.issuer = IPA.cert.parse_dn(spec.issuer);
|
that.issuer = IPA.cert.parse_dn(spec.issuer);
|
||||||
that.issued_on = spec.issued_on || '';
|
that.issued_on = spec.issued_on || '';
|
||||||
that.expires_on = spec.expires_on || '';
|
that.expires_on = spec.expires_on || '';
|
||||||
@@ -367,6 +368,12 @@ IPA.cert.view_dialog = function(spec) {
|
|||||||
text: that.serial_number
|
text: that.serial_number
|
||||||
}).appendTo(tr);
|
}).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);
|
tr = $('<tr/>').appendTo(table);
|
||||||
$('<td/>', {
|
$('<td/>', {
|
||||||
'colspan': 2,
|
'colspan': 2,
|
||||||
@@ -785,6 +792,7 @@ IPA.cert.status_widget = function(spec) {
|
|||||||
'title': title,
|
'title': title,
|
||||||
'subject': result['subject'],
|
'subject': result['subject'],
|
||||||
'serial_number': result['serial_number'],
|
'serial_number': result['serial_number'],
|
||||||
|
'serial_number_hex': result['serial_number_hex'],
|
||||||
'issuer': result['issuer'],
|
'issuer': result['issuer'],
|
||||||
'issued_on': result['valid_not_before'],
|
'issued_on': result['valid_not_before'],
|
||||||
'expires_on': result['valid_not_after'],
|
'expires_on': result['valid_not_after'],
|
||||||
|
|||||||
@@ -232,37 +232,32 @@ class cert_request(VirtualCommand):
|
|||||||
)
|
)
|
||||||
|
|
||||||
has_output_params = (
|
has_output_params = (
|
||||||
Str('certificate?',
|
Str('certificate',
|
||||||
label=_('Certificate'),
|
label=_('Certificate'),
|
||||||
flags=['no_create', 'no_update', 'no_search'],
|
|
||||||
),
|
),
|
||||||
Str('subject?',
|
Str('subject',
|
||||||
label=_('Subject'),
|
label=_('Subject'),
|
||||||
flags=['no_create', 'no_update', 'no_search'],
|
|
||||||
),
|
),
|
||||||
Str('issuer?',
|
Str('issuer',
|
||||||
label=_('Issuer'),
|
label=_('Issuer'),
|
||||||
flags=['no_create', 'no_update', 'no_search'],
|
|
||||||
),
|
),
|
||||||
Str('valid_not_before?',
|
Str('valid_not_before',
|
||||||
label=_('Not Before'),
|
label=_('Not Before'),
|
||||||
flags=['no_create', 'no_update', 'no_search'],
|
|
||||||
),
|
),
|
||||||
Str('valid_not_after?',
|
Str('valid_not_after',
|
||||||
label=_('Not After'),
|
label=_('Not After'),
|
||||||
flags=['no_create', 'no_update', 'no_search'],
|
|
||||||
),
|
),
|
||||||
Str('md5_fingerprint?',
|
Str('md5_fingerprint',
|
||||||
label=_('Fingerprint (MD5)'),
|
label=_('Fingerprint (MD5)'),
|
||||||
flags=['no_create', 'no_update', 'no_search'],
|
|
||||||
),
|
),
|
||||||
Str('sha1_fingerprint?',
|
Str('sha1_fingerprint',
|
||||||
label=_('Fingerprint (SHA1)'),
|
label=_('Fingerprint (SHA1)'),
|
||||||
flags=['no_create', 'no_update', 'no_search'],
|
|
||||||
),
|
),
|
||||||
Str('serial_number?',
|
Str('serial_number',
|
||||||
label=_('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',
|
Str('sha1_fingerprint',
|
||||||
label=_('Fingerprint (SHA1)'),
|
label=_('Fingerprint (SHA1)'),
|
||||||
),
|
),
|
||||||
Str('revocation_reason?',
|
Str('revocation_reason',
|
||||||
label=_('Revocation reason'),
|
label=_('Revocation reason'),
|
||||||
),
|
),
|
||||||
|
Str('serial_number_hex',
|
||||||
|
label=_('Serial number (hex)'),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
takes_options = (
|
takes_options = (
|
||||||
@@ -565,10 +563,10 @@ class cert_remove_hold(VirtualCommand):
|
|||||||
takes_args = _serial_number
|
takes_args = _serial_number
|
||||||
|
|
||||||
has_output_params = (
|
has_output_params = (
|
||||||
Flag('unrevoked?',
|
Flag('unrevoked',
|
||||||
label=_('Unrevoked'),
|
label=_('Unrevoked'),
|
||||||
),
|
),
|
||||||
Str('error_string?',
|
Str('error_string',
|
||||||
label=_('Error'),
|
label=_('Error'),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -146,6 +146,9 @@ host_output_params = (
|
|||||||
Str('serial_number',
|
Str('serial_number',
|
||||||
label=_('Serial Number'),
|
label=_('Serial Number'),
|
||||||
),
|
),
|
||||||
|
Str('serial_number_hex',
|
||||||
|
label=_('Serial Number (hex)'),
|
||||||
|
),
|
||||||
Str('issuer',
|
Str('issuer',
|
||||||
label=_('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."),
|
"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"),
|
"revoked": _("Certificate Revoked"),
|
||||||
"serial_number": _("Serial Number"),
|
"serial_number": _("Serial Number"),
|
||||||
|
"serial_number_hex": _("Serial Number (hex)"),
|
||||||
"sha1_fingerprint": _("SHA1 Fingerprint"),
|
"sha1_fingerprint": _("SHA1 Fingerprint"),
|
||||||
"superseded": _("Superseded"),
|
"superseded": _("Superseded"),
|
||||||
"unspecified": _("Unspecified"),
|
"unspecified": _("Unspecified"),
|
||||||
|
|||||||
@@ -96,6 +96,9 @@ output_params = (
|
|||||||
Str('serial_number',
|
Str('serial_number',
|
||||||
label=_('Serial Number'),
|
label=_('Serial Number'),
|
||||||
),
|
),
|
||||||
|
Str('serial_number_hex',
|
||||||
|
label=_('Serial Number (hex)'),
|
||||||
|
),
|
||||||
Str('issuer',
|
Str('issuer',
|
||||||
label=_('Issuer'),
|
label=_('Issuer'),
|
||||||
),
|
),
|
||||||
@@ -190,6 +193,7 @@ def set_certificate_attrs(entry_attrs):
|
|||||||
cert = x509.load_certificate(cert, datatype=x509.DER)
|
cert = x509.load_certificate(cert, datatype=x509.DER)
|
||||||
entry_attrs['subject'] = unicode(cert.subject)
|
entry_attrs['subject'] = unicode(cert.subject)
|
||||||
entry_attrs['serial_number'] = unicode(cert.serial_number)
|
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['issuer'] = unicode(cert.issuer)
|
||||||
entry_attrs['valid_not_before'] = unicode(cert.valid_not_before_str)
|
entry_attrs['valid_not_before'] = unicode(cert.valid_not_before_str)
|
||||||
entry_attrs['valid_not_after'] = unicode(cert.valid_not_after_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:
|
if len(serial_number) == 1:
|
||||||
serial_number = int(serial_number[0].text, 16) # parse as hex
|
serial_number = int(serial_number[0].text, 16) # parse as hex
|
||||||
response_request['serial_number'] = serial_number
|
response_request['serial_number'] = serial_number
|
||||||
|
response['serial_number_hex'] = u'0x%X' % serial_number
|
||||||
|
|
||||||
certificate = request.xpath('b64[1]')
|
certificate = request.xpath('b64[1]')
|
||||||
if len(certificate) == 1:
|
if len(certificate) == 1:
|
||||||
@@ -834,6 +835,7 @@ def parse_display_cert_xml(doc):
|
|||||||
if len(serial_number) == 1:
|
if len(serial_number) == 1:
|
||||||
serial_number = int(serial_number[0].text, 16) # parse as hex
|
serial_number = int(serial_number[0].text, 16) # parse as hex
|
||||||
response['serial_number'] = serial_number
|
response['serial_number'] = serial_number
|
||||||
|
response['serial_number_hex'] = u'0x%X' % serial_number
|
||||||
|
|
||||||
pkcs7_chain = doc.xpath('//xml/header/pkcs7ChainBase64[1]')
|
pkcs7_chain = doc.xpath('//xml/header/pkcs7ChainBase64[1]')
|
||||||
if len(pkcs7_chain) == 1:
|
if len(pkcs7_chain) == 1:
|
||||||
@@ -1026,6 +1028,7 @@ def parse_revoke_cert_xml(doc):
|
|||||||
if len(serial_number) == 1:
|
if len(serial_number) == 1:
|
||||||
serial_number = int(serial_number[0].text, 16) # parse as hex
|
serial_number = int(serial_number[0].text, 16) # parse as hex
|
||||||
response_record['serial_number'] = serial_number
|
response_record['serial_number'] = serial_number
|
||||||
|
response['serial_number_hex'] = u'0x%X' % serial_number
|
||||||
|
|
||||||
error_string = record.xpath('error[1]')
|
error_string = record.xpath('error[1]')
|
||||||
if len(error_string) == 1:
|
if len(error_string) == 1:
|
||||||
@@ -1187,6 +1190,7 @@ def parse_unrevoke_cert_xml(doc):
|
|||||||
if len(serial_number) == 1:
|
if len(serial_number) == 1:
|
||||||
serial_number = int(serial_number[0].text, 16) # parse as hex
|
serial_number = int(serial_number[0].text, 16) # parse as hex
|
||||||
response['serial_number'] = serial_number
|
response['serial_number'] = serial_number
|
||||||
|
response['serial_number_hex'] = u'0x%X' % serial_number
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@@ -1471,6 +1475,7 @@ class ra(rabase.rabase):
|
|||||||
if parse_result.has_key('serial_number'):
|
if parse_result.has_key('serial_number'):
|
||||||
# see module documentation concerning serial numbers and XMLRPC
|
# see module documentation concerning serial numbers and XMLRPC
|
||||||
cmd_result['serial_number'] = unicode(parse_result['serial_number'])
|
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'):
|
if parse_result.has_key('revocation_reason'):
|
||||||
cmd_result['revocation_reason'] = parse_result['revocation_reason']
|
cmd_result['revocation_reason'] = parse_result['revocation_reason']
|
||||||
@@ -1539,6 +1544,7 @@ class ra(rabase.rabase):
|
|||||||
if request.has_key('serial_number'):
|
if request.has_key('serial_number'):
|
||||||
# see module documentation concerning serial numbers and XMLRPC
|
# see module documentation concerning serial numbers and XMLRPC
|
||||||
cmd_result['serial_number'] = unicode(request['serial_number'])
|
cmd_result['serial_number'] = unicode(request['serial_number'])
|
||||||
|
cmd_result['serial_number_hex'] = u'0x%X' % request['serial_number']
|
||||||
|
|
||||||
if request.has_key('certificate'):
|
if request.has_key('certificate'):
|
||||||
cmd_result['certificate'] = request['certificate']
|
cmd_result['certificate'] = request['certificate']
|
||||||
|
|||||||
@@ -221,6 +221,7 @@ class ra(rabase.rabase):
|
|||||||
|
|
||||||
cmd_result = {}
|
cmd_result = {}
|
||||||
cmd_result['serial_number'] = unicode(serial) # convert long to decimal unicode string
|
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['certificate'] = unicode(cert)
|
||||||
cmd_result['subject'] = unicode(subject)
|
cmd_result['subject'] = unicode(subject)
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ from ipalib import api, errors, x509
|
|||||||
from ipalib.dn import *
|
from ipalib.dn import *
|
||||||
from tests.test_xmlrpc.xmlrpc_test import Declarative, fuzzy_uuid, fuzzy_digits
|
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_hash, fuzzy_date, fuzzy_issuer
|
||||||
|
from tests.test_xmlrpc.xmlrpc_test import fuzzy_hex
|
||||||
from tests.test_xmlrpc import objectclasses
|
from tests.test_xmlrpc import objectclasses
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
@@ -253,6 +254,7 @@ class test_host(Declarative):
|
|||||||
subject=lambda x: DN(x) == \
|
subject=lambda x: DN(x) == \
|
||||||
DN(('CN',api.env.host),('O',api.env.realm)),
|
DN(('CN',api.env.host),('O',api.env.realm)),
|
||||||
serial_number=fuzzy_digits,
|
serial_number=fuzzy_digits,
|
||||||
|
serial_number_hex=fuzzy_hex,
|
||||||
md5_fingerprint=fuzzy_hash,
|
md5_fingerprint=fuzzy_hash,
|
||||||
sha1_fingerprint=fuzzy_hash,
|
sha1_fingerprint=fuzzy_hash,
|
||||||
issuer=fuzzy_issuer,
|
issuer=fuzzy_issuer,
|
||||||
@@ -284,6 +286,7 @@ class test_host(Declarative):
|
|||||||
subject=lambda x: DN(x) == \
|
subject=lambda x: DN(x) == \
|
||||||
DN(('CN',api.env.host),('O',api.env.realm)),
|
DN(('CN',api.env.host),('O',api.env.realm)),
|
||||||
serial_number=fuzzy_digits,
|
serial_number=fuzzy_digits,
|
||||||
|
serial_number_hex=fuzzy_hex,
|
||||||
md5_fingerprint=fuzzy_hash,
|
md5_fingerprint=fuzzy_hash,
|
||||||
sha1_fingerprint=fuzzy_hash,
|
sha1_fingerprint=fuzzy_hash,
|
||||||
issuer=fuzzy_issuer,
|
issuer=fuzzy_issuer,
|
||||||
@@ -482,6 +485,7 @@ class test_host(Declarative):
|
|||||||
subject=lambda x: DN(x) == \
|
subject=lambda x: DN(x) == \
|
||||||
DN(('CN',api.env.host),('O',api.env.realm)),
|
DN(('CN',api.env.host),('O',api.env.realm)),
|
||||||
serial_number=fuzzy_digits,
|
serial_number=fuzzy_digits,
|
||||||
|
serial_number_hex=fuzzy_hex,
|
||||||
md5_fingerprint=fuzzy_hash,
|
md5_fingerprint=fuzzy_hash,
|
||||||
sha1_fingerprint=fuzzy_hash,
|
sha1_fingerprint=fuzzy_hash,
|
||||||
macaddress=[u'00:50:56:30:F6:5F'],
|
macaddress=[u'00:50:56:30:F6:5F'],
|
||||||
@@ -511,6 +515,7 @@ class test_host(Declarative):
|
|||||||
subject=lambda x: DN(x) == \
|
subject=lambda x: DN(x) == \
|
||||||
DN(('CN',api.env.host),('O',api.env.realm)),
|
DN(('CN',api.env.host),('O',api.env.realm)),
|
||||||
serial_number=fuzzy_digits,
|
serial_number=fuzzy_digits,
|
||||||
|
serial_number_hex=fuzzy_hex,
|
||||||
md5_fingerprint=fuzzy_hash,
|
md5_fingerprint=fuzzy_hash,
|
||||||
sha1_fingerprint=fuzzy_hash,
|
sha1_fingerprint=fuzzy_hash,
|
||||||
macaddress=[u'00:50:56:30:F6:5F', u'00:50:56:2C:8D:82'],
|
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 ipalib import api, errors, x509
|
||||||
from tests.test_xmlrpc.xmlrpc_test import Declarative, fuzzy_uuid, fuzzy_hash
|
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_digits, fuzzy_date, fuzzy_issuer
|
||||||
|
from tests.test_xmlrpc.xmlrpc_test import fuzzy_hex
|
||||||
from tests.test_xmlrpc import objectclasses
|
from tests.test_xmlrpc import objectclasses
|
||||||
import base64
|
import base64
|
||||||
from ipalib.dn import *
|
from ipalib.dn import *
|
||||||
@@ -380,6 +381,7 @@ class test_service(Declarative):
|
|||||||
subject=lambda x: DN(x) == \
|
subject=lambda x: DN(x) == \
|
||||||
DN(('CN',api.env.host),('O',api.env.realm)),
|
DN(('CN',api.env.host),('O',api.env.realm)),
|
||||||
serial_number=fuzzy_digits,
|
serial_number=fuzzy_digits,
|
||||||
|
serial_number_hex=fuzzy_hex,
|
||||||
md5_fingerprint=fuzzy_hash,
|
md5_fingerprint=fuzzy_hash,
|
||||||
sha1_fingerprint=fuzzy_hash,
|
sha1_fingerprint=fuzzy_hash,
|
||||||
issuer=fuzzy_issuer,
|
issuer=fuzzy_issuer,
|
||||||
@@ -407,6 +409,7 @@ class test_service(Declarative):
|
|||||||
subject=lambda x: DN(x) == \
|
subject=lambda x: DN(x) == \
|
||||||
DN(('CN',api.env.host),('O',api.env.realm)),
|
DN(('CN',api.env.host),('O',api.env.realm)),
|
||||||
serial_number=fuzzy_digits,
|
serial_number=fuzzy_digits,
|
||||||
|
serial_number_hex=fuzzy_hex,
|
||||||
md5_fingerprint=fuzzy_hash,
|
md5_fingerprint=fuzzy_hash,
|
||||||
sha1_fingerprint=fuzzy_hash,
|
sha1_fingerprint=fuzzy_hash,
|
||||||
issuer=fuzzy_issuer,
|
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_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
|
# 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
|
# The only exception is space, but space cannot be at the beggingin or end of the pwd
|
||||||
fuzzy_password = Fuzzy('^\S([\S ]*\S)*$')
|
fuzzy_password = Fuzzy('^\S([\S ]*\S)*$')
|
||||||
|
|||||||
Reference in New Issue
Block a user