Submit a paper

Title
Title is required. Use UTF-8 encoded characters instead of HTML entities. Mathematics is allowed within $ symbols.
HTML tags and entities are not allowed. The & character is allowed, but not recommended. MathJax is supported for LaTeX mathematics. Names with accents should be encoded in UTF-8 instead of TeX.
Authors

Please use UTF-8 character encoding for non-ascii characters (not TeX codes or HTML entities). All authors should be listed, and should appear in the order they are on the paper. ORCID IDs are optional, but helpful to identify authors and given them citation credit. ROR IDs are optional, but perform the same function as ORCID IDs for institutions.

At least one author must have an email.
Abstract
An abstract must be at least 64 characters. Please be more descriptive.
Your abstract contains unprintable characters or invalid UTF-8. This is often caused by copying and pasting from a PDF file, resulting in mangled text. Please remove invalid characters.
You may use UTF-8 characters and LaTeX conventions for math (displayed with MathJax); HTML tags are not allowed and will not be rendered. Be careful copying from a PDF - it often generates invalid UTF-8.
Rendered abstract
Category and Keywords
Use commas to separate the different keyword phrases. Individual keyword phrases are limited to at most 40 characters.
Keywords should be separated by commas.
Publication Information

Is the submitted paper published elsewhere? In other words, has this paper already appeared in another original publication or do you know that it will appear elsewhere?

