makeJWEFromMessage function

Future<String> makeJWEFromMessage(
  1. String mnemonic,
  2. String receiverDID,
  3. InfraDIDCommAgent agent,
  4. Map<String, dynamic> jsonMessage,
)

Implementation

Future<String> makeJWEFromMessage(
  String mnemonic,
  String receiverDID,
  InfraDIDCommAgent agent,
  Map<String, dynamic> jsonMessage,
) async {
  List<int> extendedPrivatekey = await extendedPrivateKeyFromUri(mnemonic);
  List<int> privatekey = await privateKeyFromUri(mnemonic);
  List<int> receiverpublicKey =
      publicKeyFromAddress(receiverDID.split(":").last);

  Map<String, dynamic> x25519JwkPrivateKey =
      await x25519JwkFromEd25519PrivateKey(privatekey);
  Map<String, dynamic> x25519JwkReceiverPublicKey =
      x25519JwkFromEd25519PublicKey(receiverpublicKey);

  String jws = signJWS(
    json.encode(jsonMessage),
    hex.encode(extendedPrivatekey),
  );
  List<int> sharedKey = await makeSharedKey(
    privateKeyfromX25519Jwk(x25519JwkPrivateKey),
    publicKeyfromX25519Jwk(x25519JwkReceiverPublicKey),
  );
  String jwe = encryptJWE(jws, jwkFromSharedKey(sharedKey));
  return jwe;
}