generateJWT method

String generateJWT()

Implementation

String generateJWT() {
  var time = DateTime.now();

  var claims = JsonWebTokenClaims.fromJson({
    'iat': (time.millisecondsSinceEpoch / 1000).floor(),
    'exp':
        (time.add(Duration(hours: 1)).millisecondsSinceEpoch / 1000).floor(),
    'iss': appStoreEnvironment.issuerId,
    'aud': 'appstoreconnect-v1',
    'nonce': Uuid().v4(),
    'bid': appStoreEnvironment.bundleId,
  });

  var builder = JsonWebSignatureBuilder();
  builder.setProtectedHeader('kid', appStoreEnvironment.keyId);
  builder.setProtectedHeader('typ', 'JWT');
  builder.jsonContent = claims.toJson();

  builder.addRecipient(
      JsonWebKey.fromPem(appStoreEnvironment.privateKey,
          keyId: appStoreEnvironment.keyId),
      algorithm: "ES256");

  var jws = builder.build();
  var jwtToken = jws.toCompactSerialization();

  if (_jwtTokenUpdatedCallback != null) {
    _jwtTokenUpdatedCallback!(jwtToken);
  }

  return jwtToken;
}