Перелік методів API по роботі з порталом EDIN ID
Всі запити нижче перерахованих API методів порталу EDIN ID направляються на адресу: https://id.edin.ua
Для підписання хеш(ів) та/або файлу пароль передається в зашифрованому вигляді.
| Отримати і зберегти публічний ключ | GET /api/external/key |
| Підписати ключем співробітника компанії | POST /api/external/company/sign |
| Підписати файл ключем співробітника компанії | POST /api/external/company/sign/file |
Алгоритм шифрування пароля на публічний ключ
Функції для шифрування
/**
* Encrypt data with RSA public key
* @param publicKey - get from server
* @param password - user key password
*/
utils = {
rsaEncrypt: async function(publicKey, password) {
const cryptoKey = await crypto.subtle.importKey("spki", publicKey, {
name: "RSA-OAEP",
hash: "SHA-256"
}, true, ["encrypt"]);
const encodedText = new TextEncoder().encode(password);
const encrypted = await crypto.subtle.encrypt({name: "RSA-OAEP"}, cryptoKey, encodedText);
//
return toBase64(encrypted);
}
}
function toBase64(buffer) {
const bytes = new Uint8Array(buffer);
let binary = '';
for (let i = 0; i < bytes.byteLength; i++) {
binary += String.fromCharCode(bytes[i]);
}
return btoa(binary);
}
Шифрування пароля