Add Key Encapsulation Mechanism (KEM) interface
This commit is contained in:
parent
51d10362e9
commit
6ba8da275d
50
lib/src/kem.dart
Normal file
50
lib/src/kem.dart
Normal file
@ -0,0 +1,50 @@
|
||||
// Copyright (c) 2020
|
||||
// Author: Hugo Pointcheval
|
||||
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'key.dart';
|
||||
|
||||
enum KemMode { ENCAPSULATION, DECAPSULATION }
|
||||
|
||||
abstract class KeyEncapsulationMechanism {
|
||||
/// Returns the standard algorithm name for this kem
|
||||
String get algorithm;
|
||||
|
||||
/// Returns the parameters used for this kem
|
||||
Object get options;
|
||||
|
||||
/// Returns true if kem is initialized
|
||||
bool get isInitialized;
|
||||
|
||||
/// Returns mode used in this kem.
|
||||
KemMode get mode;
|
||||
|
||||
/// Returns key pair used in this kem.
|
||||
///
|
||||
/// Can be an incomplete if just have public key
|
||||
/// for example.
|
||||
KeyPair get keypair;
|
||||
|
||||
/// Encapsulate key.
|
||||
///
|
||||
/// Returns an [Encapsulation].
|
||||
Future<Encapsulation> encapsulate();
|
||||
|
||||
/// Decapsulate key.
|
||||
///
|
||||
/// Takes [Encapsulation] as parameter.
|
||||
/// And returns plain text key as [SecretKey].
|
||||
Future<SecretKey> decapsulate(Encapsulation encapsulation);
|
||||
}
|
||||
|
||||
abstract class Encapsulation {
|
||||
/// Returns the standard algorithm name used for this encapsulation
|
||||
String get algorithm;
|
||||
|
||||
/// Returns the secret key used in this encapsulation
|
||||
SecretKey get secretKey;
|
||||
|
||||
/// Returns the encapsulated key
|
||||
Uint8List get key;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user