signJWT function
Future<String>
signJWT({
- required String sub,
- required String aud,
- required int ttl,
- required RelayAuthKeyPair keyPair,
- int? iat,
Implementation
Future<String> signJWT({
required String sub,
required String aud,
required int ttl,
required RelayAuthKeyPair keyPair,
int? iat,
}) async {
iat ??= (DateTime.now().millisecondsSinceEpoch ~/ 1000);
final header = IridiumJWTHeader(alg: JWT_IRIDIUM_ALG, typ: JWT_IRIDIUM_TYP);
final iss = encodeIss(Uint8List.fromList(hex.decode(keyPair.publicKey)));
final exp = iat + ttl;
final payload =
IridiumJWTPayload(iss: iss, sub: sub, aud: aud, iat: iat, exp: exp);
final data = encodeData(IridiumJWTData(header: header, payload: payload));
// const type = KeyPairType.ed25519;
// final privateKeyBytes = hex.decode(keyPair.privateKey);
// final publicKeyBytes = hex.decode(keyPair.publicKey);
// final publicKey = SimplePublicKey(publicKeyBytes, type: type);
// final simpleKeyPair =
// SimpleKeyPairData(privateKeyBytes, publicKey: publicKey, type: type);
final signature =
ed.sign(ed.PrivateKey(hex.decode(keyPair.privateKey)), data);
return encodeJWT(IridiumJWTSigned(
header: header,
payload: payload,
signature: signature,
));
}