docs: @Override
      public Identities.SerializedIdentity createSerializedIdentity() {
          MspPrincipal.OrganizationUnit ou = MspPrincipal.OrganizationUnit.newBuilder()
                  .setCertifiersIdentifier(ByteString.copyFrom(this.ipkHash))
                  .setMspIdentifier(this.mspId)
                  .setOrganizationalUnitIdentifier(this.ou)
                  .build();
  
          //Warning, this does not support multi-roleMask.
          //Serialize the bitmask is the correct way to support multi-roleMask in the future
          MspPrincipal.MSPRole role = MspPrincipal.MSPRole.newBuilder()
                  .setRole(IdemixRoles.getMSPRoleFromIdemixRole(this.roleMask))
                  .setMspIdentifier(this.mspId)
                  .build();
  
          Identities.SerializedIdemixIdentity serializedIdemixIdentity = Identities.SerializedIdemixIdentity.newBuilder()
                  .setProof(ByteString.copyFrom(this.associationProof.toProto().toByteArray()))
                  .setOu(ByteString.copyFrom(ou.toByteArray()))
                  .setRole(ByteString.copyFrom(role.toByteArray()))
                  .setNymY(ByteString.copyFrom(IdemixUtils.bigToBytes(this.pseudonym.getY())))
                  .setNymX(ByteString.copyFrom(IdemixUtils.bigToBytes(this.pseudonym.getX())))
                  .build();
  
          return Identities.SerializedIdentity.newBuilder()
                  .setIdBytes(ByteString.copyFrom(serializedIdemixIdentity.toByteArray()))
                  .setMspid(this.mspId)
                  .build();
      }