def create_badge_section(config): cert_image_path = os.path.join(config.abs_data_dir, config.cert_image_file) issuer_image_path = os.path.join(config.abs_data_dir, config.issuer_logo_file) badge = { 'type': 'BadgeClass', 'name': config.certificate_title, 'description': config.certificate_description, 'image': helpers.encode_image(cert_image_path) } if config.issuer_signature_lines: signature_lines = [] signature_lines = [] for signature_line in config.issuer_signature_lines: signature_image_path = os.path.join(config.abs_data_dir, signature_line['signature_image']) signature_lines.append( { 'type': [ 'SignatureLine', 'Extension' ], 'jobTitle': signature_line['job_title'], 'image': helpers.encode_image(signature_image_path), 'name': signature_line['name'] } ) badge[scope_name('signatureLines')] = signature_lines return badge
def generate_issuer_file(config): output_handle = open(config.output_file, 'w') if config.output_file else sys.stdout introductionURL = config.issuer_url + "intro/" if config.issuer_url.endswith( '/') else "/intro/" currentDate = str(datetime.date.today()) issuer_json = { 'id': config.issuer_id, 'url': config.issuer_url, 'introductionURL': introductionURL, 'name': config.issuer_name, 'email': config.issuer_email, 'image': helpers.encode_image(config.issuer_logo_file), 'issuerKeys': [{ 'date': currentDate, 'key': config.issuer_address }], 'revocationKeys': [{ 'date': currentDate, 'key': config.revocation_address }] } output_handle.write(json.dumps(issuer_json, indent=2)) if output_handle is not sys.stdout: output_handle.close()
def generate_issuer_file(config): if config.public_key_created: issued_on = config.public_key_created else: print(helpers.create_iso8601_tz()) issued_on = helpers.create_iso8601_tz() output_handle = open(config.output_file, 'w') if config.output_file else sys.stdout context = [OPEN_BADGES_V2_CONTEXT_JSON, BLOCKCERTS_V2_CONTEXT_JSON] issuer_json = { '@context': context, 'id': config.issuer_id, 'url': config.issuer_url, 'name': config.issuer_name, 'email': config.issuer_email, 'image': helpers.encode_image(os.path.join(config.abs_data_dir, config.issuer_logo_file)), 'publicKey': [{'id': config.issuer_public_key, "created": issued_on}], 'revocationList': config.revocation_list_uri, 'type': ISSUER_TYPE } if config.intro_url: issuer_json['introductionUrl'] = config.intro_url output_handle.write(json.dumps(issuer_json, indent=2)) if output_handle is not sys.stdout: output_handle.close()
def generate_issuer_file(config): output_handle = open(config.output_file, 'w') if config.output_file else sys.stdout introductionURL = config.issuer_url + "intro/" if config.issuer_url.endswith('/') else "/intro/" currentDate = str(datetime.date.today()) issuer_json = { 'id': config.issuer_id, 'url': config.issuer_url, 'introductionURL': introductionURL, 'name': config.issuer_name, 'email': config.issuer_email, 'image': helpers.encode_image(config.issuer_logo_file), 'issuerKeys': [ { 'date': currentDate, 'key': config.issuer_address } ], 'revocationKeys': [ { 'date': currentDate, 'key': config.revocation_address } ] } output_handle.write(json.dumps(issuer_json, indent=2)) if output_handle is not sys.stdout: output_handle.close()
def generate_issuer_file(config): if config.public_key_created: issued_on = config.public_key_created else: issued_on = helpers.create_iso8601_tz() output_handle = open(config.output_file, 'w') if config.output_file else sys.stdout context = [OPEN_BADGES_V2_CONTEXT_JSON, BLOCKCERTS_V2_CONTEXT_JSON] issuer_json = { '@context': context, 'id': config.issuer_id, 'url': config.issuer_url, 'name': config.issuer_name, 'email': config.issuer_email, 'image': helpers.encode_image(os.path.join(config.abs_data_dir, config.issuer_logo_file)), 'publicKey': [{'id': config.issuer_public_key, "created": issued_on}], 'revocationList': config.revocation_list_uri, 'type': ISSUER_TYPE } if config.intro_url: issuer_json['introductionUrl'] = config.intro_url output_handle.write(json.dumps(issuer_json, indent=2)) if output_handle is not sys.stdout: output_handle.close()
def create_badge_section(config): cert_image_path = os.path.join(config.abs_data_dir, config.cert_image_file) issuer_image_path = os.path.join(config.abs_data_dir, config.issuer_logo_file) with open('data.json') as data_file: award_obj = json.load(data_file) badge = { 'type': 'BadgeClass', 'id': helpers.URN_UUID_PREFIX + config.badge_id, 'name': award_obj['Award']['Title'], 'description': award_obj['Award']['Description'], 'image': helpers.encode_image(cert_image_path), 'issuer': { 'id': config.issuer_id, 'type': 'Profile', 'name': award_obj['Award']['IssuerName'], 'url': award_obj['Award']['IssuerUrl'], 'email': award_obj['Award']['IssuerContact'], 'image': helpers.encode_image(issuer_image_path), 'revocationList': config.revocation_list } } badge['criteria'] = {} badge['criteria']['narrative'] = award_obj['Criteria'] if config.issuer_signature_lines: signature_lines = [] for signature_line in config.issuer_signature_lines: signature_image_path = os.path.join( config.abs_data_dir, signature_line['signature_image']) signature_lines.append({ 'type': ['SignatureLine', 'Extension'], 'jobTitle': signature_line['job_title'], 'image': helpers.encode_image(signature_image_path), 'name': signature_line['name'] }) badge[scope_name('signatureLines')] = signature_lines return badge
def create_badge_section(config): cert_image_path = os.path.join(config.abs_data_dir, config.cert_image_file) issuer_image_path = os.path.join(config.abs_data_dir, config.issuer_logo_file) badge = { 'type': 'BadgeClass', 'id': helpers.URN_UUID_PREFIX + config.badge_id, 'name': config.certificate_title, 'description': config.certificate_description, 'image': helpers.encode_image(cert_image_path), 'issuer': { 'id': config.issuer_id, 'type': 'Profile', 'name': config.issuer_name, 'url': config.issuer_url, 'email': config.issuer_email, 'image': helpers.encode_image(issuer_image_path), 'revocationList': config.revocation_list } } badge['criteria'] = {} badge['criteria']['narrative'] = config.criteria_narrative if config.issuer_signature_lines: signature_lines = [] signature_lines = [] for signature_line in config.issuer_signature_lines: signature_image_path = os.path.join( config.abs_data_dir, config.issuer_signature_file ) #signature_line['signature_image']) signature_lines.append({ 'type': ['SignatureLine', 'Extension'], 'jobTitle': signature_line['job_title'], 'image': helpers.encode_image(signature_image_path), 'name': signature_line['name'] }) badge[scope_name('signatureLines')] = signature_lines return badge
def create_badge_section(config): cert_image_path = os.path.join(config.abs_data_dir, config.cert_image_file) issuer_image_path = os.path.join(config.abs_data_dir, config.issuer_logo_file) badge = { 'type': 'BadgeClass', 'id': helpers.URN_UUID_PREFIX + config.badge_id, 'name': config.certificate_title, 'description': config.certificate_description, 'image': helpers.encode_image(cert_image_path), 'issuer': { 'id': config.issuer_id, 'type': 'Profile', 'name': config.issuer_name, 'url': config.issuer_url, 'email': config.issuer_email, 'image': helpers.encode_image(issuer_image_path), 'revocationList': config.revocation_list } } badge['criteria'] = {} badge['criteria']['narrative'] = config.criteria_narrative if config.issuer_signature_lines: signature_lines = [] signature_lines = [] for signature_line in config.issuer_signature_lines: signature_image_path = os.path.join(config.abs_data_dir, signature_line['signature_image']) signature_lines.append( { 'type': [ 'SignatureLine', 'Extension' ], 'jobTitle': signature_line['job_title'], 'image': helpers.encode_image(signature_image_path), 'name': signature_line['name'] } ) badge[scope_name('signatureLines')] = signature_lines return badge
def create_assertion_section(config): assertion = { 'type': 'Assertion', 'issuedOn': '*|DATE|*', 'uid': '*|CERTUID|*', 'id': helpers.urljoin_wrapper(config.issuer_certs_url, '*|CERTUID|*') } if config.issuer_signature_file: issuer_image_path = os.path.join(config.abs_data_dir, config.issuer_signature_file) assertion['image:signature'] = helpers.encode_image(issuer_image_path) return assertion
def create_certificate_section(config): cert_image_path = os.path.join(config.abs_data_dir, config.cert_image_file) issuer_image_path = os.path.join(config.abs_data_dir, config.issuer_logo_file) certificate = { 'type': 'Certificate', 'name': config.certificate_title, 'image': helpers.encode_image(cert_image_path), 'description': config.certificate_description, 'language': config.certificate_language, 'issuer': { 'type': 'Issuer', 'url': config.issuer_url, 'image': helpers.encode_image(issuer_image_path), 'email': config.issuer_email, 'name': config.issuer_name, 'id': config.issuer_id } } return certificate
def create_unsigned_certificates_from_roster(config): roster = os.path.join(config.abs_data_dir, config.roster) template = os.path.join(config.abs_data_dir, config.template_dir, config.template_file_name) issued_on = helpers.create_iso8601_tz() output_dir = os.path.join(config.abs_data_dir, config.unsigned_certificates_dir) print('Writing certificates to ' + output_dir) recipients = [] ### User defined changes. Defined a mapping list for keeping user mapping. ### mapping = [] ### END ### with open(roster, 'r') as theFile: reader = csv.DictReader(theFile) for line in reader: r = Recipient(line) recipients.append(r) with open(template) as template: cert_str = template.read() template = json.loads(cert_str) for recipient in recipients: if config.filename_format == "certname_identity": uid = template['badge']['name'] + recipient.identity uid = "".join(c for c in uid if c.isalnum()) else: uid = str(uuid.uuid4()) ### User-defined changes. Added a field to change the certificate Image for a given recipient ### template['badge']['image'] = helpers.encode_image( os.path.join(config.abs_data_dir, 'images/' + recipient.imagefile)) ### END ### cert_file = os.path.join(output_dir, uid + '.json') if os.path.isfile(cert_file) and config.no_clobber: continue cert = copy.deepcopy(template) instantiate_assertion(config, cert, uid, issued_on) instantiate_recipient(config, cert, recipient) # validate certificate before writing schema_validator.validate_v2(cert) with open(cert_file, 'w') as unsigned_cert: json.dump(cert, unsigned_cert) ###UserDefined changes. Creating a mapping for recepient email and filename mapping.append([recipient.identity, uid + '.json']) ### END ### ### User Defined changes. Writes to the mapping csv file ### with open(os.path.join(config.abs_data_dir, 'mapping.csv'), 'w') as mappingFile: writer = csv.writer(mappingFile) writer.writerows(mapping)