sendDIDAuthInitMessageToReceiver function
Future<String>
sendDIDAuthInitMessageToReceiver(
- DIDAuthInitMessage message,
- String mnemonic,
- String receiverDID,
- InfraDIDCommAgent agent,
Implementation
Future<String> sendDIDAuthInitMessageToReceiver(
DIDAuthInitMessage message,
String mnemonic,
String receiverDID,
InfraDIDCommAgent agent,
) async {
Map<String, dynamic> jsonMessage = message.toJson();
String stringMessage = json.encode(jsonMessage);
List<int> extendedPrivatekey = await extendedPrivateKeyFromUri(mnemonic);
String receiverAddress = receiverDID.split(":").last;
List<int> receiverPublicKey = publicKeyFromAddress(receiverAddress);
agent.peerInfo = {"did": message.from, "socketId": message.peerSocketId};
String jws = signJWS(stringMessage, hex.encode(extendedPrivatekey));
final ephemeralKeyPair = await generateX25519EphemeralKeyPair();
List<int> ephemeralPrivateKey = ephemeralKeyPair.$1;
List<int> ephemeralPublicKey = ephemeralKeyPair.$2;
Map<String, dynamic> x25519JwkPublicKey =
x25519JwkFromEd25519PublicKey(receiverPublicKey);
List<int> sharedKey = await makeSharedKey(
ephemeralPrivateKey,
publicKeyfromX25519Jwk(x25519JwkPublicKey),
);
String jwe = encryptJWE(
jws,
jwkFromSharedKey(sharedKey),
epk: x25519JwkFromX25519PublicKey(ephemeralPublicKey),
);
return jwe;
}