Add to prototype
parent
8c9300e467
commit
d9bdf9667a
@ -0,0 +1,24 @@
|
|||||||
|
# Generated by Django 4.2.6 on 2023-10-24 16:16
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('abac', '0003_trustedauthority'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='EncryptedData',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('x_values', models.TextField()),
|
||||||
|
('token', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
|
||||||
|
('file', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='abac.file')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -0,0 +1,77 @@
|
|||||||
|
{% load static %}
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Decrypt and Forward</title>
|
||||||
|
<script src="{% static 'abac/jsbn.js' %}"></script>
|
||||||
|
<script src="{% static 'abac/jsbn2.js' %}"></script>
|
||||||
|
<script src="{% static 'abac/prng4.js' %}"></script>
|
||||||
|
<script src="{% static 'abac/rng.js' %}"></script>
|
||||||
|
<script src="{% static 'abac/paillier.js' %}"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
function getPrivateKeyFromWebStorage() {
|
||||||
|
// Retrieve and parse the stored private key
|
||||||
|
const storedPrivateKey = localStorage.getItem('privateKey');
|
||||||
|
if (!storedPrivateKey) return null;
|
||||||
|
|
||||||
|
const parsedKey = JSON.parse(storedPrivateKey);
|
||||||
|
|
||||||
|
// Construct the public key from the stored value
|
||||||
|
const n = new BigInteger(localStorage.getItem('publicKey'));
|
||||||
|
const publicKey = new paillier.publicKey(2048, n);
|
||||||
|
|
||||||
|
// Construct the private key
|
||||||
|
const lambda = new BigInteger(parsedKey.lambda);
|
||||||
|
const privateKey = new paillier.privateKey(lambda, publicKey);
|
||||||
|
|
||||||
|
// Attach the x value
|
||||||
|
privateKey.x = new BigInteger(parsedKey.x);
|
||||||
|
|
||||||
|
return privateKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assuming you have a method to get privateKey from local web storage
|
||||||
|
let privateKey = getPrivateKeyFromWebStorage();
|
||||||
|
|
||||||
|
let encryptions = {{ encryptions_as_strings|safe }};
|
||||||
|
let decryptedValues = [];
|
||||||
|
|
||||||
|
for(let enc of encryptions) {
|
||||||
|
let bigIntEnc = new BigInteger(enc.toString());
|
||||||
|
decryptedValues.push(privateKey.decrypt(bigIntEnc).toString(10));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Forward the decrypted values with a POST request
|
||||||
|
let form = document.createElement("form");
|
||||||
|
form.setAttribute("method", "post");
|
||||||
|
form.setAttribute("action", "{% url 'abac:verify_decryption' %}");
|
||||||
|
|
||||||
|
let csrfField = document.createElement("input");
|
||||||
|
csrfField.setAttribute("type", "hidden");
|
||||||
|
csrfField.setAttribute("name", "csrfmiddlewaretoken");
|
||||||
|
csrfField.setAttribute("value", "{{ csrf_token }}");
|
||||||
|
form.appendChild(csrfField);
|
||||||
|
|
||||||
|
let tokenField = document.createElement("input");
|
||||||
|
tokenField.setAttribute("type", "hidden");
|
||||||
|
tokenField.setAttribute("name", "token");
|
||||||
|
tokenField.setAttribute("value", "{{ token }}");
|
||||||
|
form.appendChild(tokenField);
|
||||||
|
|
||||||
|
for(let dec of decryptedValues) {
|
||||||
|
let input = document.createElement("input");
|
||||||
|
input.setAttribute("type", "hidden");
|
||||||
|
input.setAttribute("name", "decryptions");
|
||||||
|
input.setAttribute("value", dec);
|
||||||
|
form.appendChild(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.body.appendChild(form);
|
||||||
|
form.submit();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -1,18 +0,0 @@
|
|||||||
{% extends 'base.html' %}
|
|
||||||
{% block content %}
|
|
||||||
<div class="container mt-5">
|
|
||||||
<div class="row justify-content-center">
|
|
||||||
<div class="col-md-6">
|
|
||||||
<h2>Upload Public Key</h2>
|
|
||||||
<form method="post" class="mt-3">
|
|
||||||
{% csrf_token %}
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="public_key">Paste your public key here:</label>
|
|
||||||
<textarea id="public_key" name="public_key" class="form-control" rows="6" required></textarea>
|
|
||||||
</div>
|
|
||||||
<button type="submit" class="btn btn-primary">Upload Public Key</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
Loading…
Reference in New Issue