DOI should start with 10 (do not include https://doi.org/)
If known, provide the DOI without the URL prefix https://dx.doi.org/.
Submission Content
PDF file is required
The paper must be in PDF format and fit on ISO A4-sized or US letter-sized paper. The file should include the email address(es) of the author(s).
Details
This will be publicly visible. You can use it to describe revisions or add other information. This is not intended for publication details; that appears elsewhere in the form.
This message will only be seen by the Cryptology ePrint Archive editor(s).
License
A license is required

You must grant to IACR a non-exclusive and irrevocable license chosen from the list above. For help in choosing a license, see this document.

Confirmation
  • The IACR has a non-exclusive and irrevocable license to distribute the paper.
  • The paper can be revised or withdrawn but all versions remain accessible .
  • Once withdrawn, the paper cannot be resurrected and follow-up versions of the same work will not be accepted later as another paper.
Author name is required. You may not use HTML entities or LaTeX. Also, do not specify more than one author in the author name field. You can add additional authors with the button below.
Each author should be entered separately. Use their full name as it appears on the paper, but do not use honorifics or titles or footnotes (e.g., no Prof. or Fellow or PhD).
Invalid Orcid ID
ORCID IDs are 16 digits. You can search for a coauthor's ORCID ID at orcid.org
Invalid email address
At least one author is required to supply an email address, but we recommend that all authors have an email for future contact purposes. The email address will be publicly visible.
`; let authorFields = document.getElementById('authorFields'); authorFields.insertAdjacentHTML('beforeend', authorTemplate); let addAffilButton = document.querySelector(`#author-${counter} .addAffilBtn`); addAffiliation(addAffilButton); return true; } function addAffiliation(el) { let authorNode = el.closest('.authorWrapper'); let counter = authorNode.querySelectorAll('.affiliation.form-control').length; let authorid = authorNode.dataset.authorid; let affiliationTemplate = `
Affiliation may not contain LaTeX.
Individual institutions should be listed separately. Do not include departments.
ROR IDs are URLs under ror.org. You can look up ROR IDs at ror.org
ROR IDs are recommended. You can look up ROR IDs at ror.org
`; let affiliationsNode = authorNode.querySelector('.affiliations'); affiliationsNode.insertAdjacentHTML('beforeend', affiliationTemplate); let id = `authorAffiliation-${authorid}-${counter}`; addAutocomplete(document.getElementById(id)); } var namePattern = RegExp('^(?!.*( and |[!^@#$%&*{}~:\\[\\]`_+=|/?;\\p{C}0-9\x00-\x09\x0b-\x1f\x7f-\x9f\\\\])).*$', 'u'); function clearAuthor(el) { if (namePattern.test(el.value)) { el.classList.remove('is-invalid'); } else { el.classList.add('is-invalid'); } // This is called if the author name is changed, to make sure we clear all fields // for that author. This is perhaps unfortunate because it clears the ORCID id, // but we don't want people to edit the name and leave an improper ORCID id. let authorWrapper = el.closest('.authorWrapper'); if (el.value) { authorWrapper.querySelector('.orcidButton').disabled = false; } else { authorWrapper.querySelector('.orcidButton').disabled = true; } authorWrapper.querySelector('input.orcid').value = ''; authorWrapper.querySelectorAll('input.affiliation').forEach(e => { e.value = ''; }); authorWrapper.querySelectorAll('input.ror').forEach(e => { e.value = ''; }); } function removeAffiliation(el) { // el is the button to remove the affiliation. let affilNode = el.parentElement.parentElement; let authorNode = affilNode.parentElement; affilNode.remove(); // Update name and id on each of the affiliation inputs. They have the form // authorAffiliation-{authornum}-{affilnum} or // authorAffiliationROR-{authornum}-{affilnum} let affiliationNodes = authorNode.querySelectorAll('div.affiliation'); for (let i = 0; i 0 ? id+1 : id-1; let authorFields = document.getElementById('authorFields'); if (direction > 0) { // down newid = id + 1; authorFields.insertBefore(target, document.getElementById('author-' + (id+2))); } else { authorFields.insertBefore(target, document.getElementById('author-' + (id-1))); } renumberAuthors(); document.getElementById('author-' + newid).scrollIntoView({behavior:'smooth'}); } function removeAuthor(el) { el.closest('.authorWrapper').remove(); // id = el.parentElement.parentElement.dataset.authorid; // document.getElementById('author-'+id).remove(); renumberAuthors(); } function renderTitle() { // Forbid display mathematics in title. if (titleField.value.indexOf('$$') >= 0) { titleField.value = titleField.value.replace('$$', '$'); } renderedTitle.textContent = titleField.value; // .replace('', '{\\gt}'); MathJax.typeset(); } function setOrcid(index, orcid) { let orcidInput = document.getElementById('authorOrcid-' + index); orcidInput.value = orcid.toString(); orcidInput.closest('.authorWrapper').querySelector('.orcidDropdown').classList.add('d-none'); orcidInput.classList.remove('is-invalid'); } function setAuthorData(index, orcid, affiliation, ror) { // Called when a result from openalex is selected. let authorWrapper = document.querySelectorAll('.authorWrapper')[index]; authorWrapper.querySelector('.orcid').value = orcid; if (affiliation !== 'undefined') { let affilInput = authorWrapper.querySelector('input.affiliation'); if (affilInput.value == '') { affilInput.value = affiliation; if (ror) { authorWrapper.querySelector('.ror').value = ror; } else { authorWrapper.querySelector('.ror').value = ''; } } } let orcidInput = document.getElementById('authorOrcid-' + index); orcidInput.value = orcid.toString(); authorWrapper.querySelector('.orcidDropdown').classList.add('d-none'); orcidInput.classList.remove('is-invalid'); } function setOrcidSuggestions(index, num, results) { console.dir(index); // index is the author index. num is number of results from openalex, results is the results with orcid id. let authorWrapper = document.querySelectorAll('.authorWrapper')[index]; authorWrapper.querySelector('.orcidDropdown').classList.remove('d-none'); let status = authorWrapper.querySelector('.orcidStatus'); let fullName = authorWrapper.querySelector('input'); searchHTML = ''+fullName.value + ''; if (results.length == 0) { status.innerHTML = 'No suggestions: try ' + searchHTML } else { status.innerHTML = 'Search for ' + searchHTML } let select = authorWrapper.querySelector('.orcidSuggest'); select.innerHTML = ''; if (results) { select.innerHTML = results.map((item) => { let div = `
${item.name} (${item.id})
`; if (item.affiliation) { div += `
${item.affiliation}
` } return div + '
'; }).join(''); } else { select.innerHTML = '
No suggestions
'; } } function closeOrcidSuggest(el) { // This is used because the blur event would prevent the onclick from firing. setTimeout(() => { el.closest('.authorWrapper').querySelector('.orcidDropdown').classList.add('d-none'); }, 300); } function searchOpenAlex(el) { let authorWrapper = el.closest('.authorWrapper'); let index = authorWrapper.dataset.authorid; let inputs = authorWrapper.querySelectorAll('input'); let fullName = inputs[0]; if (!fullName.value || fullName.value.length { if (response.status != 200) { console.warn('problem with lookup'); console.dir(response); } return response.json(); }).then((data) => { console.dir(data); let results = []; data.results.forEach(res => { if (res.orcid) { console.dir(res); let person = {'name': res.display_name, 'id': res.orcid.substring(18)}; let last_known_affil = res.last_known_institution; if (last_known_affil) { if(last_known_affil.display_name) { person['affiliation'] = last_known_affil.display_name; } if (last_known_affil.ror) { person['ror'] = last_known_affil.ror; } if (last_known_affil.country) { person['country'] = last_known_affil.country; } } results.push(person); } }); console.dir(results); setOrcidSuggestions(index, data.results.length, results); }); } // This is not used, but preserved for posterity in case we switch. // Note that the results returned by autocomplete are different than from search. function searchForAuthor(el) { let authorWrapper = el.closest('.authorWrapper'); let index = authorWrapper.dataset.authorid; let inputs = authorWrapper.querySelectorAll('input'); let fullName = inputs[0]; if (!fullName.value || fullName.value.length { if (response.status != 200) { console.warn('problem with lookup'); console.dir(response); } return response.json(); }).then((data) => { console.dir(data); let results = []; data.results.forEach(res => { if (res.orcid) { console.dir(res); let person = {'name': res.display_name, 'id': res.orcid.substring(18)}; let last_known_affil = res.last_known_institution; if (last_known_affil) { if(last_known_affil.display_name) { person['affiliation'] = last_known_affil.display_name; } if (last_known_affil.ror) { person['ror'] = last_known_affil.ror; } if (last_known_affil.country) { person['country'] = last_known_affil.country; } } results.push(person); } }); console.dir(results); setOrcidSuggestions(index, data.results.length, results); }); } function checkAbstract() { invalidAbstract.classList.add('d-none'); shortAbstract.classList.add('d-none'); if (abstractField.value.length { if (response.status !== 200) { target.classList.add('is-invalid'); console.log('Looks like there was a problem. Status Code: ' + response.status); return; } else { target.classList.remove('is-invalid'); } response.json().then(function(data) { let el = authorWrapper.querySelector('.orcidName'); if (el) { el.classList.remove('d-none'); if ('person' in data && 'name' in data['person']) { let name = data['person']['name']; if ('credit-name' in name && name['credit-name']) { name = name['credit-name']['value']; } else { name = name['given-names']['value'] + ' ' + name['family-name']['value']; } console.dir('orcid name is ' + name); el.innerText = 'Orcid name match: ' + name; } else { el.innerText = ''; } } else { console.warn('no element for orcidName'); } console.dir(target); }); }).catch(function(err) { console.log('Fetch Error: ', err); }); } } // This will reject some legitimate email addresses, because there are // a lot of legacy cases like uunet and source routing that is still // accepted by mail servers. We don't care, because the purpose is to // prevent fat-fingering things like "foo@foo@gmail.com or "foo at gmail" // The pattern we are using came from // https://stackoverflow.com/questions/46155/whats-the-best-way-to-validate-an-email-address-in-javascript?rq=1 // Note that this function takes an element as argument and changes // the CSS classes. The css on emails is deliberately set to ignore the // :invalid pseudoclass that is provided by the browser, since type="email" // is too lax for us. function checkEmail(el) { let isValid = true; // empty value is considered valid for our purposes. if (el.value) { isValid = String(el.value) .toLowerCase() .match( /^(([^()[\]\\.,;:\s@"]+(\.[^()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ ); } if (isValid) { el.classList.remove('is-invalid'); el.classList.remove('border-warning'); } else { el.classList.add('is-invalid'); } return isValid; } // At least one author email is required, and all names are required. function checkEmails() { let emailInputs = document.querySelectorAll('input[type="email"]'); let num = 0; for (let i = 0; i 0) { if (checkEmail(emailInputs[i])) { console.log('email ' + i + ' is valid'); num++; } else { console.log('email ' + i + ' is invalid'); return false; } } else { // empty values are ok. console.log('missing email ' + i); emailInputs[i].classList.add('border-warning'); emailInputs[i].classList.remove('is-invalid'); } } return (num > 0); } function checkKeywords(el) { keywordlist.innerText = ''; if (el.value.length > 120) { badWord.innerText = "At most 120 characters are allowed" el.classList.add('is-invalid'); return; } let words = el.value.split(',').map((w) => { return w.trim(); }); let longest = words.reduce((a,b) => { return a.length > b.length ? a : b; }); if (longest.length > 40) { badWord.innerText = longest + ' is too long'; el.classList.add('is-invalid'); } else { badWord.innerText = ''; el.classList.remove('is-invalid'); keywordlist.innerHTML = words.map(function(a){return ''+a+''}).join(''); } } function checkAuthorNames() { let num = 0; document.querySelectorAll('input.authorName').forEach(input => { if (namePattern.test(input.value)) { input.classList.remove('is-invalid'); } else { console.log('illegal author name:' + input.value); num++; input.classList.add('is-invalid'); } }); return num == 0; } // Check that the published section is ok before submission. This has complicated // dependencies if it has been previously published. Note that the server will // also perform validation on the constructed Paper object. // @return boolean function checkPublished() { let publishedOption = document.querySelector('input[name="publcode"]:checked'); if (!publishedOption) { return false; } let publcode = publishedOption.value; switch(publcode) { case '1': // not published before iacrpubl.classList.remove('is-invalid'); iacrpubl.classList.remove('is-valid'); iacryear.classList.remove('is-invalid'); iacryear.classList.remove('is-valid'); return true; case '2': // published by iacr // check if venue is selected if (!iacrpubl.value) { console.log('iacrpubl is required'); iacrpubl.classList.add('is-invalid'); iacrpubl.classList.remove('is-valid'); return false; } else { iacrpubl.classList.remove('is-invalid'); iacrpubl.classList.add('is-valid'); } if (!iacryear.value) { console.log('iacryear is required'); iacryear.classList.add('is-invalid'); iacryear.classList.remove('is-valid'); return false; } else { iacryear.classList.remove('is-invalid'); iacryear.classList.add('is-valid'); } return true; case '3': // published elsewhere iacrpubl.classList.remove('is-invalid'); iacrpubl.classList.remove('is-valid'); iacryear.classList.remove('is-invalid'); iacryear.classList.remove('is-valid'); if (!origpubl.value) { origpubl.classList.add('is-invalid'); origpubl.classList.remove('is-valid'); return false; } else { origpubl.classList.add('is-valid'); origpubl.classList.remove('is-invalid'); } return true; default: // should not happen console.warn('unknown state of howpublished'); return false; } } function setPublCode(id) { switch(id) { case 'publcode1': iacrVenueNode.classList.add('d-none'); iacrYearNode.classList.add('d-none'); otherVenueNode.classList.add('d-none'); diffNode.classList.add('d-none'); doiNode.classList.add('d-none'); iacrpubl.classList.remove('is-required'); iacryear.classList.remove('is-required'); origpubl.classList.remove('is-required'); revisionsame.removeAttribute('required'); revisionminor.removeAttribute('required'); revisionmajor.removeAttribute('required'); iacrpubl.removeAttribute('required'); iacryear.removeAttribute('required'); origpubl.removeAttribute('required'); break; case 'publcode2': iacrVenueNode.classList.remove('d-none'); iacrYearNode.classList.remove('d-none'); otherVenueNode.classList.add('d-none'); diffNode.classList.remove('d-none'); doiNode.classList.remove('d-none'); iacrpubl.classList.add('is-required'); iacryear.classList.add('is-required'); origpubl.classList.remove('is-required'); revisionsame.required = true; revisionminor.required = true; revisionmajor.required = true; iacrpubl.required = true; iacryear.required = true; origpubl.removeAttribute('required'); break; case 'publcode3': iacrVenueNode.classList.add('d-none'); iacrYearNode.classList.add('d-none'); otherVenueNode.classList.remove('d-none'); diffNode.classList.remove('d-none'); doiNode.classList.remove('d-none'); iacrpubl.classList.remove('is-required'); iacryear.classList.remove('is-required'); origpubl.classList.add('is-required'); revisionsame.required = true; revisionminor.required = true; revisionmajor.required = true; iacrpubl.removeAttribute('required'); iacryear.removeAttribute('required'); origpubl.required = true; break; default: console.log('unknown selected'); break; } } let radios = document.querySelectorAll('[name=publcode]'); for (let i =0; i { const filteredResults = Array.from( new Set(list.map((value) => value.match)) ).map((inst) => { return list.find((value) => value.match === inst); }); return filteredResults; }, resultItem: { element: (item, data) => { item.style = "display: flex;justify-content: space-between"; item.innerHTML = ` ${data.value.n} ${data.value.a} `; }, highlight: true } }); el.addEventListener('selection', updateROR); }
Note: In order to protect the privacy of readers, eprint.iacr.org does not use cookies or embedded third party content.