Ejemplo n.º 1
0
def validate_public_key(value):
    """Check if a public key is valid."""
    try:
        rsa.PublicKey.load_pkcs1(value)
    except ValueError:
        raise Invalid(_(u'The public key is not valid'))
    return True
Ejemplo n.º 2
0
def validate_private_key(value):
    """Check if a private key is valid."""
    try:
        rsa.PrivateKey.load_pkcs1(value)
    except ValueError:
        raise Invalid(_(u'The private key is not valid'))
    return True
Ejemplo n.º 3
0
def validate_key_pair(data):
    """Check if a key pair is valid."""
    pubkey = rsa.PublicKey.load_pkcs1(data.public_key)
    privkey = rsa.PrivateKey.load_pkcs1(data.private_key)
    try:
        rsa.decrypt(rsa.encrypt('test', pubkey), privkey)
    except rsa.pkcs1.DecryptionError:
        raise Invalid(_(u'Cryptographic keys do not match'))
Ejemplo n.º 4
0
class IRichPreviewSettings(Interface):
    """Schema for the control panel form."""

    enable = schema.Bool(
        title=_(u'Enable Rich Link Previews?'),
        description=
        _(u'Rich Link Previews are only available for Dexterity-based content types.'
          ),
        default=True,
    )

    form.widget('public_key', rows=5)
    public_key = schema.Text(
        title=_(u'Public Key'),
        description=_(u'Used to encrypt the URL.'),
        constraint=validate_public_key,
    )

    form.widget('private_key', rows=15)
    private_key = schema.Text(
        title=_(u'Private Key'),
        description=_(
            u'Used to decrypt the URL. Never share this key with anyone.'),
        constraint=validate_private_key,
    )

    # keys are available to Administrators only
    form.read_permission(public_key='cmf.ManagePortal',
                         private_key='cmf.ManagePortal')
    form.write_permission(public_key='cmf.ManagePortal',
                          private_key='cmf.ManagePortal')

    @invariant
    def _validate_key_pair(data):
        validate_key_pair(data)
Ejemplo n.º 5
0
class RichPreviewSettingsEditForm(controlpanel.RegistryEditForm):
    """Control panel edit form."""

    schema = IRichPreviewSettings
    label = _(u'Rich Link Preview')
    description = _(u'Settings for the collective.behavior.richpreview package')