def validate_ssh_auth(value): """Validate SSH Public Keys but allow comments.""" value = value.strip() for ssh_pubkey in value.splitlines(): if not ssh_pubkey.lstrip().startswith('#'): # ignore comments validate_ssh_pubkey(ssh_pubkey) return value
def test_validate_ssh_pubkey(self): pubkey = ('ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsHDcbPXptz4i6iz2EGif' 'D8JZ3acFnR6FG6aPDQxmoESLjNw6n6MoVOkeXvs+Phgra30dQLnLa23pFCb' 'vYxrX5HY370Dtx2981uz0RFws+85pBviIIsdnma/Wzz05PDhTb3vnTGUOp+' 'xOKRl6xptiESbz+Jgi1ImCkx85rBCWj9jQQNi0hddkBi41F/UzMLorWGICa' 'yC/wGvg7JDnYhlKv+HXSYoylQvnrY/891mR6BNBYU+N1506VndHLz0VDWii' 'bxwM2vkpy6h+/dt2OLsMXzuDSSUpqYynwYXPC6PaCzzrv18qBTUzT9dof0x' 'o6Nib+clykex/C7FnIaFD4HW9N') pubkey_with_comment = pubkey + ' confine@confine' validate_ssh_pubkey(pubkey) validate_ssh_pubkey(pubkey_with_comment) self.assertRaises(ValidationError, validate_ssh_pubkey, 'ssh-rsa FooPubKey')
def clean_ssh_auth(self): ssh_auth = self.cleaned_data.get("ssh_auth").strip() for ssh_pubkey in ssh_auth.splitlines(): if not ssh_pubkey.lstrip().startswith('#'): # ignore comments validate_ssh_pubkey(ssh_pubkey) return ssh_auth