Files
MP-SPDZ/Compiler/papers.py
2025-12-24 13:47:42 +11:00

86 lines
3.5 KiB
Python

import re
papers = {
'ABZS13': 'https://eprint.iacr.org/2012/405',
'ABY3': 'https://eprint.iacr.org/2018/403',
'AFLNO16': 'https://eprint.iacr.org/2016/768',
'AN17': 'https://eprint.iacr.org/2017/816',
'AS19': 'https://eprint.iacr.org/2019/354',
'AHIK+22': 'https://eprint.iacr.org/2022/1595',
'CdH10': 'https://www.researchgate.net/publication/225092133, https://doi.org/10.1007/978-3-642-15317-4_13 (paywall)',
'CdH10-fixed': 'https://www.ifca.ai/pub/fc10/31_47.pdf',
'CCD88': 'https://doi.org/10.1145/62212.62214',
'DDNNT15': 'https://eprint.iacr.org/2015/1006',
'DEK20': 'https://eprint.iacr.org/2019/131',
'DEK20-pre': 'https://eprint.iacr.org/archive/2019/131/20191015:083051',
'EGKRS20': 'https://eprint.iacr.org/2020/338',
'EKOPPS20': 'https://eprint.iacr.org/2019/164',
'HICT14': 'https://eprint.iacr.org/2014/121',
'HIKC23': 'https://doi.org/10.56553/popets-2023-0021',
'Keller20': 'https://eprint.iacr.org/2020/521',
'Keller24': 'https://eprint.iacr.org/2024/1990',
'Keller25': 'https://eprint.iacr.org/2025/919',
'KOS16': 'https://eprint.iacr.org/2016/505',
'KPR17': 'https://eprint.iacr.org/2017/1230',
'KS14': 'https://eprint.iacr.org/2014/137',
'KSS13': 'https://eprint.iacr.org/2013/143',
'KS22': 'https://eprint.iacr.org/2022/933',
'LFHH+20': 'https://doi.org/10.1145/3411501.3419427',
'NO07': 'https://doi.org/10.1007/978-3-540-71677-8_23',
'Shi19': 'https://eprint.iacr.org/2019/274',
'ZWRG+16': 'https://doi.org/10.1109/SP.2016.21',
}
protocol_papers = {
'astra': 'Keller25',
'atlas': 'https://eprint.iacr.org/2021/833',
'-bmr': 'https://eprint.iacr.org/2017/981',
'brain': 'EKOPPS20',
'^ccd': ('shamir', 'CCD88'),
'c.*gear': ('KPR17', 'https://eprint.iacr.org/2019/035'),
'[^c]*gear': ('cowgear', 'https://eprint.iacr.org/2019/1300'),
'dealer': 'https://mp-spdz.readthedocs.io/en/latest/readme.html#dealer-model',
'hemi': ('KS22', 'KPR17', 'https://eprint.iacr.org/2014/106'),
'(ps|mal)-(rep-field|shamir)': 'AN17',
'mascot': 'KOS16',
'mama': 'mascot',
'mal-ccd': ('mal-shamir', 'CCD88'),
'mal-rep-bin': 'https://eprint.iacr.org/2016/944',
'mal-rep-ring': 'EKOPPS20',
'rep4.*': 'https://eprint.iacr.org/2020/1330',
'^rep-field': 'AFLNO16',
'replicated': 'AFLNO16',
'^ring': ('Keller25', 'AFLNO16'),
'ps-rep-bin': 'https://doi.org/10.1109/SP.2017.15',
'ps-rep-(ring|field)': 'EKOPPS20',
'semi.*': ('KOS16', 'Keller20'),
'^shamir': 'https://eprint.iacr.org/2000/037',
'spdz2k': 'https://eprint.iacr.org/2018/482',
'soho': ('KPR17', 'Keller20'),
'temi': ('hemi', 'https://eprint.iacr.org/2000/055'),
'sy.*': 'https://eprint.iacr.org/2018/570',
'sy-rep-ring': 'https://eprint.iacr.org/2019/1298',
'tinier': 'https://eprint.iacr.org/2015/901',
'tiny': ('spdz2k', 'https://eprint.iacr.org/2016/944'),
'trio': 'Keller25',
'yao': ('https://eprint.iacr.org/2014/756',
'https://eprint.iacr.org/2019/1168')
}
def reading_for_protocol(protocol):
if not protocol:
return
if 'http' in protocol:
return protocol
paper = protocol_papers.get(protocol)
if not paper:
for x, y in protocol_papers.items():
if re.search(x, protocol):
paper = y
break
if re.match('[A-Z]', protocol):
paper = protocol
if isinstance(paper, tuple):
paper = ', '.join(reading_for_protocol(x) for x in paper)
return papers.get(paper) or reading_for_protocol(paper) or paper